 
     //--------------------------------------------------------------------------
     //
-    //  Variables
-    //
-    //--------------------------------------------------------------------------
-
-    //--------------------------------------------------------------------------
-    //
-    //  Overridden properties: UIComponent
-    //
-    //--------------------------------------------------------------------------
-
-    //----------------------------------
-    //  baselinePosition
-    //----------------------------------
-
-    /**
-     *  @private
-     */
-    override public function get baselinePosition():Number
-    {
-        return getBaselinePositionForPart(textDisplay);
-    }
-    
-    //----------------------------------
-    //  maxWidth
-    //----------------------------------
-
-    /**
-     *  @private
-     */
-    override public function get maxWidth():Number
-    {
-        if (textDisplay)
-            return textDisplay.maxWidth;
-            
-        // want the default to be default max width for UIComponent
-        var v:* = textDisplayProperties.maxWidth;
-        return (v === undefined) ? super.maxWidth : v;        
-    }
-
-    /**
-     *  @private
-     */
-    override public function set maxWidth(value:Number):void
-    {
-        if (textDisplay)
-        {
-            textDisplay.maxWidth = value;
-            textDisplayProperties = BitFlagUtil.update(
-                uint(textDisplayProperties), MAX_WIDTH_PROPERTY_FLAG, true);
-        }
-        else
-        {
-            textDisplayProperties.maxWidth = value;
-        }
-
-        // Generate an UPDATE_COMPLETE event.
-        invalidateProperties();                    
-    }
-
-    //--------------------------------------------------------------------------
-    //
-    //  Properties proxied to textDisplay
-    //
-    //--------------------------------------------------------------------------
-    
-    //----------------------------------
-    //  displayAsPassword
-    //----------------------------------
-    
-    /**
-     *  @copy spark.components.RichEditableText#displayAsPassword
-     *  
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 1.5
-     *  @productversion Flex 4
-     */
-    public function get displayAsPassword():Boolean
-    {
-        if (textDisplay)
-            return textDisplay.displayAsPassword;
-
-        // want the default to be false
-        var v:* = textDisplayProperties.displayAsPassword
-        return (v === undefined) ? false : v;
-    }
-
-    /**
-     *  @private
-     */
-    public function set displayAsPassword(value:Boolean):void
-    {
-        if (textDisplay)
-        {
-            textDisplay.displayAsPassword = value;
-            textDisplayProperties = BitFlagUtil.update(
-                                    uint(textDisplayProperties), 
-                                    DISPLAY_AS_PASSWORD_PROPERTY_FLAG, true);
-        }
-        else
-        {
-            textDisplayProperties.displayAsPassword = value;
-        }
-
-        // Generate an UPDATE_COMPLETE event.
-        invalidateProperties();                    
-    }
-
-    //----------------------------------
-    //  editable
-    //----------------------------------
-
-    /**
-     *  @copy spark.components.RichEditableText#editable
-     *  
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 1.5
-     *  @productversion Flex 4
-     */
-    public function get editable():Boolean
-    {
-        if (textDisplay)
-            return textDisplay.editable;
-            
-        // want the default to be true
-        var v:* = textDisplayProperties.editable;
-        return (v === undefined) ? true : v;
-    }
-
-    /**
-     *  @private
-     */
-    public function set editable(value:Boolean):void
-    {
-        if (textDisplay)
-        {
-            textDisplay.editable = value;
-            textDisplayProperties = BitFlagUtil.update(
-                uint(textDisplayProperties), EDITABLE_PROPERTY_FLAG, true);
-        }
-        else
-        {
-            textDisplayProperties.editable = value;
-        }
-
-        // Generate an UPDATE_COMPLETE event.
-        invalidateProperties();                    
-    }
-
-    //----------------------------------
-    //  enableIME
-    //----------------------------------
-
-    /**
-     *  @copy spark.components.RichEditableText#enableIME
-     *
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 1.5
-     *  @productversion Flex 4
-     */
-    public function get enableIME():Boolean
-    {
-        return editable;
-    }
-
-    //----------------------------------
-    //  imeMode
-    //----------------------------------
-
-    /**
-     *  @copy spark.components.RichEditableText#imeMode
-     *  
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 1.5
-     *  @productversion Flex 4
-     */
-     public function get imeMode():String
-    {
-        if (textDisplay)        
-            return textDisplay.imeMode;
-            
-        // want the default to be null
-        var v:* = textDisplayProperties.imeMode;
-        return (v === undefined) ? null : v;
-    }
-
-    /**
-     *  @private
-     */
-    public function set imeMode(value:String):void
-    {
-        if (textDisplay)
-        {
-            textDisplay.imeMode = value;
-            textDisplayProperties = BitFlagUtil.update(
-                uint(textDisplayProperties), IME_MODE_PROPERTY_FLAG, true);
-        }
-        else
-        {
-            textDisplayProperties.imeMode = value;
-        }
-
-        // Generate an UPDATE_COMPLETE event.
-        invalidateProperties();                    
-    }
-
-    //----------------------------------
-    //  maxChars
-    //----------------------------------
-
-    /**
-     *  @copy spark.components.RichEditableText#maxChars
-     *  
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 1.5
-     *  @productversion Flex 4
-     */
-    public function get maxChars():int 
-    {
-        if (textDisplay)
-            return textDisplay.maxChars;
-            
-        // want the default to be 0
-        var v:* = textDisplayProperties.maxChars;
-        return (v === undefined) ? 0 : v;
-    }
-    
-    /**
-     *  @private
-     */
-    public function set maxChars(value:int):void
-    {
-        if (textDisplay)
-        {
-            textDisplay.maxChars = value;
-            textDisplayProperties = BitFlagUtil.update(
-                uint(textDisplayProperties), MAX_CHARS_PROPERTY_FLAG, true);
-        }
-        else
-        {
-            textDisplayProperties.maxChars = value;
-        }
-
-        // Generate an UPDATE_COMPLETE event.
-        invalidateProperties();                    
-    }
-
-    //----------------------------------
-    //  restrict
-    //----------------------------------
-
-    /**
-     *  @copy spark.components.RichEditableText#restrict
-     * 
-     *  @default null
-     *  
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 1.5
-     *  @productversion Flex 4
-     */
-    public function get restrict():String 
-    {
-        if (textDisplay)
-            return textDisplay.restrict;
-            
-        // want the default to be null
-        var v:* = textDisplayProperties.restrict;
-        return (v === undefined) ? null : v;
-    }
-    
-    /**
-     *  @private
-     */
-    public function set restrict(value:String):void
-    {
-        if (textDisplay)
-        {
-            textDisplay.restrict = value;
-            textDisplayProperties = BitFlagUtil.update(
-                uint(textDisplayProperties), RESTRICT_PROPERTY_FLAG, true);
-        }
-        else
-        {
-            textDisplayProperties.restrict = value;
-        }
-
-        // Generate an UPDATE_COMPLETE event.
-        invalidateProperties();                    
-    }
-
-    //----------------------------------
-    //  selectable
-    //----------------------------------
-
-    /**
-     *  @copy spark.components.RichEditableText#selectable
-     *  
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 1.5
-     *  @productversion Flex 4
-     */
-    public function get selectable():Boolean
-    {
-        if (textDisplay)
-            return textDisplay.selectable;
-            
-        // want the default to be true
-        var v:* = textDisplayProperties.selectable;
-        return (v === undefined) ? true : v;
-    }
-
-    /**
-     *  @private
-     */
-    public function set selectable(value:Boolean):void
-    {
-        if (textDisplay)
-        {
-            textDisplay.selectable = value;
-            textDisplayProperties = BitFlagUtil.update(
-                uint(textDisplayProperties), SELECTABLE_PROPERTY_FLAG, true);
-        }
-        else
-        {
-            textDisplayProperties.selectable = value;
-        }
-        
-        // Generate an UPDATE_COMPLETE event.
-        invalidateProperties();                    
-    }
-
-    //----------------------------------
-    //  selectionActivePosition
-    //----------------------------------
-
-    /**
-     *  @private
-     */
-    private var _selectionActivePosition:int = -1;
-
-    [Bindable("selectionChange")]
-    
-    /**
-     *  @copy spark.components.RichEditableText#selectionActivePosition
-     *  
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 1.5
-     *  @productversion Flex 4
-     */
-    public function get selectionActivePosition():int
-    {
-        return _selectionActivePosition;
-    }
-
-    //----------------------------------
-    //  selectionAnchorPosition
-    //----------------------------------
-
-    /**
-     *  @private
-     */
-    private var _selectionAnchorPosition:int = -1;
-
-    [Bindable("selectionChange")]
-    
-    /**
-     *  @copy spark.components.RichEditableText#selectionAnchorPosition
-     *  
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 1.5
-     *  @productversion Flex 4
-     */
-    public function get selectionAnchorPosition():int
-    {
-        return _selectionAnchorPosition;
-    }
-
-    //----------------------------------
-    //  selectionHighlighting
-    //----------------------------------
-
-    /**
-     *  @copy spark.components.RichEditableText#selectionHighlighting
-     *  
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 1.5
-     *  @productversion Flex 4
-     */
-    public function get selectionHighlighting():String 
-    {
-        if (textDisplay)
-            return textDisplay.selectionHighlighting;
-            
-        // want the default to be "when focused"
-        var v:* = textDisplayProperties.selectionHighlighting;
-        return (v === undefined) ? TextSelectionHighlighting.WHEN_FOCUSED : v;
-    }
-    
-    /**
-     *  @private
-     */
-    public function set selectionHighlighting(value:String):void
-    {
-        if (textDisplay)
-        {
-            textDisplay.selectionHighlighting = value;
-            textDisplayProperties = BitFlagUtil.update(
-                                    uint(textDisplayProperties), 
-                                    SELECTION_HIGHLIGHTING_FLAG, true);
-        }
-        else
-        {
-            textDisplayProperties.selectionHighlighting = value;
-        }
-
-        // Generate an UPDATE_COMPLETE event.
-        invalidateProperties();                    
-    }
-
-    //----------------------------------
-    //  text
-    //----------------------------------
-
-    /**
-     *  @copy spark.components.RichEditableText#text
-     *  
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 1.5
-     *  @productversion Flex 4
-     */
-    public function get text():String
-    {
-        if (textDisplay)
-            return textDisplay.text;
-            
-        // If there is no textDisplay, it isn't possible to set one of
-        // text, textFlow or content and then get it in another form.
-                    
-        // want the default to be the empty string
-        var v:* = textDisplayProperties.text;
-        return (v === undefined) ? "" : v;
-    }
-
-    /**
-     *  @private
-     */
-    public function set text(value:String):void
-    {
-        if (textDisplay)
-        {
-            textDisplay.text = value;
-            textDisplayProperties = BitFlagUtil.update(
-                uint(textDisplayProperties), TEXT_PROPERTY_FLAG, true);
-        }
-        else
-        {
-            textDisplayProperties.text = value;
-
-            // Of 'text', 'textFlow', and 'content', the last one set wins.  So
-            // if we're holding onto the properties until the skin is loaded
-            // make sure only the last one set is defined.
-            textDisplayProperties.content = undefined;
-            textDisplayProperties.textFlow = undefined;
-        }
-
-        // Generate an UPDATE_COMPLETE event.
-        invalidateProperties();                    
-     }
+    //  Skin parts
+    //
+    //--------------------------------------------------------------------------
 
     //----------------------------------
     //  textDisplay

   
    //--------------------------------------------------------------------------
    //
    //  Overridden methods
    //
    //--------------------------------------------------------------------------

