 package spark.skins.mobile 
 {
 
-import flash.display.DisplayObject;
 import flash.events.Event;
-import flash.text.TextLineMetrics;
 
 import spark.components.TextInput;
-import spark.components.supportClasses.StyleableTextField;
-import spark.skins.mobile.assets.TextInput_border;
-import spark.skins.mobile.supportClasses.MobileSkin;
+import spark.skins.mobile.supportClasses.TextSkinBase;
 
 /**
  *  Actionscript based skin for mobile text input. 

    /**
     *  @private
     */
    override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
    {
        super.updateDisplayList(unscaledWidth, unscaledHeight);
        
        var borderSize:uint = (border) ? BORDER_SIZE : 0;
        var borderWidth:uint = borderSize * 2;
        
        // Draw the contentBackgroundColor
        graphics.clear();
        graphics.beginFill(getStyle("contentBackgroundColor"), getStyle("contentBackgroundAlpha"));
        graphics.drawRoundRect(borderSize, borderSize, unscaledWidth - borderWidth, unscaledHeight - borderWidth, CORNER_ELLIPSE_SIZE, CORNER_ELLIPSE_SIZE);
        graphics.endFill();
        
        // position & size border
        if (border)
        {
            resizePart(border, unscaledWidth, unscaledHeight);
            positionPart(border, 0, 0);
        }
        
        // position & size the text
        var paddingLeft:Number = getStyle("paddingLeft");
        var paddingRight:Number = getStyle("paddingRight");
        var paddingTop:Number = getStyle("paddingTop");
        var paddingBottom:Number = getStyle("paddingBottom");
        
        if (textDisplay)
        {
            textDisplay.commitStyles();
            
            var textHeight:Number = textDisplay.textHeight;
            var textTop:Number = Math.round((unscaledHeight - textHeight) / 2);
            
            // verticalAlign=middle
            textTop = Math.max(textTop, paddingTop);
            
            resizePart(textDisplay, unscaledWidth - paddingLeft - paddingRight, unscaledHeight - paddingTop - paddingBottom);
            positionPart(textDisplay, paddingLeft, textTop);
        }
        
        if (promptDisplay)
        {
            promptDisplay.commitStyles();
            resizePart(promptDisplay, unscaledWidth - paddingLeft - paddingRight, unscaledHeight - paddingTop - paddingBottom);
            positionPart(promptDisplay, paddingLeft, textTop);
        }
    }
    
    /**
     *  @private
     */
    override public function styleChanged(styleProp:String):void
    {
        var allStyles:Boolean = !styleProp || styleProp == "styleName";
        
        if (allStyles || styleProp == "borderVisible")
        {
            borderVisibleChanged = true;
            invalidateProperties();
        }
        
        if (allStyles || styleProp.indexOf("padding") == 0)
        {
            invalidateDisplayList();
        }
        
        if (textDisplay)
            textDisplay.styleChanged(styleProp);
        
        if (promptDisplay)
            promptDisplay.styleChanged(styleProp);
        
        super.styleChanged(styleProp);
    }
    
    /**
     *  @private
     */
    override protected function commitCurrentState():void
    {
        super.commitCurrentState();
        
        alpha = currentState.indexOf("disabled") == -1 ? 1 : 0.5;
        
        var showPrompt:Boolean = currentState.indexOf("WithPrompt") >= 0;
        
        if (showPrompt && !promptDisplay)
        {
            createPromptDisplay();
            invalidateDisplayList();
        }
        else if (!showPrompt && promptDisplay)
        {
            removeChild(promptDisplay);
            promptDisplay = null;
        }
    }
    
    /**
     *  @private
     */
    private function editableChangedHandler(event:Event):void
    {
        invalidateDisplayList();

 *  @playerversion AIR 2.5 
 *  @productversion Flex 4.5
 */
public class TextInputSkin extends TextSkinBase 
{
    
    //--------------------------------------------------------------------------
    //
