Transferred from the Adobe Open Source Subversion Repository

Revision: 17310
Author:   rfrishbe@adobe.com
Date:     2010-08-13T00:57:38.531711Z

Log Message:
-----------
Moving MobileItemRenderer to MobileTextField.  Also cleaning up MobileTextField a bit (padding's no longer respected in it and fixed a bug with isTruncated).  Also fixed up some logic in ButtonSkinBase around text truncation.

MobileItemRenderer is now the default item renderer for mobile lists.

QE notes: None
Doc notes: None
Bugs: -
Reviewer: Glenn
Tests run: checkintests
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/MobileTextField.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/SparkClasses.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/MobileItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/defaults.css</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ListSkin.mxml</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ButtonSkinBase.as</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1263944 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/mobilecomponents/src/spark/components/LabelItemRenderer.as
+++ frameworks/projects/mobilecomponents/src/spark/components/LabelItemRenderer.as
@@ -15,6 +15,7 @@
 import mx.core.IFlexModuleFactory;
 import mx.core.IVisualElement;
 import mx.core.UIComponent;
+import mx.core.UITextField;
 import mx.core.mx_internal;
 import mx.events.FlexEvent;
 import mx.utils.StringUtil;
@@ -23,6 +24,7 @@
 import spark.components.IItemRenderer;
 import spark.components.Image;
 import spark.components.Label;
+import spark.components.supportClasses.MobileTextField;
 import spark.components.supportClasses.TextBase;
 import spark.core.ContentCache;
 import spark.primitives.BitmapImage;
@@ -244,14 +246,14 @@

         // getLineMetrics() returns strange numbers for an empty string,
         // so instead we get the metrics for a non-empty string.
-        var isEmpty:Boolean = (labelTextField.text == "");
+        var isEmpty:Boolean = (labelDisplay.text == "");
         if (isEmpty)
-            labelTextField.text = "Wj";
-
-        tlm = labelTextField.getLineMetrics(0);
+            labelDisplay.text = "Wj";
+
+        tlm = labelDisplay.getLineMetrics(0);

         if (isEmpty)
-            labelTextField.text = "";
+            labelDisplay.text = "";

         // TextFields have 2 pixels of padding all around.
         return 2 + tlm.ascent;
@@ -316,6 +318,11 @@
      *  @inheritDoc
      *
      *  @default 0
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
      */
     public function get itemIndex():int
     {
@@ -345,21 +352,25 @@
     private var _label:String = "";

     /**
-     *  @private
-     *  FIXME (rfrishbe): This should be protected when we acutally
-     *  use and expose a real text primitive and not TextField.
-     */
-    mx_internal var labelTextField:TextField;
-
-    /**
-     *  @private
-     */
-    private var recreateLabelTextFieldStyles:Boolean;
+     *  The text component used to
+     *  display the label data of the item renderer.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
+    protected var labelDisplay:MobileTextField;

     /**
      *  @inheritDoc
      *
-     *  @default ""
+     *  @default ""
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
      */
     public function get label():String
     {
@@ -378,9 +389,9 @@

         // Push the label down into the labelTextField,
         // if it exists
-        if (labelTextField)
-        {
-            labelTextField.text = _label;
+        if (labelDisplay)
+        {
+            labelDisplay.text = _label;
             invalidateSize();
         }
     }
@@ -399,6 +410,11 @@
      *  @inheritDoc
      *
      *  @default false
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
      */
     public function get showsCaret():Boolean
     {
@@ -431,6 +447,11 @@
      *  @inheritDoc
      *
      *  @default false
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
      */
     public function get selected():Boolean
     {
@@ -461,6 +482,11 @@

     /**
      *  @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
      */
     public function get dragging():Boolean
     {
@@ -488,134 +514,18 @@
     {
         super.createChildren();

-        if (!labelTextField)
-        {
-            labelTextField = new TextField();
-            labelTextField.multiline = false;
-            labelTextField.wordWrap = false;
-            labelTextField.selectable = false;
+        if (!labelDisplay)
+        {
+            labelDisplay = MobileTextField(createInFontContext(MobileTextField));
+            labelDisplay.styleProvider = this;
+            labelDisplay.editable = false;
+            labelDisplay.selectable = false;
+            labelDisplay.multiline = false;
+            labelDisplay.wordWrap = false;

-            addChild(DisplayObject(labelTextField));
-            labelTextField.text = _label;
-
-            recreateLabelTextFieldStyles = true;
-            invalidateProperties();
-        }
-    }
-
-    /**
-     *  @private
-     */
-    override protected function commitProperties():void
-    {
-        super.commitProperties();
-
-        if (recreateLabelTextFieldStyles)
-        {
-            recreateLabelTextFieldStyles = false;
-
-            var textFormat:TextFormat = getTextStyles();
-
-            // FIXME (rfrishbe): should deal with embedded fonts better
-
-            labelTextField.defaultTextFormat = textFormat;
-
-            // need to set text here for the defaultTextFormat to take effect
-            labelTextField.text = labelTextField.text;
-
-            invalidateSize();
-            invalidateDisplayList();
-        }
-    }
-
-    /**
-     *  @private
-     *  Defined by what we use in getTextStyles();
-     */
-    private static const TEXT_CSS_STYLES:Object =
-        {textAlign: true,
-            fontWeight: true,
-            color: true,
-            disabledColor: true,
-            fontFamily: true,
-            textIndent: true,
-            fontStyle: true,
-            kerning: true,
-            leading: true,
-            letterSpacing: true,
-            fontSize: true,
-            textDecoration: true};
-
-    /**
-     *  @private
-     *  Returns the TextFormat object that represents
-     *  character formatting information for this UITextField object.
-     *
-     *  @return A TextFormat object.
-     *
-     *  @see flash.text.TextFormat
-     *
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 2.5
-     *  @productversion Flex 4.5
-     */
-    private function getTextStyles():TextFormat
-    {
-        // Adapted from UITextField.getTextStyles()
-        var textFormat:TextFormat = new TextFormat();
-
-        var textAlign:String = getStyle("textAlign");
-
-        if (textAlign == "start")
-            textAlign = TextFormatAlign.LEFT;
-        else if (textAlign == "end")
-            textAlign = TextFormatAlign.RIGHT;
-        textFormat.align = textAlign;
-        textFormat.bold = getStyle("fontWeight") == "bold";
-        if (enabled)
-            textFormat.color = getStyle("color");
-        else
-            textFormat.color = getStyle("disabledColor");
-        textFormat.font = StringUtil.trimArrayElements(getStyle("fontFamily"),",");
-        textFormat.indent = getStyle("textIndent");
-        textFormat.italic = getStyle("fontStyle") == "italic";
-        var kerning:* = getStyle("kerning");
-        // In Halo components based on TextField,
-        // kerning is supposed to be true or false.
-        // The default in TextField and Flex 3 is false
-        // because kerning doesn't work for device fonts
-        // and is slow for embedded fonts.
-        // In Spark components based on TLF and FTE,
-        // kerning is "auto", "on", or, "off".
-        // The default in TLF and FTE is "auto"
-        // (which means kern non-Asian characters)
-        // because kerning works even on device fonts
-        // and has miminal performance impact.
-        // Since a CSS selector or parent container
-        // can affect both Halo and Spark components,
-        // we need to map "auto" and "on" to true
-        // and "off" to false for Halo components
-        // here and in UIFTETextField.
-        // For Spark components, Label and CSSTextLayoutFormat,
-        // do the opposite mapping of true to "on" and false to "off".
-        // We also support a value of "default"
-        // (which we set in the global selector)
-        // to mean false for Halo and "auto" for Spark,
-        // to get the recommended behavior in both sets of components.
-        if (kerning == "auto" || kerning == "on")
-            kerning = true;
-        else if (kerning == "default" || kerning == "off")
-            kerning = false;
-        textFormat.kerning = kerning;
-        textFormat.leading = getStyle("leading");
-        //textFormat.leftMargin = ignorePadding ? 0 : getStyle("paddingLeft");
-        textFormat.letterSpacing = getStyle("letterSpacing");
-        //textFormat.rightMargin = ignorePadding ? 0 : getStyle("paddingRight");
-        textFormat.size = getStyle("fontSize");
-        textFormat.underline = getStyle("textDecoration") == "underline";
-
-        return textFormat;
+            addChild(labelDisplay);
+            labelDisplay.text = _label;
+        }
     }

     /**
@@ -625,14 +535,20 @@
     {
         super.measure();

-        // Text has 10 pixels on left and 10 pixels on right by default, 5 pixels on top and 5 pixels on bottom by default
-        measuredWidth = labelTextField.textWidth + 5 + getStyle("paddingLeft") + getStyle("paddingRight"); // 5 is the extra padding for text field
-        measuredHeight = labelTextField.textHeight + 4 + getStyle("paddingTop") + getStyle("paddingBottom"); // 4 is the extra padding for text field
-
-        // don't do anything with regards to minimum for the textField as it can just get truncated down anyways
+        var labelLineMetrics:TextLineMetrics = measureText(labelDisplay.text);
+
+        // Text respects padding right, left, top, and bottom
+        measuredWidth = labelLineMetrics.width + UITextField.TEXT_WIDTH_PADDING;
+        measuredWidth += getStyle("paddingLeft") + getStyle("paddingRight");
+
+        measuredHeight = labelLineMetrics.height + UITextField.TEXT_HEIGHT_PADDING;
+        measuredHeight += getStyle("paddingTop") + getStyle("paddingBottom");

         // minimum height of 80 pixels
         measuredHeight = Math.max(measuredHeight, 80);
+
+        measuredMinWidth = 0;
+        measuredMinHeight = 80;
     }

     /**
@@ -646,10 +562,36 @@

         super.updateDisplayList(unscaledWidth, unscaledHeight);

-        drawBackground();
+        drawBackground(unscaledWidth, unscaledHeight);

         layoutContents(unscaledWidth, unscaledHeight);
     }
+
+    /**
+     *  @private
+     */
+    override public function styleChanged(styleName:String):void
+    {
+        var allStyles:Boolean = !styleName || styleName == "styleName";
+
+        super.styleChanged(styleName);
+
+        if (allStyles || styleName == "inputMode")
+        {
+            addHandlers();
+        }
+
+        // pass all style changes to labelTextField.  It will deal with them
+        // appropriatley and in a performant manner
+        if (labelDisplay)
+            labelDisplay.styleChanged(styleName);
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Methods
+    //
+    //--------------------------------------------------------------------------

     /**
      *  Renders a background for the item renderer.
@@ -663,12 +605,21 @@
      *  the background is drawn in this method.  To change the appearance of
      *  the background, override this method.

      *
+     *  @param unscaledWidth Specifies the width of the component, in pixels,
+     *  in the component's coordinates, regardless of the value of the
+     *  scaleX property of the component.
+     *
+     *  @param unscaledHeight Specifies the height of the component, in pixels,
+     *  in the component's coordinates, regardless of the value of the
+     *  scaleY property of the component.
+     *
      *  @langversion 3.0
      *  @playerversion Flash 10
      *  @playerversion AIR 2.5
      *  @productversion Flex 4.5
      */
-    protected function drawBackground():void
+    protected function drawBackground(unscaledWidth:Number,
+                                      unscaledHeight:Number):void
     {
         // figure out backgroundColor
         var backgroundColor:uint;
@@ -760,39 +711,49 @@
     protected function layoutContents(unscaledWidth:Number,
                                       unscaledHeight:Number):void
     {
+        // measure the label component
+        var textWidth:Number = 0;
+        var textHeight:Number = 0;
+        var labelLineMetrics:TextLineMetrics;
+
+        if (label != "")
+        {
+            labelLineMetrics = measureText(label);
+            textWidth = labelLineMetrics.width + UITextField.TEXT_WIDTH_PADDING;
+            textHeight = labelLineMetrics.height + UITextField.TEXT_HEIGHT_PADDING;
+        }
+        else
+        {
+            labelLineMetrics = measureText("Wj");
+            // don't measured textWidth because that's what we do in Button, and it
+            // causes bugs if we do measure it in this case.  We only measure "Wj" for
+            // height purposes.
+            textHeight = labelLineMetrics.height + UITextField.TEXT_HEIGHT_PADDING;
+        }
+
         // text should take up the rest of the space
-        var labelWidth:Number = unscaledWidth;
-        labelWidth -= getStyle("paddingLeft") + getStyle("paddingRight");
-
-        // labe is positioned after the padding on the left
+        var viewWidth:Number = unscaledWidth - getStyle("paddingLeft") + getStyle("paddingRight");
+        var labelWidth:Number = Math.max(Math.min(viewWidth, textWidth), 0);
+
+        var viewHeight:Number =  unscaledHeight - getStyle("paddingTop") - getStyle("paddingBottom");
+        var labelHeight:Number = Math.max(Math.min(viewHeight, textHeight), 0);
+
+        // label is positioned after the padding on the left.  vertically aligned center
         var labelX:Number = getStyle("paddingLeft");
-
-        labelTextField.width = labelWidth;
-        labelTextField.height = labelTextField.textHeight + 4;
-
-        labelTextField.x = labelX;
-        labelTextField.y = (unscaledHeight - labelTextField.height)/2;
-    }
-
-    /**
-     *  @private
-     */
-    override public function styleChanged(styleName:String):void
-    {
-        var allStyles:Boolean = !styleName || styleName == "styleName";
-
-        super.styleChanged(styleName);
-
-        if (allStyles || styleName == "inputMode")
-        {
-            addHandlers();
-        }
-
-        if (allStyles || styleName in TEXT_CSS_STYLES)
-        {
-            recreateLabelTextFieldStyles = true;
-            invalidateProperties();
-        }
+        var labelY:Number = getStyle("paddingTop") + (viewHeight - labelHeight)/2;
+
+        labelDisplay.commitStyles();
+
+        labelDisplay.width = labelWidth;
+        labelDisplay.height = labelHeight;
+
+        labelDisplay.x = Math.round(labelX);
+        labelDisplay.y = Math.round(labelY);
+
+        // reset text if it was truncated before.  then attempt to truncate it
+        if (labelDisplay.isTruncated)
+            labelDisplay.text = label;
+        labelDisplay.truncateToFit();
     }

     //--------------------------------------------------------------------------


Two fixes:
- Added a mechanism for testing if something is already loaded after
generation. DataPacks load immediately if passed a ByteArray. Loaders will
always wait a frame, so I was going to change DataPack to follow that
behavior, but it's nice that it just works right after construction.
- If a singleton source was passed in and resulted in an error (or, now,
it can already be loaded as well) then it would incorrectly return
as the result the internal wrapper object for the single result.

git-svn-id: a1a4b28b82a3276cc491891159dd9963a0a72fae@4969 542714f4-19e9-0310-aa3c-eee0fc999fb1

--- src/as/com/threerings/util/MultiLoader.as
+++ src/as/com/threerings/util/MultiLoader.as
@@ -154,13 +154,16 @@
      * @param completeCallack the function to call when complete.
      * @param forEach whether to call the completeCallback for each source, or all-at-once at
      * the end. If forEach is used, keys will never be returned.
+     * @param isCompleteCheckFn a function to attempt to call on the dispatcher to see if
+     * it's already complete after generation.
      * @param errorTypes an Array of event types that will be dispatched by the loader.
      * If unspecifed, all the normal error event types are used.
      * @param completeType, the event complete type. If unspecifed @default Event.COMPLETE.
      */
     public function MultiLoader (
         sources :Object, generatorFn :Function, completeCallback :Function,
-        forEach :Boolean = false, errorTypes :Array = null, completeType :String = null)
+        forEach :Boolean = false, isCompleteCheckFn :String = null,
+        errorTypes :Array = null, completeType :String = null)
     {
         if (errorTypes == null) {
             errorTypes = [ ErrorEvent.ERROR, AsyncErrorEvent.ASYNC_ERROR,
@@ -173,6 +176,7 @@
         _complete = completeCallback;
         _forEach = forEach;

+        var endCheckKey :* = null;
         if (sources is Array) {
             _result = new Array();

@@ -184,6 +188,7 @@
             if (!Util.isPlainObject(sources)) {
                 // stash the singleton source
                 sources = { singleton_key: sources };
+                endCheckKey = "singleton_key";
             }
         }

@@ -198,12 +203,14 @@
             }
             _result[key] = val;
             if (val is IEventDispatcher) {
-                var ed :IEventDispatcher = IEventDispatcher(val);
-                _remaining++;
-                _targetsToKeys[ed] = key;
-                ed.addEventListener(completeType, handleComplete);
-                for each (var type :String in errorTypes) {
-                    ed.addEventListener(type, handleError);
+                if (isCompleteCheckFn == null || !val[isCompleteCheckFn]()) {
+                    var ed :IEventDispatcher = IEventDispatcher(val);
+                    _remaining++;
+                    _targetsToKeys[ed] = key;
+                    ed.addEventListener(completeType, handleComplete);
+                    for each (var type :String in errorTypes) {
+                        ed.addEventListener(type, handleError);
+                    }
                 }
             } else if (_forEach) {
                 checkReport(key);
@@ -211,7 +218,7 @@
         }

         if (!_forEach) {
-            checkReport(null);
+            checkReport(endCheckKey);
         }
     }


Расширяем утилиты для коллекций

Расширяем утилиты для коллекций

--- src/main/org/shypl/common/util/CollectionUtils.as
+++ src/main/org/shypl/common/util/CollectionUtils.as
@@ -117,6 +117,15 @@
 			}
 		}

+		public static function fill(collection:Object, value:Object):void {
+			if (!isArrayOrVector(collection)) {
+				throw new IllegalArgumentException();
+			}
+			for (var i:int = 0, l:int = collection.length; i < l; ++i) {
+				collection[i] = value;
+			}
+		}
+
 		public static function remove(collection:Object, element:Object):Boolean {
 			if (!isArrayOrVector(collection)) {
 				throw new IllegalArgumentException();
@@ -217,6 +226,12 @@
 			return new (getVectorClass(elementClass))(length, fixed);
 		}

+		public static function createVectorAndFill(elementClass:Class, length:uint, value:Object, fixed:Boolean = false):Object {
+			var vector:Object = new (getVectorClass(elementClass))(length, fixed);
+			fill(value, value);
+			return vector;
+		}
+
 		public static function arrayToVector(array:Array, elementClass:Class):Object {
 			const vector:Object = createVector(elementClass, array.length, true);
 			for (var i:int = 0; i < array.length; i++) {


Transferred from the Adobe Open Source Subversion Repository

Revision: 23243
Author:   cframpto@adobe.com
Date:     2011-12-20T00:59:57.384047Z

Log Message:
-----------
In frameworks, remove Adobe headers from all files except xml/mxml file types.  There are also a few .txt files that are license files that I didn't touch yet.

Modified Paths:
--------------
2361 paths were modified

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1258690 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/framework/src/mx/collections/IViewCursor.as
+++ frameworks/projects/framework/src/mx/collections/IViewCursor.as
@@ -1,13 +1,3 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2005-2007 Adobe Systems Incorporated
-//  All Rights Reserved.
-//
-//  NOTICE: Adobe permits you to use, modify, and distribute this file
-//  in accordance with the terms of the license agreement accompanying it.
-//
-////////////////////////////////////////////////////////////////////////////////

 package mx.collections
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 23246
Author:   cframpto@adobe.com
Date:     2011-12-20T17:40:08.069454Z

Log Message:
-----------
Rollback 23243.  If comment followed header it was stripped as well.

Modified Paths:
--------------
2361 paths were modified

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1269706 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/mx/src/mx/skins/halo/AccordionHeaderSkin.as
+++ frameworks/projects/mx/src/mx/skins/halo/AccordionHeaderSkin.as
@@ -1,3 +1,13 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2003-2007 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////

 package mx.skins.halo
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 9922
Author:   clucier@adobe.com
Date:     2009-09-02T14:07:30.149272Z

Log Message:
-----------
Several bug fixes:
- Setting element's designLayer to null now properly updates the visual representation.
- DesignLayers are now considered during InterfaceCompilation.
- XMLBuilder now supports mixed content, as such TLF content can now be imported from fx:XML.

QE notes: None
Doc notes: None
Bugs: SDK-22959, SDK-22961, SDK-22661.
Reviewer: Peter, Paul
Tests run: Full compiler cyclone, select Mustella tests that reference mx:XML, Checkin
Is noteworthy for integration: No.

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/core/SpriteVisualElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/supportClasses/GraphicElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/builder/XMLBuilder.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flash-integration/src/mx/flash/UIMovieClip.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/Grammar.jj</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/InterfaceCompiler.java</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1283317 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/spark/src/spark/core/SpriteVisualElement.as
+++ frameworks/projects/spark/src/spark/core/SpriteVisualElement.as
@@ -757,11 +757,10 @@
         _designLayer = value;

         if (_designLayer)
-        {
             _designLayer.addEventListener("layerPropertyChange", layer_PropertyChange, false, 0, true);
-            super.alpha = _alpha * _designLayer.effectiveAlpha;
-            super.visible = _visible && _designLayer.effectiveVisibility;
-        }
+
+        super.alpha = _designLayer ? _alpha * _designLayer.effectiveAlpha : _alpha;
+        super.visible = _designLayer ? _visible && _designLayer.effectiveVisibility : _visible;
     }

     //----------------------------------


Transferred from the Adobe Open Source Subversion Repository

Revision: 11639
Author:   jszeto@adobe.com
Date:     2009-11-11T01:07:34.029444Z

Log Message:
-----------
ComboBox bug fix

SDK-24104 - ComboBox should scroll the matched item to the top of the list

Made an mx_internal version of LayoutBase.getScrollPositionDeltaToElementHelper that supports aligning the position to an edge. ComboBox and DropDownList scroll the highlighted item to the top except when using the navigation keys to navigate while the dropDown is open.

Removed a bunch of comments and trace statements from ComboBox.

QE notes: None
Doc notes: None
Bugs: SDK-24104
Reviewer: Evtim
Tests run: ComboBox, DropDownList
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/ComboBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/layouts/supportClasses/LayoutBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/layouts/HorizontalLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/layouts/VerticalLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/DropDownListBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/layouts/TileLayout.as</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1285143 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/spark/src/spark/layouts/HorizontalLayout.as
+++ frameworks/projects/spark/src/spark/layouts/HorizontalLayout.as
@@ -702,7 +702,7 @@
     /**
      *  @private
      */
-    override protected function getElementBounds(index:int):Rectangle
+    override public function getElementBounds(index:int):Rectangle
     {
         if (!useVirtualLayout)
             return super.getElementBounds(index);


Fix an off-by-one error causing an occasional infinite loop

--- exporter/src/main/as/flump/export/Atlas.as
+++ exporter/src/main/as/flump/export/Atlas.as
@@ -80,7 +80,7 @@
         }

         var found :Boolean = false;
-        for (var yy :int = 0; yy < _height - h && !found; ++yy) {
+        for (var yy :int = 0; yy <= _height - h && !found; ++yy) {
             for (var xx :int = 0; xx <= _width - w; ++xx) {
                 // if our right-most pixel is masked, jump ahead by that much
                 if (maskAt(xx + w - 1, yy)) {


Transferred from the Adobe Open Source Subversion Repository

Revision: 22118
Author:   jasonsj@adobe.com
Date:     2011-08-19T22:45:54.903069Z

Log Message:
-----------
SDK-31259 CalloutSkin graphic ordering
SDK-29673 default button skins for ActionBar buttons.

Update CalloutArrow to match spec, useBackgroundGradient should be protected.

Update mobile skins test app with emphasized examples and fix Callout examples to use to contentBackgroundAppearance.

QE notes: Fixed regression from contentBackgroundAppearance. Update baselines for ActionBar accentColor tests.
Doc notes: ActionBar buttons now support emphasized (i.e. accentColor)
Bugs:
SDK-31259 slight difference in callout content for 320 and 240/160 runs
SDK-29673 accentColor not working inside ActionBarsdk
Reviewer: tkraikit, betravis
Tests run: checkintests, mustella-mobile
Is noteworthy for integration: no

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/ButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/BeveledActionButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/DefaultButtonSkin.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/DefaultTransparentActionButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile320/assets/CalloutContentBackground.fxg</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/defaults.css</path>
<path kind="file" action="A">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/DefaultTransparentNavigationButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/BeveledBackButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/CalloutSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/ActionBarButtonSkinBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/CalloutArrow.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/MobileThemeClasses.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/DefaultBeveledActionButtonSkin.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/DefaultBeveledBackButtonSkin.as</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1265142 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/mobiletheme/src/spark/skins/mobile/BeveledActionButtonSkin.as
+++ frameworks/projects/mobiletheme/src/spark/skins/mobile/BeveledActionButtonSkin.as
@@ -171,7 +171,7 @@
     override protected function drawBackground(unscaledWidth:Number, unscaledHeight:Number):void
     {
         // omit call to super.drawBackground() to apply tint instead and don't draw fill
-        var chromeColor:uint = getStyle("chromeColor");
+        var chromeColor:uint = getStyle(fillColorStyleName);

         if (colorized || (chromeColor != MobileSkin.MOBILE_THEME_DARK_COLOR))
         {


fix random stall in autoplay mode

fix random stall in autoplay mode

--- src/org/mangui/hls/stream/StreamBuffer.as
+++ src/org/mangui/hls/stream/StreamBuffer.as
@@ -129,7 +129,7 @@
                 // seek position is out of buffer : load from fragment
                 _fragmentLoader.seek(_seek_position_requested);
                 // check if we need to use alt audio fragment loader
-                if (_hls.audioTracks.length && _hls.audioTracks[_hls.audioTrack].source == AudioTrack.FROM_PLAYLIST) {
+                if (_hls.audioTracks.length && _hls.audioTrack >= 0 && _hls.audioTracks[_hls.audioTrack].source == AudioTrack.FROM_PLAYLIST) {
                     CONFIG::LOGGING {
                         Log.info("seek : need to load alt audio track");
                     }


rm unused

rm unused

--- src/org/hola/JSURLStream.as
+++ src/org/hola/JSURLStream.as
@@ -19,8 +19,6 @@
         private var _connected : Boolean;
         private var _resource : ByteArray = new ByteArray();
         public var holaManaged:Boolean = false;
-        public static var instanceCount:Number = 0;
-        public var instanceId:Number;
         public static var jsApiInited:Boolean = false;
         public static var reqCount:Number = 0;
         public var req_id:String;
@@ -28,8 +26,6 @@

         public function JSURLStream(){
             holaManaged = FragmentLoader.g_hls_mode;
-            instanceId = instanceCount;
-            instanceCount++;
             addEventListener(Event.OPEN, onOpen);
             ExternalInterface.marshallExceptions = true;
             super();


Transferred from the Adobe Open Source Subversion Repository

Revision: 8508
Author:   dloverin@adobe.com
Date:     2009-07-10T17:43:56.635743Z

Log Message:
-----------
Start unminimizeEffect after the window is restored.

Same changes on both Spark and Halo Window/WindowedApplication classes. Extra imports are cleaned up in the Spark WindowedApplication class.

Start the unminimize effect after the window is restored instead of when the window first starts being restored. This is about a 300ms difference on windows.

Also cleaned up a few unused imports and private functions.

QE Notes: Re-test in both Halo and Spark components. They both had the bug.
Doc Notes: none.
Bugs: SDK-22133
Reviewer: Glenn
tests: checkintests

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/Window.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/spark/components/WindowedApplication.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/spark/components/Window.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/WindowedApplication.as</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1249908 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/airframework/src/mx/core/WindowedApplication.as
+++ frameworks/projects/airframework/src/mx/core/WindowedApplication.as
@@ -2998,6 +2998,13 @@
         dispatchEvent(event);
         height = systemManager.stage.stageHeight;
         width = systemManager.stage.stageWidth;
+
+        // Restored from a minimized state.
+        if (event.beforeDisplayState == NativeWindowDisplayState.MINIMIZED)
+        {
+            addEventListener(EffectEvent.EFFECT_END, windowUnminimizeHandler);
+            dispatchEvent(new Event("windowUnminimize"));
+        }
     }

     /**
@@ -3020,32 +3027,6 @@
             }
         }

-        // After here, afterState is normal
-        else if (event.beforeDisplayState == NativeWindowDisplayState.MINIMIZED)
-        {
-            addEventListener(EffectEvent.EFFECT_END, windowUnminimizeHandler);
-            dispatchEvent(new Event("windowUnminimize"));
-        }
-    }
-
-    /**
-     *  @private
-     */
-    private function windowMaximizeHandler(event:Event):void
-    {
-        removeEventListener(EffectEvent.EFFECT_END, windowMaximizeHandler);
-        if (!nativeWindow.closed)
-            stage.nativeWindow.maximize();
-    }
-
-    /**
-     *  @private
-     */
-    private function windowUnmaximizeHandler(event:Event):void
-    {
-        removeEventListener(EffectEvent.EFFECT_END, windowUnmaximizeHandler);
-        if (!nativeWindow.closed)
-            stage.nativeWindow.restore();
     }

     /**


fixed reference to int.MAX_VALUE

fixed reference to int.MAX_VALUE

--- WeaveJS/src/weavejs/geom/GeometryStreamDecoder.as
+++ WeaveJS/src/weavejs/geom/GeometryStreamDecoder.as
@@ -353,7 +353,7 @@
 							prev = vertexID;
 						}
 						if (prev > 0)
-							geometry.addPartMarker(prev, int.MAX_VALUE);
+							geometry.addPartMarker(prev, Number.MAX_VALUE);

 						// if flag is < -1, it means the shapeType follows
 						if (vertexID < -1)


Transferred from the Adobe Open Source Subversion Repository

Revision: 5101
Author:   gauravj@adobe.com
Date:     2009-02-27T05:22:45.887116Z

Log Message:
-----------
Update action script files with asdoc version tags.

QE Notes: None.
Doc Notes: Please review and update as necessary.
tests: checkintests

Modified Paths:
--------------
663 paths were modified

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1263078 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/framework/src/mx/validators/CurrencyValidatorAlignSymbol.as
+++ frameworks/projects/framework/src/mx/validators/CurrencyValidatorAlignSymbol.as
@@ -19,6 +19,11 @@
  *  property.
  *
  *  @see mx.validators.CurrencyValidator
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
  */
 public final class CurrencyValidatorAlignSymbol
 {
@@ -33,18 +38,33 @@
 	/**
 	 *  Specifies "any" as the alignment of the currency symbol
 	 *  for the CurrencyValidator class.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public static const ANY:String = "any";

 	/**
 	 *  Specifies "left" as the alignment of the currency symbol
 	 *  for the CurrencyValidator class.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public static const LEFT:String = "left";

 	/**
 	 *  Specifies "right" as the alignment of the currency symbol
 	 *  for the CurrencyValidator class.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public static const RIGHT:String = "right";
 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 23247
Author:   cframpto@adobe.com
Date:     2011-12-20T19:21:13.134833Z

Log Message:
-----------
Remove ADOBE SYSTEMS license and replace with Apache license in headers - frameworks.  A 2nd pass will be needed to get the files not handled up by the scripts.

Modified Paths:
--------------
4959 paths were modified

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1284481 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/spark/src/spark/effects/supportClasses/SetActionInstance.as
+++ frameworks/projects/spark/src/spark/effects/supportClasses/SetActionInstance.as
@@ -1,11 +1,19 @@
 ////////////////////////////////////////////////////////////////////////////////
 //
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2008 Adobe Systems Incorporated
-//  All Rights Reserved.
-//
-//  NOTICE: Adobe permits you to use, modify, and distribute this file
-//  in accordance with the terms of the license agreement accompanying it.
+//  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.
 //
 ////////////////////////////////////////////////////////////////////////////////


Transferred from the Adobe Open Source Subversion Repository

Revision: 10007
Author:   egeorgie@adobe.com
Date:     2009-09-03T22:35:19.279769Z

Log Message:
-----------
Checking in on behalf of Deepa. BlendMode changes: the default blendMode is now "auto". Auto means that the blend mode of the underlying display object will be "normal" if alpha is 0 or 1, and it will be "layer" if alpha is between 0 and 1.

Additionally the skins have been updated, removing explicit blend mode for disabled state, and specifying a blend mode "normal" for some skins.

QE notes: None
Doc notes: None
Bugs: None
Reviewer: Evtim
Tests run: checkintests, basictests
Is noteworthy for integration: Yes, blendMode behavior affects Catalyst

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/StepperIncrButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/supportClasses/GraphicElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/VSliderSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/VScrollBarSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/wireframe/src/spark/skins/wireframe/VSliderSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/Group.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/ListSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/wireframe/src/spark/skins/wireframe/VScrollBarSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/ScrollBarTrackSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/StepperDecrButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/DropDownListSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/wireframe/src/spark/skins/wireframe/DropDownListSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/TextInputSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/NumericStepperSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/wireframe/src/spark/skins/wireframe/NumericStepperSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/ButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/ToggleButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/TextAreaSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/wireframe/src/spark/skins/wireframe/ButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/SpinnerSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/wireframe/src/spark/skins/wireframe/ToggleButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/wireframe/src/spark/skins/wireframe/SpinnerSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/ScrollBarDownButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/ComboBoxSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/CheckBoxSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/wireframe/src/spark/skins/wireframe/CheckBoxSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/RadioButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/HSliderSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/HScrollBarSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/wireframe/src/spark/skins/wireframe/RadioButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/wireframe/src/spark/skins/wireframe/HSliderSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/wireframe/src/spark/skins/wireframe/HScrollBarSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/PanelSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/ScrollBarUpButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/ButtonBarSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/wireframe/src/spark/skins/wireframe/PanelSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/wireframe/src/spark/skins/wireframe/ButtonBarSkin.mxml</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1285966 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/spark/src/spark/primitives/supportClasses/GraphicElement.as
+++ frameworks/projects/spark/src/spark/primitives/supportClasses/GraphicElement.as
@@ -442,17 +442,20 @@
      *  @private
      *  Storage for the blendMode property.
      */
-    private var _blendMode:String = BlendMode.NORMAL;
+    private var _blendMode:String = "auto";

     /**
      *  @private
      */
     private var blendModeChanged:Boolean;
-
-    [Inspectable(category="General", enumeration="add,alpha,darken,difference,erase,hardlight,invert,layer,lighten,multiply,normal,subtract,screen,overlay,colordodge,colorburn,exclusion,softlight,hue,saturation,color,luminosity", defaultValue="normal")]
+    private var blendModeExplicitlySet:Boolean = false;
+
+    [Inspectable(category="General", enumeration="auto,add,alpha,darken,difference,erase,hardlight,invert,layer,lighten,multiply,normal,subtract,screen,overlay,colordodge,colorburn,exclusion,softlight,hue,saturation,color,luminosity", defaultValue="auto")]

     /**
      *  A value from the BlendMode class that specifies which blend mode to use.
+     *
+     *  @default auto
      *
      *  @see flash.display.DisplayObject#blendMode
      *  @see flash.display.BlendMode
@@ -472,23 +475,54 @@
      */
     public function set blendMode(value:String):void
     {
+        if (blendModeExplicitlySet && value == _blendMode)
+            return;
+
         // FIXME (dsubrama): Temporarily exit when blendMode is set
     	// to one of the AIM blendModes; support for this will come
     	// shortly.
-        if (value == _blendMode || value == "colordodge" ||
+        if (value == "colordodge" ||
         	value =="colorburn" || value =="exclusion" ||
         	value =="softlight" || value =="hue" ||
         	value =="saturation" || value =="color"
         	|| value =="luminosity")
             return;

-        var previous:Boolean = needsDisplayObject;
-        _blendMode = value;
-        if (previous != needsDisplayObject)
-            invalidateDisplayObjectSharing();
+        //The default blendMode in FXG is 'auto'. There are only
+        //certain cases where this results in a rendering difference,
+        //one being when the alpha of the Group is > 0 and < 1. In that
+        //case we set the blendMode to layer to avoid the performance
+        //overhead that comes with a non-normal blendMode.

-        blendModeChanged = true;
-        invalidateProperties();
+        if (alpha > 0 && alpha < 1 && !blendModeExplicitlySet && value == "auto")
+        {
+            if (value != BlendMode.LAYER)
+            {
+                _blendMode = BlendMode.LAYER;
+                blendModeChanged = true;
+                invalidateProperties();
+            }
+        }
+        else if ((alpha == 1 || alpha == 0) && !blendModeExplicitlySet && value == "auto")
+        {
+            if (value != BlendMode.NORMAL)
+            {
+                _blendMode = BlendMode.NORMAL;
+                blendModeChanged = true;
+                invalidateProperties();
+            }
+        }
+        else
+        {
+            var previous:Boolean = needsDisplayObject;
+            _blendMode = value;
+            if (previous != needsDisplayObject)
+                invalidateDisplayObjectSharing();
+
+            blendModeExplicitlySet = true;
+            blendModeChanged = true;
+            invalidateProperties();
+        }
     }

     //----------------------------------
@@ -2840,7 +2874,7 @@
     {
         var result:Boolean = (alwaysCreateDisplayObject ||
         (_filters && _filters.length > 0) ||
-            blendMode != BlendMode.NORMAL || _mask ||
+            _blendMode != BlendMode.NORMAL || _mask ||
             (layoutFeatures != null && (layoutFeatures.layoutScaleX != 1 || layoutFeatures.layoutScaleY != 1 || layoutFeatures.layoutScaleZ != 1 ||
             layoutFeatures.layoutRotationX != 0 || layoutFeatures.layoutRotationY != 0 || layoutFeatures.layoutRotationZ != 0 ||
             layoutFeatures.layoutZ  != 0)) ||
@@ -3354,7 +3388,12 @@
             if (blendModeChanged || displayObjectChanged)
             {
                 blendModeChanged = false;
-                displayObject.blendMode = blendMode;
+                if (_blendMode == "auto" && alpha < 1 && alpha > 0)
+                    displayObject.blendMode = BlendMode.LAYER;
+                else if (_blendMode == "auto" && alpha == 1 || alpha == 0)
+                    displayObject.blendMode = BlendMode.NORMAL;
+                else
+                    displayObject.blendMode = _blendMode;
             }

             if (filtersChanged || displayObjectChanged)


Transferred from the Adobe Open Source Subversion Repository

Revision: 6077
Author:   hmuller@adobe.com
Date:     2009-04-09T15:43:34.506603Z

Log Message:
-----------
Removed mirroring support.

QE Notes:
Doc Notes:
Bugs:
Reviewer: Chet

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/RichEditableText2.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/supportClasses/GraphicElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Button.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/IVisualElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/supportClasses/TextGraphicElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Label.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flash-integration/src/mx/flash/UIMovieClip.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/SkinnableComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/RichEditableText.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/AdvancedLayoutFeatures.as</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1285925 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/spark/src/spark/primitives/supportClasses/GraphicElement.as
+++ frameworks/projects/spark/src/spark/primitives/supportClasses/GraphicElement.as
@@ -262,44 +262,6 @@
     //
     //--------------------------------------------------------------------------

-    //----------------------------------
-    //  mirror
-    //----------------------------------
-
-    public function get mirror():Boolean
-    {
-        return layoutFeatures && layoutFeatures.mirror;
-    }
-
-    public function set mirror(value:Boolean):void
-    {
-        if (value == mirror)
-            return;
-
-        if (layoutFeatures == null)
-            allocateLayoutFeatures();
-        layoutFeatures.mirror = value;
-        invalidateTransform();
-    }
-
-    //----------------------------------
-    //  dir
-    //----------------------------------
-
-    private var _dir:String;
-
-    public function get dir():String
-    {
-        return _dir;
-    }
-
-    public function set dir(value:String):void
-    {
-        if (_dir == value)
-            return;
-        _dir = value;
-    }
-
     /**
      *  Defines a set of adjustments that can be applied to the component's transform in a way that is
      *  invisible to the component's parent's layout. For example, if you want a layout to adjust
@@ -339,7 +301,6 @@
         layoutFeatures = new AdvancedLayoutFeatures();
         layoutFeatures.layoutX = _x;
         layoutFeatures.layoutY = _y;
-        layoutFeatures.layoutWidth = _width;
     }

     protected function invalidateTransform(changeInvalidatesLayering:Boolean = true,
@@ -2079,13 +2040,6 @@
         var oldValue:Number = _width;
         _width = value;

-        // The width is needed for the mirroring transform.
-        if (layoutFeatures)
-        {
-            layoutFeatures.layoutWidth = value;
-            invalidateTransform();
-        }
-
         dispatchPropertyChangeEvent("width", oldValue, value);

         // Invalidate the display list, since we're changing the actual height
@@ -3719,9 +3673,6 @@
             _width = width;
             _height = height;

-            if (layoutFeatures)
-                layoutFeatures.layoutWidth = width;
-
             dispatchPropertyChangeEvent("width", oldWidth, width);
             dispatchPropertyChangeEvent("height", oldHeight, height);


Transferred from the Adobe Open Source Subversion Repository

Revision: 23246
Author:   cframpto@adobe.com
Date:     2011-12-20T17:40:08.069454Z

Log Message:
-----------
Rollback 23243.  If comment followed header it was stripped as well.

Modified Paths:
--------------
2361 paths were modified

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1273862 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/rpc/src/mx/messaging/management/MBeanFeatureInfo.as
+++ frameworks/projects/rpc/src/mx/messaging/management/MBeanFeatureInfo.as
@@ -1,3 +1,13 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2005-2007 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////

 package mx.messaging.management
 {


* 更新 main.as

* 更新 main.as

--- agec/src/main.as
+++ agec/src/main.as
@@ -1,8 +1,7 @@
 package
 {
-	import flash.display.DisplayObjectContainer;
 	import flash.display.Sprite;
-	import nt.lib.util.setupStage;
+	import nt.lib.util.assert;

 	/**
 	 * 客户端主程序
@@ -13,24 +12,13 @@
 	public class main extends Sprite
 	{
 		/**
-		 * 加载器的皮肤类
-		 */
-		public var skin:Sprite;
-
-		/**
 		 * constructor
 		 *
 		 */
 		public function main()
 		{
 			super();
-
-			// 如直接启动则设置 stage 相关属性
-			if (stage)
-			{
-				setupStage(stage);
-				init();
-			}
+			assert(!stage, "不可直接启动");
 		}

 		/**


fixed bug where sortDirections would not match up if non-columns were given to setColumnKeySources().

--- WeaveData/src/weave/data/KeySets/FilteredKeySet.as
+++ WeaveData/src/weave/data/KeySets/FilteredKeySet.as
@@ -109,7 +109,6 @@
 				var union:KeySetUnion = registerDisposableChild(this, new KeySetUnion(keyInclusionLogic));
 				for each (keySet in columns)
 					union.addKeySetDependency(keySet);
-				columns = columns.filter(includeColumnsOnly);

 				if (debug && keyCompare == null)
 					trace(debugId(this), 'sort by [', columns, ']');
@@ -127,11 +126,6 @@
 			}

 			triggerCallbacks();
-		}
-
-		private function includeColumnsOnly(obj:*, i:*, a:*):Boolean
-		{
-			return obj is IAttributeColumn;
 		}

 		/**


Beautify code

Beautify code

--- asn_visualization/asn_visualization.as
+++ asn_visualization/asn_visualization.as
@@ -2,7 +2,7 @@
 {

     import com.adobe.serialization.json.JSON;
-
+
     import flare.analytics.graph.ShortestPaths;
     import flare.display.DirtySprite;
     import flare.display.LineSprite;
@@ -18,7 +18,7 @@
     import flare.vis.events.SelectionEvent;
     import flare.vis.operator.layout.BundledEdgeRouter;
     import flare.vis.operator.layout.CircleLayout;
-
+
     import flash.display.Sprite;
     import flash.events.MouseEvent;
     import flash.filters.DropShadowFilter;
@@ -27,7 +27,7 @@
     import flash.net.URLRequest;
     import flash.utils.Dictionary;
     import flash.utils.getDefinitionByName;
-
+
     import mx.core.*;
     import mx.formatters.NumberBase;
     import mx.formatters.NumberBaseRoundType;
@@ -47,7 +47,7 @@
         private static const ON_CLICK_SHOW_PATH_TO_REST_OF_THE_WORLD:uint=1;
         private static const RADIAL_LAYOUT:uint=2;

-		private static const clean_up_organization_name:Boolean = false;
+        private static const clean_up_organization_name:Boolean=false;

         public function asn_visualization()
         {
@@ -56,18 +56,18 @@
             addChild(_bar=new ProgressBar());
             _bar.bar.filters=[new DropShadowFilter(1)];

- 			var print_mode_setting:int=root.loaderInfo.parameters.print_mode;
-
- 			if (print_mode_setting)
- 			{
- 				_printing_mode = print_mode_setting;
- 			}
- 			else
- 			{
- 				_printing_mode = _printing_mode_default_setting;
- 			}
-
-
+            var print_mode_setting:int=root.loaderInfo.parameters.print_mode;
+
+            if (print_mode_setting)
+            {
+                _printing_mode=print_mode_setting;
+            }
+            else
+            {
+                _printing_mode=_printing_mode_default_setting;
+            }
+
+
             // load data file
             var ldr:URLLoader=new URLLoader(new URLRequest(get_json_url()));
             _bar.loadURL(ldr, function():void
@@ -97,7 +97,7 @@
         private var _default_node_fill_color:uint=0XFFCCCCCC;
         private var _default_node_line_color:uint=0XFF000000;
         private var _node_point_of_control_line_color:uint=0XFFFF0000;
-        private var _node_point_of_control_fill_color:uint=0XFFFF0000;
+        private var _node_point_of_control_fill_color:uint=0XFFFF0000;

         private var _detail:TextSprite;

@@ -127,14 +127,14 @@

         private var country_level_info:Object; // Country stats such as network complexity, PoC, etc.

-		private static const _printing_mode_default_setting:Boolean=false;  // Set to true to enable hiding instruction so graphs look better printed
-		private static var _printing_mode:Boolean=false;
-
-		private static var _toggle_rect_background:RectSprite;
-
-        private static var _country_info_text_border_line:LineSprite = null;
-
-
+        private static const _printing_mode_default_setting:Boolean=false; // Set to true to enable hiding instruction so graphs look better printed
+        private static var _printing_mode:Boolean=false;
+
+        private static var _toggle_rect_background:RectSprite;
+
+        private static var _country_info_text_border_line:LineSprite=null;
+
+
         public function visualize(data:Data):void
         {
             vis=new Visualization(data);
@@ -155,7 +155,7 @@
                 // remove highlight on mouse out
                 function(e:SelectionEvent):void
                 {
-                	restore_node_line_color(e.node);
+                    restore_node_line_color(e.node);
                 }));

             vis.controls.add(new ClickControl(NodeSprite, 1, function(evt:SelectionEvent):void
@@ -191,9 +191,9 @@
                     previously_clicked_node=null;
                     vis.update();
                 }));
-
-			create_toggle_rect_background();
-
+
+            create_toggle_rect_background();
+
             // add mouse-over details
             vis.controls.add(new HoverControl(NodeSprite, HoverControl.MOVE_TO_FRONT, function(evt:SelectionEvent):void
                 {
@@ -211,10 +211,10 @@

             addDetail();
             addButtons();
-
+
             if (_printing_mode)
             {
-	            hideInfoForPrinting();
+                hideInfoForPrinting();
             }

             addChild(vis);
@@ -222,33 +222,33 @@
             layout();
             vis.update();
         }
-
+
         private function create_toggle_rect_background():void
         {
-			_toggle_rect_background = new RectSprite(0,0, 600, 30);
-			_toggle_rect_background.fillColor = 0XFFF1F1F1;
-			_toggle_rect_background.lineColor = 0XFFF1F1F1;
-			_toggle_rect_background.cornerSize = 10;
-			addChild(_toggle_rect_background);
-    	}
-
-		private function hideInfoForPrinting():void
-		{
-                _edges_toogle_container.visible = false;
-                _layout_format_toggle_container.visible = false;
-				_detail.visible = false;
-                _node_click_behavior_toggle.visible = false;
-		}
-
-
-		private function make_TextSprite(sprite_text:String)
-		{
-			var _ret:TextSprite=new TextSprite(sprite_text, null, TextSprite.DEVICE);
-			_ret.font = "Helvetica";
-
-			return _ret;
-		}
-
+            _toggle_rect_background=new RectSprite(0, 0, 600, 30);
+            _toggle_rect_background.fillColor=0XFFF1F1F1;
+            _toggle_rect_background.lineColor=0XFFF1F1F1;
+            _toggle_rect_background.cornerSize=10;
+            addChild(_toggle_rect_background);
+        }
+
+        private function hideInfoForPrinting():void
+        {
+            _edges_toogle_container.visible=false;
+            _layout_format_toggle_container.visible=false;
+            _detail.visible=false;
+            _node_click_behavior_toggle.visible=false;
+        }
+
+
+        private function make_TextSprite(sprite_text:String)
+        {
+            var _ret:TextSprite=new TextSprite(sprite_text, null, TextSprite.DEVICE);
+            _ret.font="Helvetica";
+
+            return _ret;
+        }
+
         private function create_toggle_sprite(true_text:String, false_text:String, true_function:Function, false_function:Function, toggle_start:Boolean):Sprite
         {
             var ret:Sprite=new Sprite();
@@ -256,16 +256,16 @@

             var toggle_state:Boolean=toggle_start;

-            var _edges_show_text:TextSprite= make_TextSprite(true_text);
+            var _edges_show_text:TextSprite=make_TextSprite(true_text);

             _edges_show_text.name="true_text";

-            var _edges_hide_text:TextSprite=  make_TextSprite(false_text);
+            var _edges_hide_text:TextSprite=make_TextSprite(false_text);

             _edges_hide_text.name="false_text";
-
-            var _edges_slash_text:TextSprite= make_TextSprite("/");
-
+
+            var _edges_slash_text:TextSprite=make_TextSprite("/");
+
             ret.mouseChildren=false;

             ret.addChild(_edges_show_text);
@@ -321,7 +321,7 @@
         private function addButtons():void
         {
             create_edges_toogle();
-            _node_click_behavior_toggle= make_TextSprite("");
+            _node_click_behavior_toggle=make_TextSprite("");
             _node_click_behavior_toggle.textField.multiline=true;
             _node_click_behavior_toggle.buttonMode=false;

@@ -330,12 +330,12 @@

             create_layout_format_toogle(CIRCLE_LAYOUT);

-            _below_vis= make_TextSprite("XXX");
+            _below_vis=make_TextSprite("XXX");
             addChild(_below_vis);

             var number_base:NumberBase=new NumberBase();

-            _country_info_box= make_TextSprite("XXX");
+            _country_info_box=make_TextSprite("XXX");

             _country_info_box.textField.multiline=true;
             var country_info_string:String=country_info_string="<b>Country Summary:</b>\n";
@@ -346,7 +346,7 @@

             _country_info_box.htmlText=country_info_string;
             // Work around flare bug
-            _country_info_box.textFormat = _country_info_box.textFormat;
+            _country_info_box.textFormat=_country_info_box.textFormat;

             addChild(_country_info_box);

@@ -354,11 +354,11 @@

         private function addDetail():void
         {
-            _detail= make_TextSprite("");
+            _detail=make_TextSprite("");
             _detail.textField.multiline=true;
             _detail.htmlText=word_wrap_to_default(DEFAULT_DETAIL_TEXT);
-	    // Work around flare bug
-            _detail.textFormat = _detail.textFormat;
+            // Work around flare bug
+            _detail.textFormat=_detail.textFormat;
             addChild(_detail);
         }

@@ -414,9 +414,9 @@
                 node_size=Math.max(node_size, 0.3);
                 nodeSprite.size=node_size;

-				if (nodeSprite == null)
-					throw new Error("nodeSprite cannot be null");
-
+                if (nodeSprite == null)
+                    throw new Error("nodeSprite cannot be null");
+

                 if (o['asn'] == 'REST_OF_WORLD')
                 {
@@ -502,24 +502,24 @@

                 if (ret != "")
                 {
-                	if ((line_length + substring_length) > line_width)
-                	{
-                    	ret+='\n ';
-                    	line_length=1;
-                	}
-					else
-					{
-                   		ret+=' ';
-                    	line_length+=1;
-                	}
+                    if ((line_length + substring_length) > line_width)
+                    {
+                        ret+='\n ';
+                        line_length=1;
+                    }
+                    else
+                    {
+                        ret+=' ';
+                        line_length+=1;
+                    }
                 }
-
-				// Break on '-' if it's larger than 20 characters.
-				if ( (substring_length > line_width) && ( substring.search(/-/) != -1 ) )
-				{
-					substring = substring.split(/-/).join("-\n ");
-					substring_length = substring.split(/-/).pop().toString().length + 1;
-				}
+
+                // Break on '-' if it's larger than 20 characters.
+                if ((substring_length > line_width) && (substring.search(/-/) != -1))
+                {
+                    substring=substring.split(/-/).join("-\n ");
+                    substring_length=substring.split(/-/).pop().toString().length + 1;
+                }

                 ret+=substring;
                 line_length+=substring_length;
@@ -549,23 +549,24 @@
             }

             var number_base:NumberBase=new NumberBase();
-
-			var asn_name:String=data.organization_name;
-
-			if (clean_up_organization_name) {
-	            //Strip out beginning id from organization name if necessary
-    	        asn_name = asn_name.replace(/^[A-Z]*-AS /, '');
-        	    if (asn_name == data.organization_name)
-            	{
-                	asn_name=asn_name.replace(/^([A-Z-])* /, '');
-            	}
-
-           		 /*asn_name = asn_name.replace(/\s+/gm, " ");
-              	 var pattern:RegExp = /(.{1,25}\S)\s+/g;
-              	 asn_name = asn_name.replace(pattern, "|$&|$1|\n");
-             	*/
-			}
-
+
+            var asn_name:String=data.organization_name;
+
+            if (clean_up_organization_name)
+            {
+                //Strip out beginning id from organization name if necessary
+                asn_name=asn_name.replace(/^[A-Z]*-AS /, '');
+                if (asn_name == data.organization_name)
+                {
+                    asn_name=asn_name.replace(/^([A-Z-])* /, '');
+                }
+
+                /*asn_name = asn_name.replace(/\s+/gm, " ");
+                   var pattern:RegExp = /(.{1,25}\S)\s+/g;
+                   asn_name = asn_name.replace(pattern, "|$&|$1|\n");
+                 */
+            }
+
             asn_name=word_wrap_to_default(asn_name);
             ret+="<b>";
             ret+=asn_name;
@@ -764,7 +765,7 @@
             if (_edges_toogle_container)
             {
                 _edges_toogle_container.y=button_y_pos;
-                _edges_toogle_container.x = 3;
+                _edges_toogle_container.x=3;
             }

             if (_layout_format_toggle_container)
@@ -797,33 +798,33 @@
             _below_vis.y=vis.y + vis.bounds.height - 10;
             _below_vis.x=vis.y + vis.bounds.width / 2;
             _below_vis.text+="under vis " + _below_vis.y
-
+
             _below_vis.visible=false;

             if (_country_info_box)
             {
-		// We need to hard position values because we can't get accurate values for the size of the text.
-                _country_info_box.x= vis.x + vis.bounds.width - 70;
+                // We need to hard position values because we can't get accurate values for the size of the text.
+                _country_info_box.x=vis.x + vis.bounds.width - 70;
                 //_country_info_box.horizontalAnchor = TextSprite.LEFT;
-               // _country_info_box.verticalAnchor   = TextSprite.TOP;
+                // _country_info_box.verticalAnchor   = TextSprite.TOP;
                 _country_info_box.y=vis.y + vis.height - _country_info_box.height + 5;
             }

             if (!_country_info_text_border_line)
             {
-            	//TODO it would be better to create this sprite earlier and then move it.
-            	//Unfortunately moving the Sprite doesn't seem to work
-            	// Since the Sprite's location must be relative to other sprites, we have to wait
-            	// until everything else is in place
-                _country_info_text_border_line = new LineSprite();
-
-                _country_info_text_border_line.x1 = _detail.x - 10;
-                _country_info_text_border_line.x2 = _detail.x - 10;
-                _country_info_text_border_line.y1 = _detail.y - 2;
-                _country_info_text_border_line.y2 = _country_info_box.y - 20;
+                //TODO it would be better to create this sprite earlier and then move it.
+                //Unfortunately moving the Sprite doesn't seem to work
+                // Since the Sprite's location must be relative to other sprites, we have to wait
+                // until everything else is in place
+                _country_info_text_border_line=new LineSprite();
+
+                _country_info_text_border_line.x1=_detail.x - 10;
+                _country_info_text_border_line.x2=_detail.x - 10;
+                _country_info_text_border_line.y1=_detail.y - 2;
+                _country_info_text_border_line.y2=_country_info_box.y - 20;

                 addChild(_country_info_text_border_line);
-            }
+            }
         }

         private function restore_edges_color():void
@@ -842,8 +843,8 @@
             return node.data.is_point_of_control;
         }

-	    private function restore_node_line_color(node:NodeSprite):void
-	    {
+        private function restore_node_line_color(node:NodeSprite):void
+        {
             if (isPointOfControl(node))
             {
                 node.lineColor=_node_point_of_control_line_color;
@@ -851,29 +852,29 @@
             else
             {
                 node.lineColor=_default_node_line_color;
-            }
-        }
-
+            }
+        }
+
         private function restore_node_fill_color(node:NodeSprite)
         {
-        	if (isPointOfControl(node))
-        	{
-        		node.fillColor = _node_point_of_control_fill_color;
-        	}
-        	else
-        	{
-				node.fillColor=_default_node_fill_color;
-        	}
-        }
-
-
+            if (isPointOfControl(node))
+            {
+                node.fillColor=_node_point_of_control_fill_color;
+            }
+            else
+            {
+                node.fillColor=_default_node_fill_color;
+            }
+        }
+
+
         private function restore_nodes_color():void
         {
             for each (var _node:NodeSprite in vis.data.nodes)
             {
                 _node.data.highlighted=false;
                 restore_node_fill_color(_node);
-
+
                 restore_node_line_color(_node);

                 _node.focusRect=true;


Add line between info box and diagram per Mia's suggstion.

--- asn_visualization/asn_visualization.as
+++ asn_visualization/asn_visualization.as
@@ -5,8 +5,9 @@

     import flare.analytics.graph.ShortestPaths;
     import flare.display.DirtySprite;
+    import flare.display.LineSprite;
+    import flare.display.RectSprite;
     import flare.display.TextSprite;
-    import flare.display.RectSprite;
     import flare.query.methods.update;
     import flare.vis.Visualization;
     import flare.vis.controls.ClickControl;
@@ -130,6 +131,9 @@
 		private static var _printing_mode:Boolean=false;

 		private static var _toggle_rect_background:RectSprite;
+
+        private static var _country_info_text_border_line:LineSprite = null;
+

         public function visualize(data:Data):void
         {
@@ -804,6 +808,22 @@
                // _country_info_box.verticalAnchor   = TextSprite.TOP;
                 _country_info_box.y=vis.y + vis.height - _country_info_box.height + 5;
             }
+
+            if (!_country_info_text_border_line)
+            {
+            	//TODO it would be better to create this sprite earlier and then move it.
+            	//Unfortunately moving the Sprite doesn't seem to work
+            	// Since the Sprite's location must be relative to other sprites, we have to wait
+            	// until everything else is in place
+                _country_info_text_border_line = new LineSprite();
+
+                _country_info_text_border_line.x1 = _detail.x - 10;
+                _country_info_text_border_line.x2 = _detail.x - 10;
+                _country_info_text_border_line.y1 = _detail.y - 2;
+                _country_info_text_border_line.y2 = _country_info_box.y - 20;
+
+                addChild(_country_info_text_border_line);
+            }
         }

         private function restore_edges_color():void


Apache license 2.0 added.

Apache license 2.0 added.

--- tui_flashdevelop3/lib/touchAll/demos/niftySynthTouchDemo/NiftySynthTouchDemo.as
+++ tui_flashdevelop3/lib/touchAll/demos/niftySynthTouchDemo/NiftySynthTouchDemo.as
@@ -1,3 +1,20 @@
+/*
+ * Tangible User Interfacer (former TouchAll) demo code.
+ *
+ * Copyright 2016 Gonçalo Amador <g.n.p.amador@gmail.com>
+ *
+ * Licensed 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 touchAll.demos.niftySynthTouchDemo
 {
 	//import flash.ui.*;
@@ -39,4 +56,4 @@
 			ns = new NiftySynth(stage);
 		}
 	}
-}+}


Try to embed fonts in stage text emulator

git-svn-id: f8d5f742b420a6a114b58659a4f85f335318e53c@1437660 13f79535-47bb-0310-9956-ffa450edef68

--- mustella/as3/src/mustella/CompareBitmap.as
+++ mustella/as3/src/mustella/CompareBitmap.as
@@ -35,6 +35,7 @@
 import flash.net.URLLoader;
 import flash.net.URLRequest;
 import flash.text.TextField;
+import flash.text.TextFormat;
 import flash.text.engine.ContentElement;
 import flash.text.engine.TextBlock;
 import flash.text.engine.TextLine;
@@ -44,6 +45,7 @@
 import mx.core.IChildList;
 import mx.core.IRawChildrenContainer;
 import mx.core.mx_internal;
+
 use namespace mx_internal;

 /**
@@ -280,6 +282,9 @@
 			return true;
 		}

+		if (stageText)
+			updateStageTexts(actualTarget);
+
 		this.root = root;
 		this.context = context;
 		this.testResult = testResult;
@@ -306,6 +311,54 @@

 	}

+	// there are a few mobile tests that use StageText in the bitmaps
+	// which are TextFields in the emulator.  This makes them use
+	// embedded fonts to get consistency across platforms.
+	private function updateStageTexts(target:DisplayObject):void
+	{
+		var doc:DisplayObjectContainer = target as DisplayObjectContainer;
+		var tf:Object;
+		tf = findTextWidget(doc);
+		if (tf)
+		{
+			var n:int = target.stage.numChildren;
+			for (var i:int = 0; i < n; i++)
+			{
+				var stf:TextField = target.stage.getChildAt(i) as TextField;
+				if (stf)
+				{
+					var stfm:TextFormat = new TextFormat(tf.getStyle("fontFamily"),
+															tf.getStyle("fontSize"),
+															tf.getStyle("color"),
+															tf.getStyle("fontWeight") == "bold",
+															tf.getStyle("fontStyle") == "italic"
+															);
+					stf.defaultTextFormat = stfm;
+					stf.embedFonts = true;
+				}
+			}
+		}
+	}
+
+	private function findTextWidget(doc:DisplayObjectContainer):Object
+	{
+		if (!doc) return null;
+		var n:int = doc.numChildren;
+		for (var i:int = 0; i < n; i++)
+		{
+			var child:DisplayObject = doc.getChildAt(i);
+			var className:String = getQualifiedClassName(child);
+			if (className.indexOf("StyleableStageText") > -1)
+				return child;
+			else if (child is DisplayObjectContainer)
+			{
+				var tf:Object = findTextWidget(child as DisplayObjectContainer);
+				if (tf) return tf;
+			}
+		}
+		return null;
+	}
+
 	private function getTargetSize(target:DisplayObject):Point
 	{
 		var width:Number;


Transferred from the Adobe Open Source Subversion Repository

Revision: 9583
Author:   smgilson@adobe.com
Date:     2009-08-25T18:02:51.415592Z

Log Message:
-----------
Add ASDoc examples for WindowedApplication.as

Modified Paths:
--------------
<path kind="dir" action="A">/flex/sdk/trunk/frameworks/projects/airframework/asdoc/en_US</path>
<path kind="dir" action="A">/flex/sdk/trunk/frameworks/projects/airframework/asdoc/en_US/spark</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/spark/components/WindowedApplication.as</path>
<path kind="dir" action="A">/flex/sdk/trunk/frameworks/projects/airframework/asdoc/en_US/spark/components/examples</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/airframework/asdoc/en_US/spark/components/examples/TestImage.jpg</path>
<path kind="dir" action="A">/flex/sdk/trunk/frameworks/projects/airframework/asdoc/en_US/spark/components</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/airframework/asdoc/en_US/spark/components/examples/WindowedApplicationSample.mxml</path>
<path kind="dir" action="A">/flex/sdk/trunk/frameworks/projects/airframework/asdoc</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1250584 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/airspark/src/spark/components/WindowedApplication.as
+++ frameworks/projects/airspark/src/spark/components/WindowedApplication.as
@@ -390,6 +390,8 @@
  *  @langversion 3.0
  *  @playerversion AIR 1.5
  *  @productversion Flex 4
+ *
+ *  @includeExample examples/WindowedApplicationSample.mxml -noswf
  */
 public class WindowedApplication extends Application implements IWindow
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 12850
Author:   jimurphy@adobe.com
Date:     2009-12-11T14:57:14.623098Z

Log Message:
-----------
add 6 new DMV projects to the SDK:
automation
automation_air
automation_dmv
automation_flashflexkit
automation_spark
datavisualization

These projects are setup to build in an ant main call.  There are currently several warnings in the datavisualization project that will be cleaned up.  No checkintests exist for these projects as of yet.

I also modified the exisitng projects build files for easier management of the localization targets, bundle and fat-swc. If the projects that I updated:airframework,airspark,framework,playerglobal,rpc,and spark.  All the new projects have been implemented this same way.

QE notes: DMV folks should run through their tests
Doc notes: probably
Bugs: nope
Reviewer:
Tests run: ran the following targets: compile,checkintests,other.locales and doc
Is noteworthy for integration: no

Modified Paths:
--------------
1404 paths were modified

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1253412 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/charts/src/mx/charts/styles/metadata/MarginStyles.as
+++ frameworks/projects/charts/src/mx/charts/styles/metadata/MarginStyles.as
@@ -0,0 +1,32 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2009 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+/**
+ *  Number of pixels between the container's left border and its content area.
+ *  The default value is 0.
+ *
+ *  @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 container's right border and its content area.
+ *  The default value is 0.
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="paddingRight", type="Number", format="Length", inherit="no")]


Transferred from the Adobe Open Source Subversion Repository

Revision: 20742
Author:   smgilson@adobe.com
Date:     2011-03-09T21:46:11.224420Z

Log Message:
-----------
Merge 20732 - asdoc updates

QE notes:
Doc notes:
Bugs:
Reviewer:
Tests run:
Is noteworthy for integration:

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/MovieClipSWFLoader.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/framework/src/mx/formatters/SwitchSymbolFormatter.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/mx/src/mx/controls/ComboBox.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/flash-integration/src/mx/flash/UIMovieClip.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/framework/src/mx/states/State.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/IEffect.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/mx/src/mx/effects/effectClasses/UnconstrainItemActionInstance.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/mx/src/mx/controls/ColorPicker.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/flash-integration/src/mx/flash/ContainerMovieClip.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FlexNativeMenu.as</path>
<path kind="dir" action="M">/private/flex/sdk/trunk</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/effectClasses/CompositeEffectInstance.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/CompositeEffect.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/mx/src/mx/controls/TextInput.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/spark/src/mx/controls/MXFTETextInput.as</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1260902 13f79535-47bb-0310-9956-ffa450edef68


Transferred from the Adobe Open Source Subversion Repository

Revision: 20596
Author:   eday@adobe.com
Date:     2011-03-03T23:58:01.489367Z

Log Message:
-----------
Fix for SDK-29816.  Changed several ViewTransitionBase helper functions from protected to mx_internal.

QE notes:
Doc notes:
Bugs: SDK-29816
Reviewer: Chiedo
Tests run: checkintests, cyclone
Is noteworthy for integration: no

Modified Paths:
--------------
/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/transitions/ViewTransitionBase.as

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1264880 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/mobilecomponents/src/spark/transitions/ViewTransitionBase.as
+++ frameworks/projects/mobilecomponents/src/spark/transitions/ViewTransitionBase.as
@@ -1352,7 +1352,7 @@
      * @private
      * Helper method to test whether a component is visible to user.
      */
-    protected function componentIsVisible(component:UIComponent):Boolean
+    mx_internal function componentIsVisible(component:UIComponent):Boolean
     {
         return component && component.visible &&
             component.width && component.height && component.alpha;
@@ -1363,7 +1363,7 @@
      *  Helper method to add a UIComponent instance to either an IVisualElementContainer
      *  or DisplayObjectContainer.
      */
-    protected function addComponentToContainerAt(component:UIComponent,
+    mx_internal function addComponentToContainerAt(component:UIComponent,
                                                  container:UIComponent,
                                                  index:int):void
     {
@@ -1378,7 +1378,7 @@
      *  Helper method to add a UIComponent instance to either an IVisualElementContainer
      *  or DisplayObjectContainer.
      */
-    protected function addComponentToContainer(component:UIComponent,
+    mx_internal function addComponentToContainer(component:UIComponent,
                                                container:UIComponent):void
     {
         if (container is IVisualElementContainer)
@@ -1392,7 +1392,7 @@
      *  Helper method to remove a UIComponent instance from either an IVisualElementContainer
      *  or DisplayObjectContainer.
      */
-    protected function removeComponentFromContainer(component:UIComponent,
+    mx_internal function removeComponentFromContainer(component:UIComponent,
                                                     container:UIComponent):void
     {
         if (container is IVisualElementContainer)
@@ -1405,7 +1405,7 @@
      *  @private
      *  Helper method to set the child index of the given component.
      */
-    protected function setComponentChildIndex(component:UIComponent,
+    mx_internal function setComponentChildIndex(component:UIComponent,
                                               container:UIComponent,
                                               index:int):void
     {
@@ -1447,7 +1447,7 @@
      *  @private
      *  Helper method that returns index of the given component.
      */
-    protected function getComponentChildIndex(component:UIComponent, container:UIComponent):int
+    mx_internal function getComponentChildIndex(component:UIComponent, container:UIComponent):int
     {
         if (container is IVisualElementContainer)
             return IVisualElementContainer(container).getElementIndex(component);


Transferred from the Adobe Open Source Subversion Repository

Revision: 22564
Author:   tkraikit@adobe.com
Date:     2011-09-14T19:50:07.656843Z

Log Message:
-----------
Update ASDoc "@productversion Flex 4.5.2" => "@productversion Flex 4.6"

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/SpinnerListSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/LabelItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/collections/OnDemandDataProvider.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/DateSpinnerSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/TabbedViewNavigator.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/framework/src/mx/graphics/BitmapScaleMode.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/ContentBackgroundAppearance.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/framework/src/mx/core/FlexVersion.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/ArrowDirection.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/globalization/supportClasses/FormatPattern.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/DefaultTransparentNavigationButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/components/supportClasses/DropDownController.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/core/ISoftKeyboardHintClient.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/CalloutArrow.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/CalloutButton.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/CalloutActionBarSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/calendarClasses/YearProvider.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/components/supportClasses/SkinnableTextBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/components/calendarClasses/DateSelectorDisplayMode.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/ToggleSwitch.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/DefaultBeveledBackButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/SpinnerListScrollerSkin.mxml</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/components/ScrollSnappingMode.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/StageTextSkinBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/DefaultTransparentActionButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/StageTextAreaSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/SpinnerListContainer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/components/List.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/ToggleSwitchSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/calendarClasses/DateAndTimeProvider.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/CalloutViewNavigatorSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/SpinnerListContainerSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/CalloutPosition.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/components/Scroller.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/preloaders/SplashScreenImageSource.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/components/DataGroup.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/components/SkinnablePopUpContainer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/SplitViewNavigator.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/Callout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/StageTextInputSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/collections/NumericDataProvider.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/StyleableStageText.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/preloaders/SplashScreenImage.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/calendarClasses/DateSpinnerItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/SpinnerList.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/DateSpinner.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/globalization/supportClasses/CalendarDate.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/CalloutSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/DefaultBeveledActionButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/SpinnerListItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/globalization/supportClasses/DateTimeFormatterEx.as</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1284919 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/spark/src/spark/globalization/supportClasses/CalendarDate.as
+++ frameworks/projects/spark/src/spark/globalization/supportClasses/CalendarDate.as
@@ -44,7 +44,7 @@
  *  @langversion 3.0
  *  @playerversion Flash 11
  *  @playerversion AIR 3
- *  @productversion Flex 4.5.2
+ *  @productversion Flex 4.6
  */
 public class CalendarDate
 {
@@ -71,7 +71,7 @@
      *  @langversion 3.0
      *  @playerversion Flash 11
      *  @playerversion AIR 3
-     *  @productversion Flex 4.5.2
+     *  @productversion Flex 4.6
      */
     public function CalendarDate(date:Date = null)
     {
@@ -104,7 +104,7 @@
      *  @langversion 3.0
      *  @playerversion Flash 11
      *  @playerversion AIR 3
-     *  @productversion Flex 4.5.2
+     *  @productversion Flex 4.6
      */
     public function get date():Date
     {
@@ -126,7 +126,7 @@
      *  @langversion 3.0
      *  @playerversion Flash 11
      *  @playerversion AIR 3
-     *  @productversion Flex 4.5.2
+     *  @productversion Flex 4.6
      */
     public function get numDaysInMonth():int
     {
@@ -145,7 +145,7 @@
      *  @langversion 3.0
      *  @playerversion Flash 11
      *  @playerversion AIR 3
-     *  @productversion Flex 4.5.2
+     *  @productversion Flex 4.6
      */
     private static function getBeginingOfMonth(date:Date):Date
     {
@@ -162,7 +162,7 @@
      *  @langversion 3.0
      *  @playerversion Flash 11
      *  @playerversion AIR 3
-     *  @productversion Flex 4.5.2
+     *  @productversion Flex 4.6
      */
     private static function getBeginingOfNextMonth(date:Date):Date
     {
@@ -181,7 +181,7 @@
      *  @langversion 3.0
      *  @playerversion Flash 11
      *  @playerversion AIR 3
-     *  @productversion Flex 4.5.2
+     *  @productversion Flex 4.6
      */
     private static function getEndOfMonth(date:Date):Date
     {