 import text.formats.LineBreak;
 
 //--------------------------------------
-//  Events
+//  Other metadata
 //--------------------------------------
 
-/**
- *  Dispached after the <code>selectionAnchorPosition</code> and/or
- *  <code>selectionActivePosition</code> properties have changed
- *  due to a user interaction.
- */
-[Event(name="selectionChange", type="flash.events.Event")]
+[DefaultProperty("text")]
 
 /**
- *  Dispatched before a user editing operation occurs.
- *  You can alter the operation, or cancel the event
- *  to prevent the operation from being processed.
+ *  The built-in set of states for the TextInput component.
  */
-[Event(name="changing", type="flex.events.TextOperationEvent")]
-
-/**
- *  Dispatched after a user editing operation is complete.
- */
-[Event(name="change", type="flex.events.TextOperationEvent")]
-
-/**
- *  Dispatched when the user presses the Enter key.
- */
-[Event(name="enter", type="flash.events.Event")]
+[SkinStates("enabled", "disabled")]
 
 /**
  *  Documentation is not currently available.
  */
-public class TextInput extends SkinnableComponent
+public class TextInput extends TextBase
 {
     include "../core/Version.as";
 

	{
		return enabled ? "enabled" : "disabled";
	}

	//--------------------------------------------------------------------------
    //
    //  Event handlers
    //
    //--------------------------------------------------------------------------

	/**
	 *  @private
	 *  Called when the TextView dispatches a 'selectionChange' event.
	 */
	private function textView_selectionChangeHandler(event:Event):void
	{
		// Update our storage variables for the selection indices.
		_selectionAnchorPosition = textView.selectionAnchorPosition;
		_selectionActivePosition = textView.selectionActivePosition;
		
		// Redispatch the event that came from the TextView.
		dispatchEvent(event);
	}

	/**
	 *  @private
	 *  Called when the TextView dispatches a 'change' event
	 *  after an editing operation.
	 */
	private function textView_changeHandler(event:TextOperationEvent):void
	{
		// Update our storage variable for the text string.
		_text = textView.text;

		// Redispatch the event that came from the TextView.
		dispatchEvent(event);
	}

	/**
	 *  @private
	 *  Called when the TextView dispatches a 'changing' event
	 *  before an editing operation.
	 */
	private function textView_changingHandler(event:TextOperationEvent):void
	{
		// Redispatch the event that came from the TextView.
		var newEvent:Event = event.clone();
		dispatchEvent(newEvent);
		
		// If the event dispatched from this TextInput is canceled,
		// cancel the one from the TextView, which will prevent
		// the editing operation from being processed.
		if (newEvent.isDefaultPrevented())
			event.preventDefault();
	}

	/**
	 *  @private
	 *  Called when the TextView dispatches an 'enter' event
	 *  in response to the Enter key.
	 */
	private function textView_enterHandler(event:Event):void
	{
		// Redispatch the event that came from the TextView.
		dispatchEvent(event);
	}
}

}

            textView.heightInLines = 1;
            textView.lineBreak = LineBreak.EXPLICIT;
			textView.multiline = false;
		}
	}

	/**
	 *  @private
	 */