import spark.components.RichEditableText;

use namespace mx_internal;

//--------------------------------------
//  Styles
//--------------------------------------

include "../../styles/metadata/BasicNonInheritingTextStyles.as"
include "../../styles/metadata/BasicInheritingTextStyles.as"
include "../../styles/metadata/AdvancedInheritingTextStyles.as"
include "../../styles/metadata/SelectionFormatTextStyles.as"

/**
 *  The alpha of the border for this component.
 * 
 *  @langversion 3.0
 *  @playerversion Flash 10
 *  @playerversion AIR 1.5
 *  @productversion Flex 4
 */
[Style(name="borderAlpha", type="Number", inherit="no", theme="spark")]

/**
 *  The color of the border for this component.
 * 
 *  @langversion 3.0
 *  @playerversion Flash 10
 *  @playerversion AIR 1.5
 *  @productversion Flex 4
 */
[Style(name="borderColor", type="uint", format="Color", inherit="no", theme="spark")]

/**
 *  Controls the visibility of the border for this component.
 * 
 *  @langversion 3.0
 *  @playerversion Flash 10
 *  @playerversion AIR 1.5
 *  @productversion Flex 4
 */
[Style(name="borderVisible", type="Boolean", inherit="no", theme="spark")]

/**
 *  The alpha of the content background for this component.
 * 
 *  @langversion 3.0
 *  @playerversion Flash 10
 *  @playerversion AIR 1.5
 *  @productversion Flex 4
 */
[Style(name="contentBackgroundAlpha", type="Number", inherit="yes", theme="spark")]

/**
 *  @copy spark.components.supportClasses.GroupBase#contentBackgroundColor
 *  
 *  @langversion 3.0
 *  @playerversion Flash 10
 *  @playerversion AIR 1.5
 *  @productversion Flex 4
 */
[Style(name="contentBackgroundColor", type="uint", format="Color", inherit="yes", theme="spark")]

/**
 *  The alpha of the focus ring for this component.
 * 
 *  @langversion 3.0
 *  @playerversion Flash 10
 *  @playerversion AIR 1.5
 *  @productversion Flex 4
 */
[Style(name="focusAlpha", type="Number", inherit="no", theme="spark")]

/**
 *  @copy spark.components.supportClasses.GroupBase#focusColor
 *  
 *  @langversion 3.0
 *  @playerversion Flash 10
 *  @playerversion AIR 1.5
 *  @productversion Flex 4
 */ 
[Style(name="focusColor", type="uint", format="Color", inherit="yes", theme="spark")]

//--------------------------------------
//  Events
