flex-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From aha...@apache.org
Subject [13/37] git commit: [flex-asjs] [refs/heads/spark] - copy of many flex-sdk classes, modified to try to compile on top of the FlexJS base classes. A COMPILE::LATER flag is used to comment out features like multi-swf support and a few other features that
Date Sat, 13 Feb 2016 00:14:20 GMT
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/1f6418c4/frameworks/projects/MX/src/main/flex/mx/styles/StyleProtoChain.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/styles/StyleProtoChain.as b/frameworks/projects/MX/src/main/flex/mx/styles/StyleProtoChain.as
new file mode 100644
index 0000000..b7b9a9e
--- /dev/null
+++ b/frameworks/projects/MX/src/main/flex/mx/styles/StyleProtoChain.as
@@ -0,0 +1,1065 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package mx.styles
+{
+
+COMPILE::AS3
+{
+	import flash.display.DisplayObject;
+	import flash.display.DisplayObjectContainer;				
+}
+COMPILE::JS
+{
+	import flex.display.DisplayObject;
+	import flex.display.DisplayObjectContainer;		
+}
+import flex.system.DefinitionManager;
+import org.apache.flex.reflection.getQualifiedClassName;
+import org.apache.flex.reflection.getQualifiedSuperclassName;
+
+import mx.core.FlexGlobals;
+import mx.core.IFlexDisplayObject;
+import mx.core.IFlexModule;
+import mx.core.IFlexModuleFactory;
+import mx.core.IFontContextComponent;
+import mx.core.IInvalidating;
+import mx.core.IUITextField;
+import mx.core.IVisualElement;
+import mx.core.UIComponent;
+import mx.core.mx_internal;
+import mx.effects.EffectManager;
+import mx.managers.SystemManager;
+import mx.modules.IModule;
+import mx.modules.ModuleManager;
+import mx.utils.NameUtil;
+import mx.utils.OrderedObject;
+import mx.utils.object_proxy;
+
+use namespace mx_internal;
+use namespace object_proxy;
+
+[ExcludeClass]
+
+/**
+ *  @private
+ *  This is an all-static class with methods for building the protochains
+ *  that Flex uses to look up CSS style properties.
+ */
+public class StyleProtoChain
+{
+    include "../core/Version.as";
+
+    //--------------------------------------------------------------------------
+    //
+    //  Class constants
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     *  The inheritingStyles and nonInheritingStyles properties
+     *  are initialized to this empty Object.
+     *  This allows the getStyle() and getStyle()
+     *  methods to simply access inheritingStyles[] and nonInheritingStyles[]
+     *  without needing to first check whether those objects exist.
+     *  If they were simply initialized to {}, we couldn't determine
+     *  whether the style chain has already been built or not.
+     */
+    public static var STYLE_UNINITIALIZED:Object = {};
+
+    //--------------------------------------------------------------------------
+    //
+    //  Class methods
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     *  Implements the getClassStyleDeclarations() logic
+     *  for UIComponent and TextBase.
+     *  The 'object' parameter will be one or the other.
+     */
+    public static function getClassStyleDeclarations(object:IStyleClient):Array
+    {
+        var styleManager:IStyleManager2 = getStyleManager(object);
+        var qualified:Boolean = styleManager.qualifiedTypeSelectors;
+        var className:String = qualified ? getQualifiedClassName(object) : object.className;
+        var advancedObject:IAdvancedStyleClient = object as IAdvancedStyleClient;
+
+        var typeHierarchy:OrderedObject = getTypeHierarchy(object, styleManager, qualified);
+        var types:Array = typeHierarchy.propertyList;
+        var typeCount:int = types.length;
+        var classDecls:Array = null;
+
+        if (!styleManager.hasAdvancedSelectors())
+        {
+            classDecls = styleManager.typeSelectorCache[className];
+            if (classDecls)
+                return classDecls;
+        }
+
+        classDecls = [];
+
+        // Loop over the type hierarhcy starting at the base type and work
+        // down the chain of subclasses.
+        for (var i:int = typeCount - 1; i >= 0; i--)
+        {
+            var type:String = types[i].toString();
+            if (styleManager.hasAdvancedSelectors() && advancedObject != null)
+            {
+                var decls:Object = styleManager.getStyleDeclarations(type);
+                if (decls)
+                {
+                    var matchingDecls:Array = matchStyleDeclarations(decls, advancedObject);
+                    classDecls = classDecls.concat(matchingDecls);
+                }
+            }
+            else
+            {
+                var decl:CSSStyleDeclaration = styleManager.getMergedStyleDeclaration(type);
+                if (decl)
+                    classDecls.push(decl);
+            }
+        }
+
+        if (styleManager.hasAdvancedSelectors() && advancedObject != null)
+        {                   
+            // Advanced selectors may result in more than one match per type so
+            // we sort based on specificity, but we preserve the declaration
+            // order for equal selectors.
+            classDecls = sortOnSpecificity(classDecls);
+        }
+        else
+        {
+            // Cache the simple type declarations for this class 
+            styleManager.typeSelectorCache[className] = classDecls;
+        }
+
+        return classDecls;
+    }
+
+    /**
+     *  @private
+     *  Implements the initProtoChain() logic for UIComponent and TextBase.
+     *  The 'object' parameter will be one or the other.
+     */
+    public static function initProtoChain(object:IStyleClient, inheritPopUpStylesFromOwner:Boolean=true):void
+    {
+        var styleManager:IStyleManager2 = getStyleManager(object);
+        var n:int;
+        var i:int;
+
+        var uicObject:UIComponent = object as UIComponent;
+        var advancedObject:IAdvancedStyleClient = object as IAdvancedStyleClient;
+        var styleDeclaration:CSSStyleDeclaration = null;
+
+        var universalSelectors:Array = [];
+        var hasStyleName:Boolean = false;
+        var styleName:Object = object.styleName;
+        if (styleName)
+        {
+            if (styleName is CSSStyleDeclaration)
+            {
+                // Get the styles referenced by the styleName property.
+                universalSelectors.push(CSSStyleDeclaration(styleName));
+            }
+            else if (styleName is IFlexDisplayObject || styleName is IStyleClient)
+            {
+                // If the styleName property is a UIComponent, then there's a
+                // special search path for that case.
+                StyleProtoChain.initProtoChainForUIComponentStyleName(object);
+                return;
+            }
+            else if (styleName is String)
+            {
+                hasStyleName = true;
+            }
+        }
+
+        // To build the proto chain, we start at the end and work forward.
+        // Referring to the list at the top of this function, we'll start
+        // by getting the tail of the proto chain, which is:
+        //  - for non-inheriting styles, the global style sheet
+        //  - for inheriting styles, my parent's style object
+        var nonInheritChain:Object = styleManager.stylesRoot;
+
+        if (nonInheritChain && nonInheritChain.effects)
+            object.registerEffects(nonInheritChain.effects);
+
+        var p:IStyleClient = null;
+        if (object is IVisualElement)
+            p = IVisualElement(object).parent as IStyleClient;
+        else if (object is IAdvancedStyleClient) 
+            p = IAdvancedStyleClient(object).styleParent as IStyleClient;
+			
+        if (p)
+        {
+            var inheritChain:Object = p.inheritingStyles;
+            if (inheritChain == StyleProtoChain.STYLE_UNINITIALIZED)
+                inheritChain = nonInheritChain;
+
+            // If this object is a module then add its global styles to the 
+            // inheritChain. If we don't have global styles in this style manager
+            // then the user didn't declare a global style in the module and the
+            // compiler didn't add a duplicate default style. In that case don't 
+            // add global styles to the chain because the parent style manager's
+            // global styles are already on the chain.
+            if (object is IModule)
+            {
+                styleDeclaration = styleManager.getStyleDeclaration("global");
+                if (styleDeclaration)
+                    inheritChain = styleDeclaration.addStyleToProtoChain(inheritChain, DisplayObject(object));
+            }
+        }
+        else
+        {
+            // Pop ups inheriting chain starts at Application instead of global.
+            // This allows popups to grab styles like themeColor that are
+            // set on Application.
+            if (uicObject && uicObject.isPopUp)
+            {
+                var owner:DisplayObjectContainer = uicObject._owner;
+                if (inheritPopUpStylesFromOwner && owner && (owner is IStyleClient))
+                {
+                    inheritChain = IStyleClient(owner).inheritingStyles;
+                }
+                else
+                {
+                    inheritChain = FlexGlobals.topLevelApplication.inheritingStyles;
+                }
+            }
+            else
+            {
+                inheritChain = styleManager.stylesRoot;
+            }
+        }
+
+        var styleDeclarations:Array = null;
+
+        // If we have an advanced style client, we handle this separately
+        // because of the considerably more complex selector matches...
+        if (styleManager.hasAdvancedSelectors() && advancedObject != null)
+        {
+            styleDeclarations = getMatchingStyleDeclarations(advancedObject, universalSelectors);
+
+            n = styleDeclarations != null ? styleDeclarations.length : 0;
+            for (i = 0; i < n; i++)
+            {
+                styleDeclaration = styleDeclarations[i];
+                inheritChain = styleDeclaration.addStyleToProtoChain(inheritChain, uicObject);
+                nonInheritChain = styleDeclaration.addStyleToProtoChain(nonInheritChain, uicObject);
+
+                if (styleDeclaration.effects)
+                    advancedObject.registerEffects(styleDeclaration.effects);
+            }
+        }
+        // Otherwise we use the legacy Flex 3 logic for simple selectors.
+        else
+        {
+            // Get the styles referenced by the styleName property
+            if (hasStyleName)
+            {             
+                var styleNames:Array = styleName.split(/\s+/);
+                n = styleNames.length;
+                for (i = 0; i < n; i++)
+                {
+                    if (styleNames[i].length)
+                    {
+                        styleDeclaration = styleManager.getMergedStyleDeclaration("." + styleNames[i]);
+                        if (styleDeclaration)
+                            universalSelectors.push(styleDeclaration);
+                    }
+                }
+            }
+
+            // Working backwards up the list, the next element in the
+            // search path is the type selector
+            styleDeclarations = object.getClassStyleDeclarations();
+            n = styleDeclarations != null ? styleDeclarations.length : 0;
+            for (i = 0; i < n; i++)
+            {
+                styleDeclaration = styleDeclarations[i];
+                inheritChain = styleDeclaration.addStyleToProtoChain(inheritChain, uicObject);
+                nonInheritChain = styleDeclaration.addStyleToProtoChain(nonInheritChain, uicObject);
+
+                if (styleDeclaration.effects)
+                    object.registerEffects(styleDeclaration.effects);
+            }
+
+            // Next are the class selectors
+            n = universalSelectors.length;
+            for (i = 0; i < n; i++)
+            {
+                styleDeclaration = universalSelectors[i];
+                if (styleDeclaration)
+                {
+                    inheritChain =
+                        styleDeclaration.addStyleToProtoChain(inheritChain, uicObject);
+    
+                    nonInheritChain =
+                        styleDeclaration.addStyleToProtoChain(nonInheritChain, uicObject);
+    
+                    if (styleDeclaration.effects)
+                        object.registerEffects(styleDeclaration.effects);
+                }
+            }
+        }
+
+        // Finally, we'll add the in-line styles
+        // to the head of the proto chain.
+        
+        styleDeclaration = object.styleDeclaration;
+
+        object.inheritingStyles =
+            styleDeclaration ?
+            styleDeclaration.addStyleToProtoChain(inheritChain, uicObject) :
+            inheritChain;
+
+        object.nonInheritingStyles =
+            styleDeclaration ?
+            styleDeclaration.addStyleToProtoChain(nonInheritChain, uicObject) :
+            nonInheritChain;
+    }
+
+    /**
+     *  @private
+     *  If the styleName property points to a UIComponent, then we search
+     *  for stylable properties in the following order:
+     *  
+     *  1) Look for inline styles on this object
+     *  2) Look for inline styles on the styleName object
+     *  3) Look for class selectors on the styleName object
+     *  4) Look for type selectors on the styleName object
+     *  5) Look for type selectors on this object
+     *  6) Follow the usual search path for the styleName object
+     *  
+     *  If this object doesn't have any type selectors, then the
+     *  search path can be simplified to two steps:
+     *  
+     *  1) Look for inline styles on this object
+     *  2) Follow the usual search path for the styleName object
+     */
+    public static function initProtoChainForUIComponentStyleName(
+                                    obj:IStyleClient):void
+    {
+        var styleManager:IStyleManager2 = getStyleManager(obj);
+        var styleName:IStyleClient = IStyleClient(obj.styleName);
+        var target:DisplayObject = obj as DisplayObject;
+        
+        // Push items onto the proto chain in reverse order, beginning with
+        // 6) Follow the usual search path for the styleName object
+        var nonInheritChain:Object = styleName.nonInheritingStyles;
+        if (!nonInheritChain ||
+            nonInheritChain == StyleProtoChain.STYLE_UNINITIALIZED)
+        {
+            nonInheritChain = styleManager.stylesRoot;
+
+            if (nonInheritChain.effects)
+                obj.registerEffects(nonInheritChain.effects);
+        }
+
+        var inheritChain:Object = styleName.inheritingStyles;
+        if (!inheritChain ||
+            inheritChain == StyleProtoChain.STYLE_UNINITIALIZED)
+        {
+            inheritChain = styleManager.stylesRoot;
+        }
+
+        // If there's no type selector on this object, then we can collapse
+        // 6 steps to 2 (see above)
+        var typeSelectors:Array = obj.getClassStyleDeclarations();
+        var n:int = typeSelectors.length;
+        
+        // If we are a StyleProxy and we aren't building the protochain from
+        // our type selectors, then we need to build the protochain from
+        // the styleName since styleName.nonInheritingStyles is always null.
+        if (styleName is StyleProxy)
+        {   
+            if (n == 0)
+            {   
+                // 4) Look for type selectors on the styleName object
+                // 3) Look for class selectors on the styleName object
+                // 2) Look for inline styles on the styleName object
+                nonInheritChain = addProperties(nonInheritChain, styleName, false);
+            }
+            target = StyleProxy(styleName).source as DisplayObject;
+        }
+        
+        for (var i:int = 0; i < n; i++)
+        {
+            var typeSelector:CSSStyleDeclaration = typeSelectors[i];
+
+            // If there's no *inheriting* type selector on this object, then we
+            // can still collapse 6 steps to 2 for the inheriting properties.
+
+            // 5) Look for type selectors on this object
+            inheritChain = typeSelector.addStyleToProtoChain(inheritChain, target); 
+
+            // 4) Look for type selectors on the styleName object
+            // 3) Look for class selectors on the styleName object
+            // 2) Look for inline styles on the styleName object
+            inheritChain = addProperties(inheritChain, styleName, true);
+
+            // 5) Look for type selectors on this object
+            nonInheritChain = typeSelector.addStyleToProtoChain(nonInheritChain, target);   
+
+            // 4) Look for type selectors on the styleName object
+            // 3) Look for class selectors on the styleName object
+            // 2) Look for inline styles on the styleName object
+            nonInheritChain = addProperties(nonInheritChain, styleName, false);
+
+            if (typeSelector.effects)
+                obj.registerEffects(typeSelector.effects);
+        }
+        
+        // 1) Look for inline styles on this object
+        
+        obj.inheritingStyles =
+            obj.styleDeclaration ? 
+            obj.styleDeclaration.addStyleToProtoChain(inheritChain, target) :
+            inheritChain;
+        
+        obj.nonInheritingStyles =
+            obj.styleDeclaration ? 
+            obj.styleDeclaration.addStyleToProtoChain(nonInheritChain, target) :
+            nonInheritChain;
+    }
+    
+    /**
+     *  See the comment for the initProtoChainForUIComponentStyleName
+     *  function. The comment for that function includes a six-step
+     *  sequence. This sub-function implements the following pieces
+     *  of that sequence:
+     *  
+     *  2) Look for inline styles on the styleName object
+     *  3) Look for class selectors on the styleName object
+     *  4) Look for type selectors on the styleName object
+     *  
+     *   This piece is broken out as a separate function so that it
+     *  can be called recursively when the styleName object has a
+     *  styleName property is itself another UIComponent.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    private static function addProperties(chain:Object, obj:IStyleClient,
+                                          bInheriting:Boolean):Object
+    {
+        // Only use a filter map if styleName is a StyleProxy and we are building the nonInheritingStyles chain
+        var filterMap:Object = obj is StyleProxy && !bInheriting ? StyleProxy(obj).filterMap : null;
+        
+        // StyleProxy's usually have sources that are DisplayObject's, but a StyleProxy can also have 
+        // another StyleProxy as it's source (Example: CalendarLayout's source is a StyleProxy for DateChooser, 
+        // whose style is a StyleProxy for DateField)
+        
+        // The way we use target is a bit hacky, but we always assume that styles (if pointed to DisplayObjects)
+        // are the parent (or atleast an ancestor), and we rely on this down the line (such as in 
+        // DataGridColumn.addStyleToProtoChain)
+        var curObj:IStyleClient = obj;
+        while (curObj is StyleProxy)
+        {
+            curObj = StyleProxy(curObj).source;
+        }
+        var target:DisplayObject = curObj as DisplayObject;
+
+        var advancedObject:IAdvancedStyleClient = obj as IAdvancedStyleClient;
+        var styleName:Object = obj.styleName;
+        var styleDeclarations:Array;
+        var decl:CSSStyleDeclaration;
+        var styleManager:IStyleManager2 = getStyleManager(target);
+        
+        // If we have an advanced style client, we handle this separately
+        // because of the considerably more complex selector matches...
+        if (advancedObject != null && styleManager.hasAdvancedSelectors())
+        {
+            // Handle special case of styleName as a CSSStyleDeclaration
+            if (styleName is CSSStyleDeclaration)
+            {
+                styleDeclarations = [CSSStyleDeclaration(styleName)];
+            }
+
+            // Find matching style declarations, sorted by specificity
+            styleDeclarations = getMatchingStyleDeclarations(advancedObject, styleDeclarations);
+
+            // Then apply matching selectors to the proto chain
+            for (i = 0; i < styleDeclarations.length; i++)
+            {
+                decl = styleDeclarations[i];
+                if (decl)
+                {
+                    chain = decl.addStyleToProtoChain(chain, target, filterMap);
+                    if (decl.effects)
+                        obj.registerEffects(decl.effects);
+                }
+            }
+
+            // Finally, handle special case of styleName as an IStyleClient
+            // which overrides any of the selectors above
+            if (styleName is IStyleClient)
+            {
+                // If the styleName property is another UIComponent, then
+                // recursively add type selectors, class selectors, and
+                // inline styles for that UIComponent
+                chain = addProperties(chain, IStyleClient(styleName),
+                                      bInheriting);
+            }
+        }
+        else
+        {
+            // 4) Add type selectors 
+            styleDeclarations = obj.getClassStyleDeclarations();
+            var n:int = styleDeclarations.length;
+            for (var i:int = 0; i < n; i++)
+            {
+                decl = styleDeclarations[i];
+                chain = decl.addStyleToProtoChain(chain, target, filterMap);
+    
+                if (decl.effects)
+                    obj.registerEffects(decl.effects);
+            }
+
+            // 3) Add class selectors
+            if (styleName)
+            {
+                styleDeclarations = [];
+                if (typeof(styleName) == "object")
+                {
+                    if (styleName is CSSStyleDeclaration)
+                    {
+                        // Get the style sheet referenced by the styleName property.
+                        styleDeclarations.push(CSSStyleDeclaration(styleName));
+                    }
+                    else
+                    {               
+                        // If the styleName property is another UIComponent, then
+                        // recursively add type selectors, class selectors, and
+                        // inline styles for that UIComponent
+                        chain = addProperties(chain, IStyleClient(styleName),
+                                              bInheriting);
+                    }
+                }
+                else
+                {
+                    // Get the style sheets referenced by the styleName property             
+                    var styleNames:Array = styleName.split(/\s+/);
+                    for (var c:int=0; c < styleNames.length; c++)
+                    {
+                        if (styleNames[c].length)
+                        {
+                            styleDeclarations.push(styleManager.getMergedStyleDeclaration("." + styleNames[c]));
+                        }
+                    }
+                }
+
+                for (i = 0; i < styleDeclarations.length; i++)
+                {
+                    decl = styleDeclarations[i];
+                    if (decl)
+                    {
+                        chain = decl.addStyleToProtoChain(chain, target, filterMap);
+                        if (decl.effects)
+                            obj.registerEffects(decl.effects);
+                    }
+                }
+            }
+        }
+
+        // 2) Add inline styles 
+        if (obj.styleDeclaration)
+            chain = obj.styleDeclaration.addStyleToProtoChain(chain, target, filterMap);
+
+        return chain;
+    }
+
+    /**
+     *  @private
+     */
+    public static function initTextField(obj:IUITextField):void
+    {
+        // TextFields never have any inline styles or type selector, so
+        // this is an optimized version of the initObject function (above)
+        var styleManager:IStyleManager2 = StyleManager.getStyleManager(obj.moduleFactory);
+        var styleName:Object = obj.styleName;
+        var classSelectors:Array = [];
+        
+        if (styleName)
+        {
+            if (typeof(styleName) == "object")
+            {
+                if (styleName is CSSStyleDeclaration)
+                {
+                    // Get the style sheet referenced by the styleName property.
+                    classSelectors.push(CSSStyleDeclaration(styleName));
+                }
+                else if (styleName is StyleProxy)
+                {
+                    obj.inheritingStyles =
+                        IStyleClient(styleName).inheritingStyles;
+                        
+                    obj.nonInheritingStyles = addProperties(styleManager.stylesRoot, IStyleClient(styleName), false);
+                    
+                    return;
+                }
+                else
+                {               
+                    // styleName points to a UIComponent, so just set
+                    // this TextField's proto chains to be the same
+                    // as that UIComponent's proto chains.          
+                    obj.inheritingStyles =
+                        IStyleClient(styleName).inheritingStyles;
+                    obj.nonInheritingStyles =
+                        IStyleClient(styleName).nonInheritingStyles;
+                    return;
+                }
+            }
+            else
+            {                   
+                // Get the style sheets referenced by the styleName property             
+                var styleNames:Array = styleName.split(/\s+/);
+                for (var c:int=0; c < styleNames.length; c++)
+                {
+                    if (styleNames[c].length) {
+                        classSelectors.push(styleManager.getMergedStyleDeclaration("." + 
+                            styleNames[c]));
+                    }
+                }    
+            }
+        }
+        
+        // To build the proto chain, we start at the end and work forward.
+        // We'll start by getting the tail of the proto chain, which is:
+        //  - for non-inheriting styles, the global style sheet
+        //  - for inheriting styles, my parent's style object
+        var inheritChain:Object = IStyleClient(obj.parent).inheritingStyles;
+        var nonInheritChain:Object = styleManager.stylesRoot;
+        if (!inheritChain)
+            inheritChain = styleManager.stylesRoot;
+                
+        // Next are the class selectors
+        for (var i:int = 0; i < classSelectors.length; i++)
+        {
+            var classSelector:CSSStyleDeclaration = classSelectors[i];
+            if (classSelector)
+            {
+                inheritChain =
+                    classSelector.addStyleToProtoChain(inheritChain, DisplayObject(obj));
+
+                nonInheritChain =
+                    classSelector.addStyleToProtoChain(nonInheritChain, DisplayObject(obj));
+            }
+        }
+        
+        obj.inheritingStyles = inheritChain;
+        obj.nonInheritingStyles = nonInheritChain;
+    }
+
+    /**
+     *  @private
+     *  Implements the setStyle() logic for UIComponent and TextBase.
+     *  The 'object' parameter will be one or the other.
+     */
+    public static function setStyle(object:IStyleClient, styleProp:String,
+                                    newValue:*):void
+    {
+        var styleManager:IStyleManager2 = getStyleManager(object);
+        
+        if (styleProp == "styleName")
+        {
+            // Let the setter handle this one, see UIComponent.
+            object.styleName = newValue;
+
+            // Short circuit, because styleName isn't really a style.
+            return;
+        }
+
+		COMPILE::LATER
+		{
+        if (EffectManager.getEventForEffectTrigger(styleProp) != "")
+            EffectManager.setStyle(styleProp, object);
+		}
+		
+        // If this object didn't previously have any inline styles,
+        // then regenerate its proto chain
+        // (and the proto chains of its descendants).
+        var isInheritingStyle:Boolean =
+            styleManager.isInheritingStyle(styleProp);
+        var isProtoChainInitialized:Boolean =
+            object.inheritingStyles != StyleProtoChain.STYLE_UNINITIALIZED;
+        var valueChanged:Boolean = object.getStyle(styleProp) != newValue;
+        
+        if (!object.styleDeclaration)
+        {
+            object.styleDeclaration = new CSSStyleDeclaration(null, styleManager);
+           
+            object.styleDeclaration.setLocalStyle(styleProp, newValue);
+
+            // If inheritingStyles is undefined, then this object is being
+            // initialized and we haven't yet generated the proto chain.  To
+            // avoid redundant work, don't bother to create the proto chain here.
+            if (isProtoChainInitialized)
+                object.regenerateStyleCache(isInheritingStyle);
+        }
+        else
+        {
+            object.styleDeclaration.setLocalStyle(styleProp, newValue);
+        }
+
+        if (isProtoChainInitialized && valueChanged)
+        {
+            object.styleChanged(styleProp);
+            object.notifyStyleChangeInChildren(styleProp, isInheritingStyle);
+        }
+    }
+
+    /**
+     *  @private
+     *  Implements the styleChanged() logic for UIComponent and TextBase.
+     *  The 'object' parameter will be one or the other.
+     */
+    public static function styleChanged(object:IInvalidating, styleProp:String):void
+    {
+        var styleManager:IStyleManager2 = getStyleManager(object);
+       
+        // If font changed, then invalidateProperties so
+        // we can re-create the text field in commitProperties
+        // TODO (gosmith): Should hasFontContextChanged() be added to IFontContextComponent?
+        if (object is IFontContextComponent &&
+            "hasFontContextChanged" in object &&
+            object["hasFontContextChanged"]())
+        {
+            object.invalidateProperties();
+        }
+        
+        if (!styleProp || 
+            styleProp == "styleName" ||
+            styleProp == "layoutDirection")
+        {
+            object.invalidateProperties();
+        }        
+        
+        // Check to see if this is one of the style properties
+        // that is known to affect layout.
+        if (!styleProp ||
+            styleProp == "styleName" ||
+            styleManager.isSizeInvalidatingStyle(styleProp))
+        {
+            // This style property change may affect the layout of this
+            // object. Signal the LayoutManager to re-measure the object.
+            object.invalidateSize();
+        }
+
+        // TODO (gosmith): Should initThemeColor() be in some interface?
+        if (!styleProp || 
+            styleProp == "styleName" ||
+            styleProp == "themeColor")
+        {
+        	if (object is UIComponent)
+                object["initThemeColor"]();
+        }
+        
+        object.invalidateDisplayList();
+        
+        var parent:IInvalidating;
+        if (object is IVisualElement)
+            parent = IVisualElement(object).parent as IInvalidating;
+
+        if (parent)
+        {
+            if (styleProp == "styleName" || styleManager.isParentSizeInvalidatingStyle(styleProp))
+                parent.invalidateSize();
+
+            if (styleProp == "styleName" || styleManager.isParentDisplayListInvalidatingStyle(styleProp))
+                parent.invalidateDisplayList();
+        }
+    }
+
+    /**
+     *  @private
+     */
+    public static function matchesCSSType(object:IAdvancedStyleClient, cssType:String):Boolean
+    {
+        var styleManager:IStyleManager2 = getStyleManager(object);
+        var qualified:Boolean = styleManager.qualifiedTypeSelectors;
+        var typeHierarchy:OrderedObject = getTypeHierarchy(object, styleManager, qualified);
+        return typeHierarchy.object_proxy::getObjectProperty(cssType) != null;
+    }
+
+    /**
+     *  @private  
+     *  Find all matching style declarations for an IAdvancedStyleClient
+     *  component. The result is sorted in terms of specificity, but the
+     *  declaration order is preserved.
+     *
+     *  @param object - an IAdvancedStyleClient instance of the component to
+     *  match.
+     *  @param styleDeclarations - an optional Array of additional
+     *  CSSStyleDeclarations to be included in the sorted matches.
+     *
+     *  @return An Array of matching style declarations sorted by specificity.
+     */
+    public static function getMatchingStyleDeclarations(object:IAdvancedStyleClient,
+            styleDeclarations:Array=null):Array // of CSSStyleDeclaration
+    {
+        var styleManager:IStyleManager2 = getStyleManager(object);
+        
+        if (styleDeclarations == null)
+            styleDeclarations = [];
+
+        // First, look for universal selectors
+        var universalDecls:Object = styleManager.getStyleDeclarations("*");
+        styleDeclarations = matchStyleDeclarations(universalDecls, object).concat(styleDeclarations);
+
+        // Next, look for type selectors (includes ActionScript supertype matches)
+        // If we also had universal selectors, concatenate them with our type
+        // selectors and then resort by specificity...
+        if (styleDeclarations.length > 0)
+        {
+            styleDeclarations = object.getClassStyleDeclarations().concat(styleDeclarations);
+            styleDeclarations = sortOnSpecificity(styleDeclarations);
+        }
+        else
+        {
+            // Otherwise, we only have type selectors (which are already sorted)
+            styleDeclarations = object.getClassStyleDeclarations();
+        }
+        return styleDeclarations;
+    }
+
+    /**
+     *  @private
+     *  @param object - the IStyleClient to be introspected  
+     *  @param qualified - whether qualified type names should be used
+     *  @return an ordered map of class names, starting with the object's class
+     *  name and then each super class name until we hit a stop class, such as
+     *  mx.core::UIComponent.
+     */
+    private static function getTypeHierarchy(object:IStyleClient, styleManager:IStyleManager2, qualified:Boolean=true):OrderedObject
+    {
+        var className:String = getQualifiedClassName(object);
+        var hierarchy:OrderedObject = styleManager.typeHierarchyCache[className] as OrderedObject;
+        if (hierarchy == null)
+        {
+            hierarchy = new OrderedObject();
+
+            var myApplicationDomain:DefinitionManager;
+            var factory:IFlexModuleFactory = ModuleManager.getAssociatedFactory(object);
+            if (factory != null)
+            {
+                myApplicationDomain = new DefinitionManager(factory.info()["currentDomain"]);
+            }
+            else
+            {
+                var myRoot:DisplayObject = SystemManager.getSWFRoot(object);
+                if (!myRoot)
+                    return hierarchy;
+                myApplicationDomain = new DefinitionManager(myRoot.loaderInfo.applicationDomain);
+            }
+
+            styleManager.typeHierarchyCache[className] = hierarchy;
+            while (!isStopClass(className))
+            {
+                try
+                {
+                    var type:String;
+                    if (qualified)
+                        type = className.replace("::", ".");
+                    else
+                        type = NameUtil.getUnqualifiedClassName(className);
+
+                    hierarchy.object_proxy::setObjectProperty(type, true);
+                    className = getQualifiedSuperclassName(
+                        myApplicationDomain.getDefinition(className));
+                }
+                catch(e:ReferenceError)
+                {
+                    className = null;
+                }
+            }
+        }
+        return hierarchy;
+    }
+
+    /**
+     *  @private
+     *  Our style type hierarhcy stops at UIComponent, UITextField or
+     *  GraphicElement, not Object.
+     */  
+    private static function isStopClass(value:String):Boolean
+    {
+        return value == null ||
+               value == "mx.core::UIComponent" ||
+               value == "mx.core::UITextField" ||
+               value == "mx.graphics.baseClasses::GraphicElement";
+    }
+
+    /**
+     *  @private  
+     *  Find all matching style declarations for an IAdvancedStyleClient
+     *  component. The result is unsorted in terms of specificity, but the
+     *  declaration order is preserved.
+     *
+     *  @param declarations - a map of declarations to be searched for matches.
+     *  @param object - an instance of the component to match.
+     *
+     *  @return An unsorted Array of matching style declarations for the given
+     *  subject.
+     */
+    private static function matchStyleDeclarations(declarations:Object,
+            object:IAdvancedStyleClient):Array // of CSSStyleDeclaration
+    {
+        var matchingDecls:Array = [];
+        var pseudos:Array = declarations["pseudo"];
+        var classes:Array = declarations["class"];
+        var ids:Array = declarations["id"];
+        var unconditionals:Array = declarations["unconditional"];
+        
+        var decl:CSSStyleDeclaration;
+        
+        // Find the subset of declarations that match this component
+        for each (decl in unconditionals)
+        {
+            if (decl.matchesStyleClient(object))
+                matchingDecls.push(decl);
+        }
+        
+        if (object.styleName is String)
+        {
+            // Find the subset of declarations that match this component
+            for each (decl in classes)
+            {
+                if (decl.matchesStyleClient(object))
+                    matchingDecls.push(decl);
+            }
+        }
+        
+        if (object.hasCSSState())
+        {
+            // Find the subset of declarations that match this component
+            for each (decl in pseudos)
+            {
+                if (decl.matchesStyleClient(object))
+                    matchingDecls.push(decl);
+            }            
+        }
+
+        if (object.id)
+        {
+            // Find the subset of declarations that match this component
+            for each (decl in ids)
+            {
+                if (decl.matchesStyleClient(object))
+                    matchingDecls.push(decl);
+            }
+        }
+
+        if (matchingDecls.length > 1)
+            matchingDecls.sortOn("selectorIndex", Array.NUMERIC);
+        
+        // if there are declarations from the parent StyleManager, match them in their own
+        // order, then prepend them.  Parent styles go on the chain before child styles.
+        if (declarations.parent)
+            matchingDecls = matchStyleDeclarations(declarations.parent, object).concat(matchingDecls);
+        
+        return matchingDecls;
+    }
+
+    /**
+     *  @private
+     *  Sort algorithm to order style declarations by specificity. Note that 
+     *  Array.sort() is not used as it does not employ a stable algorithm and
+     *  CSS requires the order of equal style declaration to be preserved.
+     */ 
+    private static function sortOnSpecificity(decls:Array):Array // of CSSStyleDeclaration 
+    {
+        // TODO (pfarland): Copied algorithm from Group.sortOnLayer as the
+        // number of declarations to be sorted is usually small. We may consider
+        // replacing this insertion sort with an efficient but stable merge sort
+        // or the like if many style declarations need to sorted.
+        var len:Number = decls.length;
+        var tmp:CSSStyleDeclaration;
+
+        if (len <= 1)
+            return decls;
+
+        for (var i:int = 1; i < len; i++)
+        {
+            for (var j:int = i; j > 0; j--)
+            {
+                if (decls[j].specificity < decls[j-1].specificity)
+                {
+                    tmp = decls[j];
+                    decls[j] = decls[j-1];
+                    decls[j-1] = tmp;
+                }
+                else
+                {
+                    break;
+                }
+            }
+        }
+
+        return decls; 
+    }
+    
+    /**
+     *  @private
+     *  Get the style manager of any object. If the object does not implement IFlexModule or
+     *  is not of type StyleProxy, then the top-level style manager will be returned.
+     * 
+     *  @param object - Typed as Object because various interfaces are passed here.
+     *  @return a style manager, will not be null.
+     */ 
+    private static function getStyleManager(object:Object):IStyleManager2
+    {
+        if (object is IFlexModule)
+            return StyleManager.getStyleManager(IFlexModule(object).moduleFactory);
+        else if (object is StyleProxy)
+            return getStyleManagerFromStyleProxy(StyleProxy(object));
+        else
+            return StyleManager.getStyleManager(null);
+    }
+
+    /**
+     *  @private
+     *  Get the style manager for a given StyleProxy object.
+     * 
+     *  @return a style manager, will not be null.
+     */ 
+    private static function getStyleManagerFromStyleProxy(obj:StyleProxy):IStyleManager2
+    {
+        // StyleProxy's usually have sources that are DisplayObject's, but a StyleProxy can also have 
+        // another StyleProxy as it's source (Example: CalendarLayout's source is a StyleProxy for DateChooser, 
+        // whose style is a StyleProxy for DateField)
+        var curObj:IStyleClient = obj;
+        while (curObj is StyleProxy)
+        {
+            curObj = StyleProxy(curObj).source;
+        }
+
+        if (curObj is IFlexModule)
+            return StyleManager.getStyleManager(IFlexModule(curObj).moduleFactory);
+        
+        return StyleManager.getStyleManager(null);
+    }
+}
+
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/1f6418c4/frameworks/projects/MX/src/main/flex/mx/styles/metadata/AnchorStyles.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/styles/metadata/AnchorStyles.as b/frameworks/projects/MX/src/main/flex/mx/styles/metadata/AnchorStyles.as
new file mode 100644
index 0000000..89c93e4
--- /dev/null
+++ b/frameworks/projects/MX/src/main/flex/mx/styles/metadata/AnchorStyles.as
@@ -0,0 +1,158 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+/**
+ *  The vertical distance in pixels from the top edge of the content area to 
+ *  the control's baseline position. 
+ *  If this style is set, the baseline of the component is
+ *  anchored to the top edge of its content area; when its container
+ *  is resized, the two edges maintain their separation.
+ * 
+ *  <p>This style only has an effect when used on a component in a Canvas container, 
+ *  or when used on a component in a Panel or Application container that has the 
+ *  <code>layout</code> property set to <code>absolute</code>.</p> 
+ * 
+ *  <p>The default value is <code>undefined</code>, which means it is not set.</p>
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="baseline", type="String", inherit="no")]
+
+/**
+ *  The vertical distance, in pixels, from the bottom edge of the component 
+ *  to the bottom edge of its parent container's content area.
+ *  If this style is set, the lower edge of the component is
+ *  anchored to the bottom edge of its content area; when its container
+ *  is resized, the two edges maintain their separation.
+ * 
+ *  <p>This style only has an effect when used on a component in a Canvas container, 
+ *  or when used on a component in a Panel or Application container that has the 
+ *  <code>layout</code> property set to <code>absolute</code>.</p> 
+ * 
+ *  <p>The default value is <code>undefined</code>, which means it is not set.</p>
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="bottom", type="String", inherit="no")]
+
+/**
+ *  The horizontal distance in pixels from the center of the component's
+ *  content area to the center of the component.
+ *  If this style is set, the center of the component is
+ *  anchored to the center of its content area; when its container
+ *  is resized, the two centers maintain their horizontal separation.
+ * 
+ *  <p>This style only has an effect when used on a component in a Canvas container, 
+ *  or when used on a component in a Panel or Application container that has the 
+ *  <code>layout</code> property set to <code>absolute</code>.</p> 
+ * 
+ *  <p>The default value is <code>undefined</code>, which means it is not set.</p>
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="horizontalCenter", type="String", inherit="no")]
+
+/**
+ *  The horizontal distance, in pixels, from the left edge of the component 
+ *  to the left edge of its parent container's content area.
+ *  If this style is set, the left edge of the component is
+ *  anchored to the left edge of its content area; when its container
+ *  is resized, the two edges maintain their separation.
+ * 
+ *  <p>This style only has an effect when used on a component in a Canvas container, 
+ *  or when used on a component in a Panel or Application container that has the 
+ *  <code>layout</code> property set to <code>absolute</code>.</p> 
+ * 
+ *  <p>The default value is <code>undefined</code>, which means it is not set.</p>
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="left", type="String", inherit="no")]
+
+/**
+ *  The horizontal distance, in pixels, from the right edge of the component 
+ *  to the right edge of its parent container's content area.
+ *  If this style is set, the right edge of the component is
+ *  anchored to the right edge of its content area; when its container
+ *  is resized, the two edges maintain their separation.
+ * 
+ *  <p>This style only has an effect when used on a component in a Canvas container, 
+ *  or when used on a component in a Panel or Application container that has the 
+ *  <code>layout</code> property set to <code>absolute</code>.</p> 
+ * 
+ *  <p>The default value is <code>undefined</code>, which means it is not set.</p>
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="right", type="String", inherit="no")]
+
+/**
+ *  The vertical distance, in pixels, from the top edge of the component 
+ *  to the top edge of its parent container's content area.
+ *  If this style is set, the top edge of the component is
+ *  anchored to the top edge of its content area; when its container
+ *  is resized, the two edges maintain their separation.
+ * 
+ *  <p>This style only has an effect when used on a component in a Canvas container, 
+ *  or when used on a component in a Panel or Application container that has the 
+ *  <code>layout</code> property set to <code>absolute</code>.</p> 
+ * 
+ *  <p>The default value is <code>undefined</code>, which means it is not set.</p>
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="top", type="String", inherit="no")]
+
+/**
+ *  The vertical distance in pixels from the center of the component's
+ *  content area to the center of the component.
+ *  If this style is set, the center of the component is 
+ *  anchored to the center of its content area; when its container
+ *  is resized, the two centers maintain their vertical separation.
+ * 
+ *  <p>This style only has an effect when used on a component in a Canvas container, 
+ *  or when used on a component in a Panel or Application container that has the 
+ *  <code>layout</code> property set to <code>absolute</code>.</p> 
+ * 
+ *  <p>The default value is <code>undefined</code>, which means it is not set.</p>
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="verticalCenter", type="String", inherit="no")]

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/1f6418c4/frameworks/projects/MX/src/main/flex/mx/styles/metadata/BarColorStyle.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/styles/metadata/BarColorStyle.as b/frameworks/projects/MX/src/main/flex/mx/styles/metadata/BarColorStyle.as
new file mode 100644
index 0000000..c247291
--- /dev/null
+++ b/frameworks/projects/MX/src/main/flex/mx/styles/metadata/BarColorStyle.as
@@ -0,0 +1,35 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+/**
+ *  Determines the color of a ProgressBar.
+ *  A ProgressBar is filled with a vertical gradient between this color
+ *  and a brighter color computed from it.
+ *  This style has no effect on other components, but can be set on a container
+ *  to control the appearance of all progress bars found within.
+ *  The default value is <code>undefined</code>, which means it is not set. 
+ *  In this case, the <code>themeColor</code> style property is used.
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="barColor", type="uint", format="Color", inherit="yes", theme="halo")]
+

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/1f6418c4/frameworks/projects/MX/src/main/flex/mx/styles/metadata/BorderStyles.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/styles/metadata/BorderStyles.as b/frameworks/projects/MX/src/main/flex/mx/styles/metadata/BorderStyles.as
new file mode 100644
index 0000000..9fc4a1f
--- /dev/null
+++ b/frameworks/projects/MX/src/main/flex/mx/styles/metadata/BorderStyles.as
@@ -0,0 +1,250 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+/**
+ *  Background color of the component when it is disabled.
+ *  The global default value is <code>undefined</code>.
+ *  The default value for List controls is <code>0xDDDDDD</code> (light gray).
+ *  If a container is disabled, the background is dimmed, and the degree of
+ *  dimming is controlled by the <code>disabledOverlayAlpha</code> style.
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="backgroundDisabledColor", type="uint", format="Color", inherit="yes", theme="halo")]
+
+/**
+ *  Background image of a component.  This can be an absolute or relative
+ *  URL or class.  You can set either the <code>backgroundColor</code> or the
+ *  <code>backgroundImage</code>. The background image is displayed
+ *  on top of the background color.
+ *  The default value is <code>undefined</code>, meaning "not set".
+ *  If this style and the <code>backgroundColor</code> style are undefined,
+ *  the component has a transparent background.
+ * 
+ *  <p>The default skins of most Flex controls are partially transparent. As a result, the background image of 
+ *  a container partially "bleeds through" to controls that are in that container. You can avoid this by setting the 
+ *  alpha values of the control's <code>fillAlphas</code> property to 1, as the following example shows:
+ *  <pre>
+ *  &lt;mx:<i>Container</i> backgroundColor="0x66CC66"/&gt;
+ *      &lt;mx:<i>ControlName</i> ... fillAlphas="[1,1]"/&gt;
+ *  &lt;/mx:<i>Container</i>&gt;</pre>
+ *  </p>
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="backgroundImage", type="Object", format="File", inherit="no", theme="halo")]
+
+/**
+ *  Scales the image specified by <code>backgroundImage</code>
+ *  to different percentage sizes.
+ *  A value of <code>"100%"</code> stretches the image
+ *  to fit the entire component.
+ *  To specify a percentage value, you must include the percent sign (%).
+ *  The default for the Application container is <code>100%</code>.
+ *  The default value for all other containers is <code>auto</code>, which maintains
+ *  the original size of the image.
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="backgroundSize", type="String", inherit="no", theme="halo")]
+
+/**
+ *  Alpha of the border.
+ *  @default 1
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 10
+ *  @playerversion AIR 1.5
+ *  @productversion Flex 4
+ */
+[Style(name="borderAlpha", type="Number", inherit="no", theme="spark")]
+
+/**
+ *  Color of the border.
+ *  The default value depends on the component class;
+ *  if not overridden for the class, the default value is <code>0xB7BABC</code>
+ *  for the Halo theme and <code>0x696969</code> for the Spark theme.
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="borderColor", type="uint", format="Color", inherit="no", theme="halo, spark, mobile")]
+
+/**
+ *  Bounding box sides.
+ *  A space-delimited String that specifies the sides of the border to show.
+ *  The String can contain <code>"left"</code>, <code>"top"</code>,
+ *  <code>"right"</code>, and <code>"bottom"</code> in any order.
+ *  The default value is <code>"left top right bottom"</code>,
+ *  which shows all four sides.
+ *
+ *  This style is only used when borderStyle is <code>"solid"</code>.
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="borderSides", type="String", inherit="no", theme="halo")]
+
+/**
+ *  The border skin class of the component. 
+ *  The default value in all components that do not explicitly
+ *  set their own default for the Halo theme is <code>mx.skins.halo.HaloBorder</code>
+ *  and for the Spark theme is <code>mx.skins.spark.BorderSkin</code>.
+ *  The Panel container has a default value of <code>mx.skins.halo.PanelSkin</code>
+ *  for the Halo theme and <code>mx.skins.spark.BorderSkin</code> for the Spark theme.
+ *  To determine the default value for a component, see the default.css file.
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="borderSkin", type="Class", inherit="no")]
+
+/**
+ *  Bounding box style.
+ *  The possible values are <code>"none"</code>, <code>"solid"</code>,
+ *  <code>"inset"</code>, and <code>"outset"</code>.
+ *  The default value depends on the component class;
+ *  if not overridden for the class, the default value is <code>"inset"</code>.
+ *  The default value for most Containers is <code>"none"</code>.
+ *  The <code>"inset"</code> and <code>"outset"</code> values are only
+ *  valid with the halo theme.
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="borderStyle", type="String", enumeration="inset,outset,solid,none", inherit="no")]
+
+/**
+ *  Bounding box thickness.
+ *  Only used when <code>borderStyle</code> is set to <code>"solid"</code>.
+ *
+ *  @default 1
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="borderThickness", type="Number", format="Length", inherit="no", theme="halo")]
+
+/**
+ *  Visibility of the border.
+ *
+ *  @default true
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 10
+ *  @playerversion AIR 1.5
+ *  @productversion Flex 4
+ */
+[Style(name="borderVisible", type="Boolean", inherit="no", theme="spark")]
+
+/**
+ *  Boolean property that specifies whether the component has a visible
+ *  drop shadow.
+ *  This style is used with <code>borderStyle="solid"</code>.
+ *  The default value is <code>false</code>.
+ *
+ *  <p><b>Note:</b> For drop shadows to appear on containers, set
+ *  <code>backgroundColor</code> or <code>backgroundImage</code> properties.
+ *  Otherwise, the shadow appears behind the container because
+ *  the default background of a container is transparent.</p>
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="dropShadowEnabled", type="Boolean", inherit="no", theme="halo")]
+
+/**
+ *  Boolean property that specifies whether the component has a visible
+ *  drop shadow.
+ *  The default value is <code>false</code>.
+ *
+ *  <p><b>Note:</b> For drop shadows to appear on containers, set
+ *  <code>contentBackgroundColor</code> property.
+ *  Otherwise, the shadow appears behind the container because
+ *  the default background of a container is transparent.</p>
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 10
+ *  @playerversion AIR 1.5
+ *  @productversion Flex 4
+ */
+[Style(name="dropShadowVisible", type="Boolean", inherit="no", theme="spark")]
+
+/**
+ *  Color of the drop shadow.
+ *
+ *  @default 0x000000
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="dropShadowColor", type="uint", format="Color", inherit="yes", theme="halo")]
+
+/**
+ *  Direction of the drop shadow.
+ *  Possible values are <code>"left"</code>, <code>"center"</code>,
+ *  and <code>"right"</code>.
+ *
+ *  @default "center"
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="shadowDirection", type="String", enumeration="left,center,right", inherit="no", theme="halo")]
+
+/**
+ *  Distance of the drop shadow.
+ *  If the property is set to a negative value, the shadow appears above the component.
+ *
+ *  @default 2
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="shadowDistance", type="Number", format="Length", inherit="no", theme="halo")]
+
+
+

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/1f6418c4/frameworks/projects/MX/src/main/flex/mx/styles/metadata/ContainerBackgroundStyles.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/styles/metadata/ContainerBackgroundStyles.as b/frameworks/projects/MX/src/main/flex/mx/styles/metadata/ContainerBackgroundStyles.as
new file mode 100644
index 0000000..7da71d7
--- /dev/null
+++ b/frameworks/projects/MX/src/main/flex/mx/styles/metadata/ContainerBackgroundStyles.as
@@ -0,0 +1,65 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+/**
+ *  Alpha level of the color defined by the <code>backgroundColor</code>
+ *  property, of the image or SWF file defined by the <code>backgroundImage</code>
+ *  style.
+ *  Valid values range from 0.0 to 1.0. For most controls, the default value is 1.0, 
+ *  but for ToolTip controls, the default value is 0.95 and for Alert controls, the default value is 0.9.
+ *  
+ *  @default 1.0
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="backgroundAlpha", type="Number", inherit="no", theme="halo, spark, mobile")]
+
+/**
+ *  Background color of a component.
+ *  You can have both a <code>backgroundColor</code> and a
+ *  <code>backgroundImage</code> set.
+ *  Some components do not have a background.
+ *  The DataGrid control ignores this style.
+ *  The default value is <code>undefined</code>, which means it is not set.
+ *  If both this style and the <code>backgroundImage</code> style
+ *  are <code>undefined</code>, the component has a transparent background.
+ *
+ *  <p>For the Application container, this style specifies the background color
+ *  while the application loads, and a background gradient while it is running. 
+ *  Flex calculates the gradient pattern between a color slightly darker than 
+ *  the specified color, and a color slightly lighter than the specified color.</p>
+ * 
+ *  <p>The default skins of most Flex controls are partially transparent. As a result, the background color of 
+ *  a container partially "bleeds through" to controls that are in that container. You can avoid this by setting the 
+ *  alpha values of the control's <code>fillAlphas</code> property to 1, as the following example shows:
+ *  <pre>
+ *  &lt;mx:<i>Container</i> backgroundColor="0x66CC66"/&gt;
+ *      &lt;mx:<i>ControlName</i> ... fillAlphas="[1,1]"/&gt;
+ *  &lt;/mx:<i>Container</i>&gt;</pre>
+ *  </p>
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="backgroundColor", type="uint", format="Color", inherit="no", theme="halo, spark, mobile")]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/1f6418c4/frameworks/projects/MX/src/main/flex/mx/styles/metadata/GapStyles.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/styles/metadata/GapStyles.as b/frameworks/projects/MX/src/main/flex/mx/styles/metadata/GapStyles.as
new file mode 100644
index 0000000..f0f34be
--- /dev/null
+++ b/frameworks/projects/MX/src/main/flex/mx/styles/metadata/GapStyles.as
@@ -0,0 +1,42 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+/**
+ *  Number of pixels between children in the horizontal direction.
+ *  The default value depends on the component class;
+ *  if not overridden for the class, the default value is 8.
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="horizontalGap", type="Number", format="Length", inherit="no")]
+
+/**
+ *  Number of pixels between children in the vertical direction.
+ *  The default value depends on the component class;
+ *  if not overridden for the class, the default value is 6.
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="verticalGap", type="Number", format="Length", inherit="no")]

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/1f6418c4/frameworks/projects/MX/src/main/flex/mx/styles/metadata/LeadingStyle.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/styles/metadata/LeadingStyle.as b/frameworks/projects/MX/src/main/flex/mx/styles/metadata/LeadingStyle.as
new file mode 100644
index 0000000..a860586
--- /dev/null
+++ b/frameworks/projects/MX/src/main/flex/mx/styles/metadata/LeadingStyle.as
@@ -0,0 +1,31 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+/**
+ *  Additional vertical space between lines of text.
+ *
+ *  <p>The default value is 2.</p>
+ *  <p>The default value for the ComboBox control is 0.</p>
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="leading", type="Number", format="Length", inherit="yes")]

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/1f6418c4/frameworks/projects/MX/src/main/flex/mx/styles/metadata/PaddingStyles.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/styles/metadata/PaddingStyles.as b/frameworks/projects/MX/src/main/flex/mx/styles/metadata/PaddingStyles.as
new file mode 100644
index 0000000..8ed2c6a
--- /dev/null
+++ b/frameworks/projects/MX/src/main/flex/mx/styles/metadata/PaddingStyles.as
@@ -0,0 +1,51 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+/**
+ *  Number of pixels between the component's left border
+ *  and the left edge of its content area.
+ *  <p>The default value is 0.</p>
+ *  <p>The default value for a Button control in the Halo theme is 10
+ *     and in the Spark theme is 6.</p>
+ *  <p>The default value for the ComboBox control is 5.</p>
+ *  <p>The default value for the Form container is 16.</p>
+ *  <p>The default value for the Tree control is 2.</p>
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="paddingLeft", type="Number", format="Length", inherit="no")]
+
+/**
+ *  Number of pixels between the component's right border
+ *  and the right edge of its content area.
+ *  <p>The default value is 0.</p>
+ *  <p>The default value for a Button control in the Halo theme is 10
+ *     and in the Spark theme is 6.</p>
+ *  <p>The default value for the ComboBox control is 5.</p>
+ *  <p>The default value for the Form container is 16.</p>
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="paddingRight", type="Number", format="Length", inherit="no")]

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/1f6418c4/frameworks/projects/MX/src/main/flex/mx/styles/metadata/TextStyles.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/styles/metadata/TextStyles.as b/frameworks/projects/MX/src/main/flex/mx/styles/metadata/TextStyles.as
new file mode 100644
index 0000000..d43179e
--- /dev/null
+++ b/frameworks/projects/MX/src/main/flex/mx/styles/metadata/TextStyles.as
@@ -0,0 +1,351 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+/**
+ *  Color of text in the component, including the component label.
+ *
+ *  The default value for the Halo theme is <code>0x0B333C</code>.
+ *  The default value for the Spark theme is <code>0x000000</code>.
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="color", type="uint", format="Color", inherit="yes")]
+
+/**
+ *  The directionality of the text displayed by the component.
+ *
+ *  <p>The allowed values are <code>"ltr"</code> for left-to-right text,
+ *  as in Latin-style scripts,
+ *  and <code>"rtl"</code> for right-to-left text,
+ *  as in Arabic and Hebrew.</p>
+ *
+ *  <p>FTE and TLF use this value in their bidirectional text layout algorithm,
+ *  which maps Unicode character order to glyph order.</p>
+ * 
+ *  <p>Note: This style only applies when an MX component
+ *  specifies UIFTETextField as its <code>textFieldClass</code>.</p>
+ *
+ *  <p>The <code>direction</code> also affects the alignment
+ *  of the text within the bounds of the TLFTextField.
+ *  It does not, however, affect the the placement
+ *  of the TLFTextField within the component.</p>
+ *
+ *  @default "ltr"
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 10
+ *  @playerversion AIR 1.5
+ *  @productversion Flex 4
+ */
+[Style(name="direction", type="String", enumeration="ltr,rtl,inherit", inherit="yes")]
+
+/**
+ *  Color of text in the component if it is disabled.
+ *
+ *  @default 0xAAB3B3
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="disabledColor", type="uint", format="Color", inherit="yes")]
+
+/**
+ *  Sets the <code>antiAliasType</code> property of internal TextFields. The possible values are 
+ *  <code>"normal"</code> (<code>flash.text.AntiAliasType.NORMAL</code>) 
+ *  and <code>"advanced"</code> (<code>flash.text.AntiAliasType.ADVANCED</code>). 
+ *  
+ *  <p>The default value is <code>"advanced"</code>, which enables advanced anti-aliasing for the font.
+ *  Set to <code>"normal"</code> to disable the advanced anti-aliasing.</p>
+ *  
+ *  <p>This style has no effect for system fonts.</p>
+ *  
+ *  <p>This style applies to all the text in a TextField subcontrol; 
+ *  you cannot apply it to some characters and not others.</p>
+
+ *  @default "advanced"
+ * 
+ *  @see flash.text.TextField
+ *  @see flash.text.AntiAliasType
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="fontAntiAliasType", type="String", enumeration="normal,advanced", inherit="yes")]
+
+/**
+ *  Name of the font to use.
+ *  Unlike in a full CSS implementation,
+ *  comma-separated lists are not supported.
+ *  You can use any font family name.
+ *  If you specify a generic font name,
+ *  it is converted to an appropriate device font.
+ * 
+ *  The default font for the Halo theme is <code>"Verdana"</code>.
+ *  The default font for the Spark theme is <code>"Arial"</code>.
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="fontFamily", type="String", inherit="yes")]
+
+/**
+ *  Sets the <code>gridFitType</code> property of internal TextFields that represent text in Flex controls.
+ *  The possible values are <code>"none"</code> (<code>flash.text.GridFitType.NONE</code>), 
+ *  <code>"pixel"</code> (<code>flash.text.GridFitType.PIXEL</code>),
+ *  and <code>"subpixel"</code> (<code>flash.text.GridFitType.SUBPIXEL</code>). 
+ *  
+ *  <p>This property only applies when you are using an embedded font 
+ *  and the <code>fontAntiAliasType</code> property 
+ *  is set to <code>"advanced"</code>.</p>
+ *  
+ *  <p>This style has no effect for system fonts.</p>
+ * 
+ *  <p>This style applies to all the text in a TextField subcontrol; 
+ *  you can't apply it to some characters and not others.</p>
+ * 
+ *  @default "pixel"
+ *  
+ *  @see flash.text.TextField
+ *  @see flash.text.GridFitType
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="fontGridFitType", type="String", enumeration="none,pixel,subpixel", inherit="yes")]
+
+/**
+ *  Sets the <code>sharpness</code> property of internal TextFields that represent text in Flex controls.
+ *  This property specifies the sharpness of the glyph edges. The possible values are Numbers 
+ *  from -400 through 400. 
+ *  
+ *  <p>This property only applies when you are using an embedded font 
+ *  and the <code>fontAntiAliasType</code> property 
+ *  is set to <code>"advanced"</code>.</p>
+ *  
+ *  <p>This style has no effect for system fonts.</p>
+ * 
+ *  <p>This style applies to all the text in a TextField subcontrol; 
+ *  you can't apply it to some characters and not others.</p>
+ *  
+ *  @default 0
+ *  
+ *  @see flash.text.TextField
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="fontSharpness", type="Number", inherit="yes")]
+
+/**
+ *  Height of the text, in pixels.
+ *
+ *  In the Halo theme, the default value is 10 for all controls except
+ *  the ColorPicker control. For the Halo themed ColorPicker control,
+ *  the default value is 11. In the Spark theme, the default value is
+ *  12 for all controls except the ColorPicker control. For the Spark 
+ *  themed ColorPicker control, the default value is 11.
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="fontSize", type="Number", format="Length", inherit="yes")]
+
+/**
+ *  Determines whether the text is italic font.
+ *  Recognized values are <code>"normal"</code> and <code>"italic"</code>.
+ * 
+ *  @default "normal"
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="fontStyle", type="String", enumeration="normal,italic", inherit="yes")]
+
+/**
+ *  Sets the <code>thickness</code> property of internal TextFields that represent text in Flex controls.
+ *  This property specifies the thickness of the glyph edges.
+ *  The possible values are Numbers from -200 to 200. 
+ *  
+ *  <p>This property only applies when you are using an embedded font 
+ *  and the <code>fontAntiAliasType</code> property 
+ *  is set to <code>"advanced"</code>.</p>
+ *  
+ *  <p>This style has no effect on system fonts.</p>
+ * 
+ *  <p>This style applies to all the text in a TextField subcontrol; 
+ *  you can't apply it to some characters and not others.</p>
+ *  
+ *  @default 0
+ *  
+ *  @see flash.text.TextField
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="fontThickness", type="Number", inherit="yes")]
+
+/**
+ *  Determines whether the text is boldface.
+ *  Recognized values are <code>normal</code> and <code>bold</code>.
+ *  The default value for Button controls is <code>bold</code>. 
+ *  The default value for all other controls is <code>normal</code>.
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="fontWeight", type="String", enumeration="normal,bold", inherit="yes")]
+
+/**
+ *  A Boolean value that indicates whether kerning
+ *  is enabled (<code>true</code>) or disabled (<code>false</code>).
+ *  Kerning adjusts the gap between certain character pairs
+ *  to improve readability, and should be used only when necessary,
+ *  such as with headings in large fonts.
+ *  Kerning is supported for embedded fonts only. 
+ *  Certain fonts, such as Verdana, and monospaced fonts,
+ *  such as Courier New, do not support kerning.
+ *
+ *  @default false
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="kerning", type="Boolean", inherit="yes")]
+
+/**
+ *  The number of additional pixels to appear between each character.
+ *  A positive value increases the character spacing beyond the normal spacing,
+ *  while a negative value decreases it.
+ * 
+ *  @default 0
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="letterSpacing", type="Number", inherit="yes")]
+
+/**
+ *  The locale of the text displayed by this component.
+ * 
+ *  <p>FTE and TLF use this locale to map Unicode characters
+ *  to font glyphs and to find fallback fonts.</p>
+ *
+ *  <p>Note: This style only applies when an MX component
+ *  specifies UIFTETextField as its <code>textFieldClass</code>.</p>
+ *
+ *  @default "en"
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 10
+ *  @playerversion AIR 1.5
+ *  @productversion Flex 4
+ */
+[Style(name="locale", type="String", inherit="yes")]
+
+/**
+ *  Alignment of text within a container.
+ *  Possible values are <code>"left"</code>, <code>"right"</code>,
+ *  or <code>"center"</code>.
+ * 
+ *  <p>The default value for most components is <code>"left"</code>.
+ *  For the FormItem component,
+ *  the default value is <code>"right"</code>.
+ *  For the Button, LinkButton, and AccordionHeader components,
+ *  the default value is <code>"center"</code>, and
+ *  this property is only recognized when the
+ *  <code>labelPlacement</code> property is set to <code>"left"</code> or
+ *  <code>"right"</code>.
+ *  If <code>labelPlacement</code> is set to <code>"top"</code> or
+ *  <code>"bottom"</code>, the text and any icon are centered.</p>
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="textAlign", type="String", enumeration="left,center,right", inherit="yes")]
+
+/**
+ *  Determines whether the text is underlined.
+ *  Possible values are <code>"none"</code> and <code>"underline"</code>.
+ * 
+ *  @default "none"
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="textDecoration", type="String", enumeration="none,underline", inherit="yes")]
+
+/**
+ *  The class implementing IUITextField that is used by this component
+ *  to render text.
+ *
+ *  <p>It can be set to either the mx.core.UITextField class
+ *  (to use the classic TextField class built into Flash Player)
+ *  or the mx.core.UIFTETextField class
+ *  (to use the Text Layout Framework to get improved text rendering,
+ *  including bidirectional layout).</p>
+ *
+ *  @default mx.core.UITextField
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 10
+ *  @playerversion AIR 1.5
+ *  @productversion Flex 4
+ */
+[Style(name="textFieldClass", type="Class", inherit="no")]
+
+/**
+ *  Offset of first line of text from the left side of the container, in pixels.
+ * 
+ *  @default 0
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="textIndent", type="Number", format="Length", inherit="yes")]


Mime
View raw message