Transferred from the Adobe Open Source Subversion Repository

Revision: 17257
Author:   chiedozi@adobe.com
Date:     2010-08-10T19:11:19.352602Z

Log Message:
-----------
Made the _source property in ViewNavigatorSection mx_internal so QE could access it
Updated SlideViewTransition to use ViewTransition's effect property instead of creating one internally

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

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/effects/SlideViewTransition.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ViewNavigatorSection.as</path>

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

--- frameworks/projects/mobilecomponents/src/spark/components/supportClasses/NavigationStack.as
+++ frameworks/projects/mobilecomponents/src/spark/components/supportClasses/NavigationStack.as
@@ -11,260 +11,260 @@

 package spark.components.supportClasses
 {
-    import flash.utils.IDataInput;
-    import flash.utils.IDataOutput;
-    import flash.utils.IExternalizable;
-    import flash.utils.getDefinitionByName;
-    import flash.utils.getQualifiedClassName;
-
-    import spark.components.supportClasses.ViewHistoryData;
-
-    import mx.core.mx_internal;
-    use namespace mx_internal;
-
-    /**
-     *  ViewNavigatorSection is a data structure that represents a stack
-     *  of Screens used by navigators.  This object consists of a vector
-     *  of ScreenData objects that contain initialization properties
-     *  for a screen.
+import flash.utils.IDataInput;
+import flash.utils.IDataOutput;
+import flash.utils.IExternalizable;
+import flash.utils.getDefinitionByName;
+import flash.utils.getQualifiedClassName;
+
+import spark.components.supportClasses.ViewHistoryData;
+
+import mx.core.mx_internal;
+use namespace mx_internal;
+
+/**
+ *  ViewNavigatorSection is a data structure that represents a stack
+ *  of Screens used by navigators.  This object consists of a vector
+ *  of ScreenData objects that contain initialization properties
+ *  for a screen.
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 10
+ *  @playerversion AIR 1.5
+ *  @productversion Flex 4
+ */
+public class ViewNavigatorSection implements IExternalizable
+{
+
+    //--------------------------------------------------------------------------
+    //
+    //  Constructor
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  Constructor.
      *
      *  @langversion 3.0
      *  @playerversion Flash 10
      *  @playerversion AIR 1.5
      *  @productversion Flex 4
      */
-    public class ViewNavigatorSection implements IExternalizable
-    {
+    public function ViewNavigatorSection()
+    {
+        super();

-        //--------------------------------------------------------------------------
-        //
-        //  Constructor
-        //
-        //--------------------------------------------------------------------------
+        _source = new Vector.<ViewHistoryData>();
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    // Variables
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     */
+    mx_internal var _source:Vector.<ViewHistoryData>;
+
+    //--------------------------------------------------------------------------
+    //
+    // Properties
+    //
+    //--------------------------------------------------------------------------
+
+    //----------------------------------
+    //  icon
+    //----------------------------------
+    /**
+     *  @private
+     */
+    private var _icon:Class;
+
+    /**
+     *  Returns the icon that should be used when this stack is represented
+     *  by a visual component.
+     */
+    public function get icon():Class
+    {
+        return _icon;
+    }
+    /**
+     *  @private
+     */
+    public function set icon(value:Class):void
+    {
+        _icon = value;
+    }
+
+    //----------------------------------
+    //  firstViewData
+    //----------------------------------
+    /**
+     * @private
+     */
+    private var _firstViewData:Object;
+
+    /**
+     * This is the initialization data to pass to the
+     * root screen when it is created.
+     */
+    public function get firstViewData():Object
+    {
+        return _firstViewData;
+    }
+
+    /**
+     * @private
+     */
+    public function set firstViewData(value:Object):void
+    {
+        _firstViewData = value;
+    }
+
+    //----------------------------------
+    //  label
+    //----------------------------------
+    /**
+     *  @private
+     */
+    private var _label:String;
+
+    /**
+     *  The label to be used when this stack is represented by
+     *  a visual component.
+     */
+    public function get label():String
+    {
+        return _label;
+    }
+
+    /**
+     *  @private
+     */
+    public function set label(value:String):void
+    {
+        _label = value;
+    }
+
+    //----------------------------------
+    //  length
+    //----------------------------------
+
+    /**
+     *  Returns the length of the stack
+     */
+    public function get length():int
+    {
+        return _source.length;
+    }
+
+    //----------------------------------
+    //  firstView
+    //----------------------------------
+    /**
+     *  @private
+     *  The backing variable for the firstView property.
+     */
+    private var _firstView:Class;
+
+    /**
+     *  This property is the object to use to initialize the root screen
+     *  of the stack.  This can be a Class, instance or Factory that creates
+     *  an object that extends Screen.
+     */
+    public function get firstView():Class
+    {
+        return _firstView;
+    }
+
+    /**
+     * @private
+     */
+    public function set firstView(value:Class):void
+    {
+        _firstView = value;
+    }
+
+    //----------------------------------
+    //  top
+    //----------------------------------
+
+    /**
+     *  Returns the object at the top of the stack.  If the
+     *  stack is empty, this propety is null.
+     */
+    mx_internal function get topView():ViewHistoryData
+    {
+        return _source.length == 0 ? null : _source[_source.length - 1];
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    // Methods
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  Clears the entire stack.
+     */
+    public function clear():void
+    {
+        _source.length = 0;
+    }
+
+    /**
+     *  Pushes a data on the top of the stack.
+     */
+    public function push(factory:Class, data:Object):void
+    {
+        _source.push(new ViewHistoryData(factory, data));
+    }
+
+    /**
+     *  Removes the top item off the stack.
+     */
+    public function pop():void
+    {
+        _source.pop();
+    }
+
+    /**
+     *  Removes all but the root object from the screen stack.
+     */
+    public function popToFirstView():void
+    {
+        if (_source.length > 1)
+            _source.length = 1;
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    // Methods: IExternalizable
+    //
+    //--------------------------------------------------------------------------
+
+    public function writeExternal(output:IDataOutput):void
+    {
+        output.writeObject(firstViewData);
+        output.writeObject(label);
+        output.writeObject(_source);
+        output.writeObject(getQualifiedClassName(icon));
+        output.writeObject(getQualifiedClassName(firstView));
+    }
+
+    public function readExternal(input:IDataInput):void
+    {
+        firstViewData = input.readObject();
+        label = input.readObject();
+        _source = input.readObject() as Vector.<ViewHistoryData>;

-        /**
-         *  Constructor.
-         *
-         *  @langversion 3.0
-         *  @playerversion Flash 10
-         *  @playerversion AIR 1.5
-         *  @productversion Flex 4
-         */
-        public function ViewNavigatorSection()
-        {
-            super();
-
-            _source = new Vector.<ViewHistoryData>();
-        }
+        var className:String = input.readObject();
+        icon = (className == "null") ? null : getDefinitionByName(className) as Class;

-        //--------------------------------------------------------------------------
-        //
-        // Variables
-        //
-        //--------------------------------------------------------------------------
-
-        /**
-         *  @private
-         */
-        private var _source:Vector.<ViewHistoryData>;
-
-        //--------------------------------------------------------------------------
-        //
-        // Properties
-        //
-        //--------------------------------------------------------------------------
-
-        //----------------------------------
-        //  icon
-        //----------------------------------
-        /**
-         *  @private
-         */
-        private var _icon:Class;
-
-        /**
-         *  Returns the icon that should be used when this stack is represented
-         *  by a visual component.
-         */
-        public function get icon():Class
-        {
-            return _icon;
-        }
-        /**
-         *  @private
-         */
-        public function set icon(value:Class):void
-        {
-            _icon = value;
-        }
-
-        //----------------------------------
-        //  firstViewData
-        //----------------------------------
-        /**
-         * @private
-         */
-        private var _firstViewData:Object;
-
-        /**
-         * This is the initialization data to pass to the
-         * root screen when it is created.
-         */
-        public function get firstViewData():Object
-        {
-            return _firstViewData;
-        }
-
-        /**
-         * @private
-         */
-        public function set firstViewData(value:Object):void
-        {
-            _firstViewData = value;
-        }
-
-        //----------------------------------
-        //  label
-        //----------------------------------
-        /**
-         *  @private
-         */
-        private var _label:String;
-
-        /**
-         *  The label to be used when this stack is represented by
-         *  a visual component.
-         */
-        public function get label():String
-        {
-            return _label;
-        }
-
-        /**
-         *  @private
-         */
-        public function set label(value:String):void
-        {
-            _label = value;
-        }
-
-        //----------------------------------
-        //  length
-        //----------------------------------
-
-        /**
-         *  Returns the length of the stack
-         */
-        public function get length():int
-        {
-            return _source.length;
-        }
-
-        //----------------------------------
-        //  firstView
-        //----------------------------------
-        /**
-         *  @private
-         *  The backing variable for the firstView property.
-         */
-        private var _firstView:Class;
-
-        /**
-         *  This property is the object to use to initialize the root screen
-         *  of the stack.  This can be a Class, instance or Factory that creates
-         *  an object that extends Screen.
-         */
-        public function get firstView():Class
-        {
-            return _firstView;
-        }
-
-        /**
-         * @private
-         */
-        public function set firstView(value:Class):void
-        {
-            _firstView = value;
-        }
-
-        //----------------------------------
-        //  top
-        //----------------------------------
-
-        /**
-         *  Returns the object at the top of the stack.  If the
-         *  stack is empty, this propety is null.
-         */
-        mx_internal function get topView():ViewHistoryData
-        {
-            return _source.length == 0 ? null : _source[_source.length - 1];
-        }
-
-        //--------------------------------------------------------------------------
-        //
-        // Methods
-        //
-        //--------------------------------------------------------------------------
-
-        /**
-         *  Clears the entire stack.
-         */
-        public function clear():void
-        {
-            _source.length = 0;
-        }
-
-        /**
-         *  Pushes a data on the top of the stack.
-         */
-        public function push(factory:Class, data:Object):void
-        {
-            _source.push(new ViewHistoryData(factory, data));
-        }
-
-        /**
-         *  Removes the top item off the stack.
-         */
-        public function pop():void
-        {
-            _source.pop();
-        }
-
-        /**
-         *  Removes all but the root object from the screen stack.
-         */
-        public function popToFirstView():void
-        {
-            if (_source.length > 1)
-                _source.length = 1;
-        }
-
-        //--------------------------------------------------------------------------
-        //
-        // Methods: IExternalizable
-        //
-        //--------------------------------------------------------------------------
-
-        public function writeExternal(output:IDataOutput):void
-        {
-            output.writeObject(firstViewData);
-            output.writeObject(label);
-            output.writeObject(_source);
-            output.writeObject(getQualifiedClassName(icon));
-            output.writeObject(getQualifiedClassName(firstView));
-        }
-
-        public function readExternal(input:IDataInput):void
-        {
-            firstViewData = input.readObject();
-            label = input.readObject();
-            _source = input.readObject() as Vector.<ViewHistoryData>;
-
-            var className:String = input.readObject();
-            icon = (className == "null") ? null : getDefinitionByName(className) as Class;
-
-            className = input.readObject();
-            firstView = (className == "null") ? null : getDefinitionByName(className) as Class;
-        }
-    }
+        className = input.readObject();
+        firstView = (className == "null") ? null : getDefinitionByName(className) as Class;
+    }
+}
 }


FLEX-35267 Updated unit test - made it easier to read, and now we're also testing GridColumnHeaderGroup.containsGlobalCoordinates(). For the test to pass I've improved the logic in GridHeaderViewLayout.getHeaderIndexAt() which, in turn, made a few functions redundant in GridColumnHeaderGroup. All tests currently pass.

--- frameworks/projects/spark/tests/spark/components/gridClasses/GridHeaderViewLayout_FLEX_35260_Tests.as
+++ frameworks/projects/spark/tests/spark/components/gridClasses/GridHeaderViewLayout_FLEX_35260_Tests.as
@@ -88,6 +88,7 @@
         private static const directions:Array = [ITSELF, N, NE, E, SE, S, SW, W, NW];

         private static const COLUMN_HEADER_RECTANGLES:String = "columnHeaderRectangles";
+        private static const COLUMN_RECTANGLES:String = "columnRectangles";
         private static const ENTIRE_HEADER_RECTANGLE:String = "headerRectangle"; //includes padding
         private static const MAIN_HEADER_VIEW_RECTANGLE:String = "mainHeaderViewRectangle";
         private static const FIXED_HEADER_VIEW_RECTANGLE:String = "fixedHeaderViewRectangle";
@@ -98,11 +99,11 @@
         private var _keyPoints:Array;

         //@TODO add cases with horizontal scroll, and also with fixed columns
-        //@TODO we probably have to account for paddingTop and paddingBottom as well
         public static var dimensions:Array = [
             /*x, y, width, header padding left, header padding top, header padding bottom, [column widths] */
-            [[10, 0, 300, 5, 0, 5, [25, 150]]],
-            [[0, 0, 300, 5, 0, 0, [25, 150]]]
+            [[/*x=*/    0, /*y=*/   0, /*width=*/   300, /*paddingLeft=*/   5, /*paddingTop=*/  0, /*paddingBottom=*/   0, /*columnWidths=*/[25, 150]]],
+            [[/*x=*/   10, /*y=*/   0, /*width=*/   300, /*paddingLeft=*/   5, /*paddingTop=*/  0, /*paddingBottom=*/   5, /*columnWidths=*/[25, 150]]],
+            [[/*x=*/   -5, /*y=*/-100, /*width=*/   200, /*paddingLeft=*/  25, /*paddingTop=*/ 12, /*paddingBottom=*/   5, /*columnWidths=*/[100, 150]]] //horizontal scroll
         ];

@@ -134,22 +135,6 @@
             _keyRectangles = null;
             _keyPoints = null;
         }
-
-        /*
-        [Ignore]
-        [Test]
-        public function test_column_index(globalPoint:Array, expectedColumnIndex:int):void
-        {
-            //given
-            var localPoint:Point = _dataGrid.grid.globalToLocal(new Point(globalPoint[0], globalPoint[1]));
-
-            //when
-            var columnIndex:int = _dataGrid.grid.getColumnIndexAt(localPoint.x, 0);
-
-            //then
-            assertEquals(expectedColumnIndex, columnIndex);
-        }
-*/

         [Test(dataProvider="dimensions")]
@@ -189,6 +174,7 @@
             {
             assertThatHeaderContainsPointOrNot(point, pointName, currentTransformation);
             assertThatHeaderIndexIsCorrect(point, pointName, currentTransformation);
+            assertThatColumnIndexIsCorrect(point, pointName, currentTransformation);
             assertThatCoordinatesOverHeaderViewOrNot(point, pointName, currentTransformation);
         }

@@ -227,6 +213,17 @@
             assertEquals(errorMessageHeaderIndex, expectedHeaderIndex, actualHeaderIndex);
         }

+        private function assertThatColumnIndexIsCorrect(point:Point, pointName:String, currentTransformation:Matrix):void
+        {
+            //when
+            var expectedColumnIndex:int = getColumnIndexAssumption(point);
+            var actualColumnIndex:int = getColumnIndexAtGlobalPoint(point);
+            const errorMessageColumnIndex:String = getColumnIndexErrorMessage(pointName, currentTransformation, point, expectedColumnIndex, actualColumnIndex);
+
+            //then
+            assertEquals(errorMessageColumnIndex, expectedColumnIndex, actualColumnIndex);
+        }
+
         private function getHeaderIndexErrorMessage(pointName:String, direction:Matrix, transformedPoint:Point, expectedColumnHeaderIndex:int, actualColumnHeaderIndex:int):String
         {
             return "The point " + pointName + " transformed with Matrix " + direction + " (resulting in " + transformedPoint + ") should be "
@@ -236,6 +233,15 @@
                     + "\n DEBUG INFO: headerRectangles=" + columnHeaderRectangles);
         }

+        private function getColumnIndexErrorMessage(pointName:String, direction:Matrix, transformedPoint:Point, expectedColumnHeaderIndex:int, actualColumnHeaderIndex:int):String
+        {
+            return "The point " + pointName + " transformed with Matrix " + direction + " (resulting in " + transformedPoint + ") should have its x value "
+                    + (expectedColumnHeaderIndex == -1 ? "outside any column bounds" : "within the column with index " + expectedColumnHeaderIndex)
+                    + " but was mistakenly found to be "
+                    + (actualColumnHeaderIndex == -1 ? "outside any column bounds" : "inside the column with index " + actualColumnHeaderIndex
+                    + "\n DEBUG INFO: columnRectangles=" + columnRectangles);
+        }
+
         private function getHeaderContainsPointErrorMessage(pointName:String, direction:Matrix, transformedPoint:Point, shouldBeContainedInHeader:Boolean, isActuallyContainedInHeader:Boolean):String
         {
             return "The point " + pointName + " transformed with Matrix " + direction + " (resulting in " + transformedPoint + ") should be "
@@ -260,6 +266,12 @@
             return _sut.getHeaderIndexAt(localPoint.x, localPoint.y);
         }

+        private function getColumnIndexAtGlobalPoint(globalPoint:Point):int
+        {
+            var localPoint:Point = _dataGrid.grid.globalToLocal(globalPoint);
+            return _dataGrid.grid.getColumnIndexAt(localPoint.x, localPoint.y);
+        }
+
         private function getHeaderShouldContainPointAssumption(point:Point):Boolean
         {
             return rectangleContainsPoint(entireHeaderRectangle, point);
@@ -277,15 +289,15 @@

         private function getHeaderIndexAssumption(point:Point):int
         {
-            return getIndexOfHeaderRectangleWhichContainsPoint(point, columnHeaderRectangles);
-        }
-
-        private function getAdjacentPoint(point:Point, direction:Matrix):Point
-        {
-            return direction.transformPoint(point);
-        }
-
-        private function getIndexOfHeaderRectangleWhichContainsPoint(point:Point, rectangles:Array):int
+            return getIndexOfRectangleWhichContainsPoint(point, columnHeaderRectangles);
+        }
+
+        private function getColumnIndexAssumption(point:Point):int
+        {
+            return getIndexOfRectangleWhichContainsPoint(point, columnRectangles);
+        }
+
+        private function getIndexOfRectangleWhichContainsPoint(point:Point, rectangles:Array):int
         {
             for (var i:int = 0; i < rectangles.length; i++)
             {
@@ -299,6 +311,11 @@
         private function rectangleContainsPoint(rectangle:Rectangle, point:Point):Boolean
         {
             return rectangle.containsPoint(point);
+        }
+
+        private function getAdjacentPoint(point:Point, direction:Matrix):Point
+        {
+            return direction.transformPoint(point);
         }

         private function generateKeyPoints(dimensions:Array, grid:DataGrid):Array
@@ -338,6 +355,7 @@
             var keyRectangles:Array = [];

             keyRectangles[COLUMN_HEADER_RECTANGLES] = generateHeaderColumnRectangles(keyPoints, dimensions);
+            keyRectangles[COLUMN_RECTANGLES] = generateColumnRectangles(keyPoints, dimensions);
             keyRectangles[ENTIRE_HEADER_RECTANGLE] = generateVisibleHeaderRectangle(keyPoints, dimensions);
             keyRectangles[MAIN_HEADER_VIEW_RECTANGLE] = generateMainHeaderViewRectangle(keyPoints, dimensions);
             keyRectangles[FIXED_HEADER_VIEW_RECTANGLE] = generateFixedHeaderViewRectangle(keyPoints, dimensions);
@@ -390,6 +408,21 @@
             return headerRectangles;
         }

+        //Note that the height and y of the rectangles doesn't matter until FLEX-35280 is fixed
+        private function generateColumnRectangles(keyPoints:Array, dimensions:Array):Array
+        {
+            var columnRectangles:Array = [];
+
+            for (var i:int = 0; i < getColumnWidths(dimensions).length; i++)
+            {
+                var topLeft:Point = keyPoints["g" + i];
+                var topRight:Point = keyPoints["g" + (i+1)];
+                columnRectangles.push(new Rectangle(topLeft.x, -10000, topRight.x - topLeft.x, Number.MAX_VALUE));
+            }
+
+            return columnRectangles;
+        }
+
         private function forEachPoint(assertThat_:Function):void
         {
             for (var pointName:String in _keyPoints)
@@ -415,6 +448,11 @@
             return _keyRectangles[COLUMN_HEADER_RECTANGLES];
         }

+        private function get columnRectangles():Array
+        {
+            return _keyRectangles[COLUMN_RECTANGLES];
+        }
+
         private function get entireHeaderRectangle():Rectangle //includes padding
         {
             return _keyRectangles[ENTIRE_HEADER_RECTANGLE] as Rectangle;


Transferred from the Adobe Open Source Subversion Repository

Revision: 14900
Author:   deeptika@adobe.com
Date:     2010-03-22T11:02:50.703900Z

Log Message:
-----------
Merging revision 14899 from 4.x branch

Setting ChartLabel's layoutDirection to LTR always, as it is similar to TextBase / RichEditableText etc.. that are mentioned on the LayoutMirroring spec.

Also using newly added LayoutDirection constants file.

QE notes:
Doc notes:
Bugs: FLEXDMV-2361 ([Mirroring] Axis titles are inverted and unreadable when layoutDirection is rtl)
Reviewer:
Tests run:
Is noteworthy for integration:

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/datavisualization/src/mx/charts/series/BarSeries.as</path>
<path kind="dir" action="M">/flex/sdk/trunk</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/datavisualization/src/mx/charts/chartClasses/ChartBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/datavisualization/src/mx/charts/chartClasses/ChartLabel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/datavisualization/src/mx/charts/series/ColumnSeries.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/datavisualization/src/mx/charts/series/PieSeries.as</path>

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

--- frameworks/projects/charts/src/mx/charts/series/PieSeries.as
+++ frameworks/projects/charts/src/mx/charts/series/PieSeries.as
@@ -20,11 +20,14 @@
 import flash.geom.Rectangle;
 import flash.text.TextFieldAutoSize;
 import flash.text.TextFormat;
+
 import mx.charts.HitData;
 import mx.charts.chartClasses.DataDescription;
 import mx.charts.chartClasses.GraphicsUtilities;
+import mx.charts.chartClasses.IAxis;
 import mx.charts.chartClasses.InstanceCache;
 import mx.charts.chartClasses.LegendData;
+import mx.charts.chartClasses.PolarChart;
 import mx.charts.chartClasses.PolarTransform;
 import mx.charts.chartClasses.Series;
 import mx.charts.renderers.WedgeItemRenderer;
@@ -37,7 +40,9 @@
 import mx.core.IDataRenderer;
 import mx.core.IFactory;
 import mx.core.IFlexDisplayObject;
+import mx.core.IFlexModuleFactory;
 import mx.core.IUITextField;
+import mx.core.LayoutDirection;
 import mx.core.UIComponent;
 import mx.core.UITextField;
 import mx.core.mx_internal;
@@ -47,9 +52,6 @@
 import mx.graphics.Stroke;
 import mx.styles.CSSStyleDeclaration;
 import mx.styles.ISimpleStyleClient;
-import mx.charts.chartClasses.PolarChart;
-import mx.charts.chartClasses.IAxis;
-import mx.core.IFlexModuleFactory;

 use namespace mx_internal;

@@ -1892,7 +1894,7 @@
         // the flash player screws up display of device fonts at very small point sizes...it blows out to large sizes instead. So if it looks
         // like fonts will be displayed at a tiny point size, just don't show them at all.
         var actualScale:Number;
-		if(chart && chart.layoutDirection == "rtl")
+		if(chart && chart.layoutDirection == LayoutDirection.RTL)
 			actualScale = r1.x - r2.x;
 		else
 			actualScale = r2.x - r1.x;


Transferred from the Adobe Open Source Subversion Repository

Revision: 8
Author:   open-source-svn-admin@adobe.com
Date:     2007-12-15T01:49:31.087529Z

Log Message:
-----------
The beginning of the open-source Flex SDK.

Populated the flex/sdk/trunk directory with an open-source subset of files from //depot/flex/sdk/...@191097 in the Faramir Perforce server. This changelist is a bit past the 3.0rc0 build.

The Ant scripts will not successfully build yet. They need to be adapted to the open-source subset.

Modified Paths:
--------------
2532 paths were modified

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


Transferred from the Adobe Open Source Subversion Repository

Revision: 7929
Author:   hmuller@adobe.com
Date:     2009-06-17T23:06:42.698986Z

Log Message:
-----------
Range et al PARB changes, Opus #1.   In addition to the changes listed below, updated
flex4tests, notably ScrollBarFrenzy, for the new API.   These changes will break
performance test suite (TwoThumbSlider.as).

Range
  valueInterval => snapInterval
  step() => changeValueByStep()
  remove protected nearestValidSize() method

Slider
  Add protected pendingValue property
  Remove protected pointClickToPosition() method

TrackBase
  Add two new protected methods: updateSkinDisplayList(), pointToValue()
  Remove the following protected properties: get trackSize:Number, thumbSize:Number
  Remove the following protected methods:
      clickOffset()
      positionToValue()
      valueToPosition()
      pointToPosition()
      positionThumb()
      sizeThumb()
      calculateThumbSize()
      calculateNewValue()

ScrollBar
  page() => changeValueByPage()

Spinner
  valueWrap => allowValueWrap

NumericStepper
  displayFormatFunction => valueFormatFunction
  extractValueFunction => valueParseFunction
  commitTextInput => make private

QE Notes: Most Mustella tests passed after the protected API changes but prior to the renames.
Doc Notes:
Bugs:
Reviewer: Jason, Chet

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/Range.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/TrackBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/HSlider.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/HScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/mediaClasses/ScrubBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/wireframe/src/spark/skins/wireframe/VideoPlayerSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/skins/spark/VideoPlayerSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/development/eclipse/flex/flex4test/src/SkinTest.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/development/eclipse/flex/flex4test/src/testWheel.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/NumericStepper.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/VSlider.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/VScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/Slider.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/TextArea.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/ScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/Spinner.as</path>
<path kind="file" action="M">/flex/sdk/trunk/development/eclipse/flex/flex4test/src/ScrollbarFrenzy.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/development/eclipse/flex/flex4test/src/flex4test.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/development/eclipse/flex/flex4test/src/components/CircularScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/development/eclipse/flex/flex4test/src/skins/CircularScrollBarSkin.mxml</path>

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

--- frameworks/projects/spark/src/spark/components/HScrollBar.as
+++ frameworks/projects/spark/src/spark/components/HScrollBar.as
@@ -67,22 +67,6 @@
     //  Overridden properties
     //
     //--------------------------------------------------------------------------
-
-    /**
-     *  The size of the track, which equals the width of the track.
-     *
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 1.5
-     *  @productversion Flex 4
-     */
-    override protected function get trackSize():Number
-    {
-        if (track)
-            return track.width;
-        else
-           return 0;
-    }

     override public function set viewport(newViewport:IViewport):void
     {
@@ -105,6 +89,43 @@
     // Methods
     //
     //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     */
+    override protected function pointToValue(x:Number, y:Number):Number
+    {
+        var r:Number = track.getLayoutBoundsWidth() - thumb.getLayoutBoundsWidth();
+        return minimum + ((r != 0) ? (x / r) * (maximum - minimum) : 0);
+    }
+
+    /**
+     *  @private
+     */
+    override protected function updateSkinDisplayList():void
+    {
+        if (!thumb || !track)
+            return;
+
+        var trackPos:Number = track.getLayoutBoundsX();
+        var trackSize:Number = track.getLayoutBoundsWidth();
+        var range:Number = maximum - minimum;
+
+        var thumbPos:Number = 0;
+        var thumbSize:Number = trackSize;
+        if (range > 0)
+        {
+            thumbSize = Math.min((pageSize / (range + pageSize)) * trackSize, trackSize)
+            thumbSize = Math.max(thumb.minWidth, thumbSize);
+            thumbPos = (value - minimum) * ((trackSize - thumbSize) / range);
+        }
+
+        if (getStyle("fixedThumbSize") === false)
+            thumb.setLayoutBoundsSize(thumbSize, NaN);
+        if (getStyle("autoThumbVisibility") === true)
+            thumb.visible = thumbSize < trackSize;
+        thumb.setLayoutBoundsPosition(Math.round(trackPos + thumbPos), thumb.getLayoutBoundsY());
+    }

     /**
      *  Update the value property and, if viewport is non null, then set
@@ -126,82 +147,6 @@
     }

-    /**
-     *  Position the thumb button based on the specified thumb position,
-     *  relative to the current X location of the track in the control.
-     *
-     *  @param thumbPos A number representing the new position of the thumb
-     *  button in the control.
-     *
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 1.5
-     *  @productversion Flex 4
-     */
-    override protected function positionThumb(thumbPos:Number):void
-    {
-        if (!thumb)
-            return;
-
-        var trackPos:Number = track ? track.x : 0;
-        thumb.setLayoutBoundsPosition(Math.round(trackPos + thumbPos), thumb.getLayoutBoundsY());
-    }
-
-    /**
-     *  @private
-     */
-    override protected function calculateThumbSize():Number
-    {
-        if (!thumb)
-            return super.calculateThumbSize();
-
-        var size:Number = (getStyle("fixedThumbSize")) ?
-            thumb.getPreferredBoundsWidth() :
-            super.calculateThumbSize();
-        return Math.max(thumb.minWidth, size);
-    }
-
-    /**
-     *  @private
-     *  Note: we're comparing the "calculated", not fixed, size of the thumb with the trackSize
-     *  to decide if the thumb should be visible.  We want to know if the thumb needs to be visible,
-     *  and the comparison would fail if we always compared the track size and the fixed thumb size.
-     *  See calculateThumbSize().
-     */
-    override protected function sizeThumb(thumbSize:Number):void
-    {
-        if (!thumb)
-            return;
-
-        thumb.setLayoutBoundsSize(thumbSize, NaN);
-        var calculatedThumbSize:Number = (getStyle("fixedThumbSize")) ?
-            super.calculateThumbSize() :
-            thumbSize;
-        if (getStyle("autoThumbVisibility"))
-            thumb.visible = calculatedThumbSize < trackSize;
-    }
-
-    /**
-     *  Returns the position of the thumb button on an HScrollBar control,
-     *  which is equal to the localX parameter.
-     *
-     *  @param localX The X position relative to the scrollbar control.
-     *
-     *  @param localY The Y position relative to the scrollbar control.
-     *
-     *  @return The position of the thumb button.
-     *
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 1.5
-     *  @productversion Flex 4
-     */
-    override protected function pointToPosition(localX:Number,
-                                                localY:Number):Number
-    {
-        return localX;
-    }
-
     /**
      *  If viewport is not null,
      *  change the horizontal scroll position for page up or page down by
@@ -216,12 +161,12 @@
      *
      *
If viewport is null,
      *  change the scroll position for page up or page down by calling
-     *  the page() method.

+     *  the changeValueByPage() method.

      *
      *  @param increase Whether the page scroll is up (true) or
      *  down (false).
      *
-     *  @see mx.components.baseClasses.TrackBase#page()
+     *  @see mx.components.baseClasses.TrackBase#changeValueByPage()
      *  @see mx.components.baseClasses.TrackBase#setValue()
      *  @see spark.core.IViewport
      *  @see spark.core.IViewport#horizontalScrollPosition
@@ -232,12 +177,12 @@
      *  @playerversion AIR 1.5
      *  @productversion Flex 4
      */
-    override public function page(increase:Boolean = true):void
+    override public function changeValueByPage(increase:Boolean = true):void
     {
         var oldPageSize:Number;
         if (viewport)
         {
-            // Want to use ScrollBar's page() implementation to get the same
+            // Want to use ScrollBar's changeValueByPage() implementation to get the same
             // animated behavior for scrollbars with and without viewports.
             // For now, just change pageSize temporarily and call the superclass
             // implementation.
@@ -245,7 +190,7 @@
             pageSize = Math.abs(viewport.getHorizontalScrollPositionDelta(
                 (increase) ? NavigationUnit.PAGE_RIGHT : NavigationUnit.PAGE_LEFT));
         }
-        super.page(increase);
+        super.changeValueByPage(increase);
         if (viewport)
             pageSize = oldPageSize;
     }
@@ -279,12 +224,12 @@
      *
      *
If viewport is null,
      *  change the scroll position for line up or line down by calling
-     *  the step() method.

+     *  the changeValueByStep() method.

      *
      *  @param increase Whether the line scoll is up (true) or
      *  down (false).
      *
-     *  @see mx.components.baseClasses.TrackBase#step()
+     *  @see mx.components.baseClasses.TrackBase#changeValueByStep()
      *  @see mx.components.baseClasses.TrackBase#setValue()
      *  @see spark.core.IViewport
      *  @see spark.core.IViewport#horizontalScrollPosition
@@ -295,12 +240,12 @@
      *  @playerversion AIR 1.5
      *  @productversion Flex 4
      */
-    override public function step(increase:Boolean = true):void
+    override public function changeValueByStep(increase:Boolean = true):void
     {
         var oldStepSize:Number;
         if (viewport)
         {
-            // Want to use ScrollBar's step() implementation to get the same
+            // Want to use ScrollBar's changeValueByStep() implementation to get the same
             // animated behavior for scrollbars with and without viewports.
             // For now, just change pageSize temporarily and call the superclass
             // implementation.
@@ -308,7 +253,7 @@
             stepSize = Math.abs(viewport.getHorizontalScrollPositionDelta(
                 (increase) ? NavigationUnit.RIGHT : NavigationUnit.LEFT));
         }
-        super.step(increase);
+        super.changeValueByStep(increase);
         if (viewport)
             stepSize = oldStepSize;
     }


We're no longer using id in the button call

--- src/flash/ZeroClipboard.as
+++ src/flash/ZeroClipboard.as
@@ -14,7 +14,6 @@

   public class ZeroClipboard extends Sprite {

-    private var id:String = '';
     private var button:Sprite;
     private var clipText:String = '';

@@ -26,8 +25,6 @@

       // import flashvars
       var flashvars:Object = LoaderInfo( this.root.loaderInfo ).parameters;
-      id = flashvars.id;
-      id = id.split("\\").join("\\\\");
       // invisible button covers entire stage
       button = new Sprite();
       button.buttonMode = true;
@@ -40,28 +37,29 @@
         // user click copies text to clipboard
         // as of flash player 10, this MUST happen from an in-movie flash click event
         System.setClipboard( clipText );
-        ExternalInterface.call( 'ZeroClipboard.dispatch', id, 'complete', clipText );
+        ExternalInterface.call( 'ZeroClipboard.dispatch', 'complete', clipText );
       });

       button.addEventListener(MouseEvent.MOUSE_OVER, function(event:Event): void {
-        ExternalInterface.call( 'ZeroClipboard.dispatch', id, 'mouseOver', null );
+        ExternalInterface.call( 'ZeroClipboard.dispatch', 'mouseOver', null );
       } );
       button.addEventListener(MouseEvent.MOUSE_OUT, function(event:Event): void {
-        ExternalInterface.call( 'ZeroClipboard.dispatch', id, 'mouseOut', null );
+        ExternalInterface.call( 'ZeroClipboard.dispatch', 'mouseOut', null );
       } );
       button.addEventListener(MouseEvent.MOUSE_DOWN, function(event:Event): void {
-        ExternalInterface.call( 'ZeroClipboard.dispatch', id, 'mouseDown', null );
+        ExternalInterface.call( 'ZeroClipboard.dispatch', 'mouseDown', null );
       } );
       button.addEventListener(MouseEvent.MOUSE_UP, function(event:Event): void {
-        ExternalInterface.call( 'ZeroClipboard.dispatch', id, 'mouseUp', null );
+        ExternalInterface.call( 'ZeroClipboard.dispatch', 'mouseUp', null );
       } );

       // external functions
       ExternalInterface.addCallback("setHandCursor", setHandCursor);
       ExternalInterface.addCallback("setText", setText);
+      ExternalInterface.addCallback("setSize", setSize);

       // signal to the browser that we are ready
-      ExternalInterface.call( 'ZeroClipboard.dispatch', id, 'load', null );
+      ExternalInterface.call( 'ZeroClipboard.dispatch', 'load', null );
     }

     public function setText(newText:String): void {


Transferred from the Adobe Open Source Subversion Repository

Revision: 8723
Author:   chaase@adobe.com
Date:     2009-07-21T23:19:39.441122Z

Log Message:
-----------
Fixed 2 areas of effects bugs (playheadTime and transform effects shared instances). Also fixed bug in GraphicElement.localToGlobal(). Fixes remaining transform effects bugs prior to feature signoff.

QE Notes: None
Doc Notes: None
Bugs: SDK-22315, sdk-22304, sdk-22302, sdk-21931, sdk-21068, sdk-20179, sdk-21069
Reviewer: Hans, Jason (GraphicElement), Glenn (SharedObjectDepot)
API Change: None
Is noteworthy for integration: No
tests: checkintests mustella spark/effects,mx/effects (run locally and in cyclone by Matt)

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/Effect.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/supportClasses/AnimateInstance.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/frameworks/projects/spark/src/spark/effects/animation/Animation.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/effectClasses/CompositeEffectInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/Fade.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/EffectInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/interpolation/NumberInterpolator.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/interpolation/RGBInterpolator.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/interpolation/HSBInterpolator.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/SharedObjectDepot.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/supportClasses/AnimateTransformInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/AnimateTransform.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/effectClasses/ParallelInstance.as</path>

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

--- frameworks/projects/framework/src/mx/effects/effectClasses/CompositeEffectInstance.as
+++ frameworks/projects/framework/src/mx/effects/effectClasses/CompositeEffectInstance.as
@@ -127,6 +127,7 @@
             timerTween.seek(value);
         else
             _playheadTime = value;
+        super.playheadTime = value;
     }

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


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@1265892 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/CalloutArrow.as
+++ frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/CalloutArrow.as
@@ -40,7 +40,7 @@
  *
  *  @langversion 3.0
  *  @playerversion AIR 3
- *  @productversion Flex 4.5.2
+ *  @productversion Flex 4.6
  */
 public class CalloutArrow extends UIComponent
 {
@@ -94,7 +94,7 @@
      *
      *  @langversion 3.0
      *  @playerversion AIR 3
-     *  @productversion Flex 4.5.2
+     *  @productversion Flex 4.6
      */
     protected var gap:Number;


Transferred from the Adobe Open Source Subversion Repository

Revision: 18437
Author:   jasonsj@adobe.com
Date:     2010-11-03T21:39:54.367666Z

Log Message:
-----------
Fixed paddingBottom handling in TextInput. paddingBottom is only honored if there is room available after paddingTop and vertical alignment.

QE notes: Update mustella known goods
Doc notes:
Bugs:
Reviewer: gruehle
Tests run: checkintests
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/TextAreaSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/TextSkinBase.as</path>

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

--- frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/TextSkinBase.as
+++ frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/TextSkinBase.as
@@ -171,23 +171,22 @@
         var paddingTop:Number = getStyle("paddingTop");
         var paddingBottom:Number = getStyle("paddingBottom");

-        var unscaledTextWdith:Number = unscaledWidth - paddingLeft - paddingRight;
-        var unscaledTextHeight:Number = unscaledHeight - paddingTop - paddingBottom;
-
-        var textTopPosition:Number = getTextTop(unscaledHeight, paddingTop);
+        var unscaledTextWidth:Number = unscaledWidth - paddingLeft - paddingRight;
+        var unscaledTextHeight:Number = unscaledHeight - paddingTop;
+        var textTopPosition:Number = getTextTop(unscaledHeight, paddingTop, paddingBottom);

         if (textDisplay)
         {
             textDisplay.commitStyles();

-            resizePart(textDisplay, unscaledTextWdith, unscaledTextHeight);
+            resizePart(textDisplay, unscaledTextWidth, unscaledTextHeight);
             positionPart(textDisplay, paddingLeft, textTopPosition);
         }

         if (promptDisplay)
         {
             promptDisplay.commitStyles();
-            resizePart(promptDisplay, unscaledTextWdith, unscaledTextHeight);
+            resizePart(promptDisplay, unscaledTextWidth, unscaledTextHeight);
             positionPart(promptDisplay, paddingLeft, textTopPosition);
         }
     }
@@ -195,14 +194,25 @@
     /**
      *  @private
      *  Specifies the location of the textDisplay and promptDisplay skin parts.
-     *  Default verticalAlign="center".
-     */
-    mx_internal function getTextTop(unscaledHeight:Number, paddingTop:Number):Number
-    {
+     *  Position is based on the following in-order: verticalAlign="middle",
+     *  paddingTop, paddingBottom.
+     */
+    mx_internal function getTextTop(unscaledHeight:Number, paddingTop:Number, paddingBottom:Number):Number
+    {
+        var textTop:Number = paddingTop;
+
         if (textDisplay)
-            return Math.max(Math.round((unscaledHeight - textDisplay.textHeight) / 2), paddingTop);
-
-        return paddingTop;
+        {
+            // verticalAlign=middle or paddingTop
+            textTop = Math.max((unscaledHeight - textDisplay.textHeight) / 2, paddingTop);
+
+            // nudge up if paddingBottom is greater than the remaining space
+            var bottomSpace:Number = unscaledHeight - (textTop + textDisplay.textHeight);
+            bottomSpace = paddingBottom - bottomSpace;
+            textTop = (bottomSpace > 0) ? Math.max(paddingTop, textTop - bottomSpace) : textTop;
+        }
+
+        return textTop;
     }

     /**


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@1251348 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/automation/src/mx/automation/delegates/containers/TabNavigatorAutomationImpl.as
+++ frameworks/projects/automation/src/mx/automation/delegates/containers/TabNavigatorAutomationImpl.as
@@ -0,0 +1,158 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package mx.automation.delegates.containers
+{
+	import flash.display.DisplayObject;
+	import flash.events.Event;
+
+	import mx.automation.Automation;
+	import mx.automation.IAutomationObject;
+	import mx.automation.IAutomationTabularData;
+	import mx.automation.events.AutomationRecordEvent;
+	import mx.containers.TabNavigator;
+	import mx.core.mx_internal;
+
+	use namespace mx_internal;
+
+	[Mixin]
+	/**
+	 *
+	 *  Defines the methods and properties required to perform instrumentation for the
+	 *  TabNavigator class.
+	 *
+	 *  @see mx.containers.TabNavigator
+	 *
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
+	 */
+	public class TabNavigatorAutomationImpl extends ViewStackAutomationImpl
+	{
+		include "../../../core/Version.as";
+
+		//--------------------------------------------------------------------------
+		//
+		//  Class methods
+		//
+		//--------------------------------------------------------------------------
+
+
+		/**
+		 *  Registers the delegate class for a component class with automation manager.
+		 *
+		 *  @param root The SystemManger of the application.
+		 *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 9
+		 *  @playerversion AIR 1.1
+		 *  @productversion Flex 3
+		 */
+		public static function init(root:DisplayObject):void
+		{
+			Automation.registerDelegateClass(TabNavigator, TabNavigatorAutomationImpl);
+		}
+
+		//--------------------------------------------------------------------------
+		//
+		//  Constructor
+		//
+		//--------------------------------------------------------------------------
+
+		/**
+		 *  Constructor.
+		 * @param obj TabNavigator object to be automated.
+		 *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 9
+		 *  @playerversion AIR 1.1
+		 *  @productversion Flex 3
+		 */
+		public function TabNavigatorAutomationImpl(obj:TabNavigator)
+		{
+			super(obj);
+		}
+
+		/**
+		 *  @private
+		 *  storage for the owner component
+		 */
+		protected function get tabNavigator():TabNavigator
+		{
+			return uiComponent as TabNavigator;
+		}
+
+		/**
+		 *  @private
+		 */
+		override public function get automationTabularData():Object
+		{
+			var delegate:IAutomationObject
+			= tabNavigator.getTabBar() as IAutomationObject;
+
+			return delegate.automationTabularData;
+		}
+
+
+		/**
+		 *  Replays ItemClickEvents by dispatching a MouseEvent to the item that was
+		 *  clicked.
+		 *
+		 *  @param interaction The event to replay.
+		 *
+		 *  @return true if the replay was successful. Otherwise, returns false.
+		 *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 9
+		 *  @playerversion AIR 1.1
+		 *  @productversion Flex 3
+		 */
+		override public function replayAutomatableEvent(interaction:Event):Boolean
+		{
+			var replayer:IAutomationObject =
+				tabNavigator.getTabBar() as IAutomationObject ;
+			return replayer.replayAutomatableEvent(interaction);
+		}
+
+		//--------------------------------------------------------------------------
+		//
+		//  Event handlers
+		//
+		//--------------------------------------------------------------------------
+
+		/**
+		 *  Method which gets called after the component has been initialized.
+		 *  This can be used to access any sub-components and act on the component.
+		 *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 9
+		 *  @playerversion AIR 1.1
+		 *  @productversion Flex 3
+		 */
+		override protected function componentInitialized():void
+		{
+			super.componentInitialized();
+			tabNavigator.getTabBar().addEventListener(AutomationRecordEvent.RECORD,
+				tabBar_recordHandler, false, 0, true);
+		}
+
+		/**
+		 *  @private
+		 */
+		private function tabBar_recordHandler(event:AutomationRecordEvent):void
+		{
+			recordAutomatableEvent(event.replayableEvent);
+		}
+
+	}
+}


added doubleBind()

added doubleBind()

--- WeaveData/src/weave/utils/EventUtils.as
+++ WeaveData/src/weave/utils/EventUtils.as
@@ -20,6 +20,8 @@
 package weave.utils
 {
 	import flash.events.Event;
+	import flash.events.EventDispatcher;
+	import flash.events.IEventDispatcher;
 	import flash.events.TimerEvent;
 	import flash.utils.Dictionary;
 	import flash.utils.Timer;
@@ -34,7 +36,27 @@
 	 * @author adufilie
 	 */
 	public class EventUtils
-	{
+	{
+		/**
+		 * This function sets up a two-way binding.  Upon calling this function, the value from the primary host's property will be copied to the secondary host's property.
+		 * @param primaryHost The first host.
+		 * @param primaryProperty The name of the property on the first host.
+		 * @param secondaryHost The second host.
+		 * @param secondaryProperty The name of a property on the second host.
+		 */
+		public static function doubleBind(primaryHost:IEventDispatcher, primaryProperty:String, secondaryHost:IEventDispatcher, secondaryProperty:String):void
+		{
+			BindingUtils.bindSetter(function(primaryValue:Object):void {
+				if (secondaryHost[secondaryProperty] !== primaryValue)
+					secondaryHost[secondaryProperty] = primaryValue;
+			}, primaryHost, primaryProperty);
+			BindingUtils.bindSetter(function(secondaryValue:Object):void {
+				if (primaryHost[primaryProperty] !== secondaryValue)
+					primaryHost[primaryProperty] = secondaryValue;
+			}, secondaryHost, secondaryProperty);
+		}
+
+
 		/**
 		 * This maps a bindable parent to a Dictionary.
 		 * That Dictionary maps a callback function to a change watcher that calls it.


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@1262014 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/framework/src/mx/managers/marshalClasses/ToolTipManagerMarshalMixin.as
+++ frameworks/projects/framework/src/mx/managers/marshalClasses/ToolTipManagerMarshalMixin.as
@@ -1,3 +1,13 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2005-2006 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.managers.marshalClasses
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 17970
Author:   egeorgie@adobe.com
Date:     2010-09-30T21:32:24.300370Z

Log Message:
-----------
Fix SDK-27642 Unnecessary Measure for Mobile Programmatic Skins

In this change:
- introduce new protected APIs in MobileSkin, MobileItemRenderer for resizing and positioning elements.
- update Mobile skin code to use new APIs instead of setting explicitly x, y, width, height
- update FXG assetes to make elements pixel aligned
- update Mobile skin code to assume FXG assest are always pixel aligned

QE notes: Verify skins look as expected; mobile item renderers layout as expected
Doc notes: None.
Bugs: SDK-27642
Reviewer: Glenn, Jason S, Jason SJ, Ryan
Tests run: full mobile mustella
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/VScrollBarTrackSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/ButtonSkinBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/assets/Button_down.fxg</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/MobileSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/assets/CheckBox_upSelected.fxg</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/src/spark/skins/mobile/ActionBarSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/TextInputSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ActionButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/VScrollBarSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/VScrollBarThumbSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/assets/CheckBox_down.fxg</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/MobileIconItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/assets/Button_up.fxg</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/TextAreaSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/HScrollBarTrackSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/assets/CheckBox_downSelected.fxg</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/CheckBoxSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/assets/CheckBox_up.fxg</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/NavigationButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/HScrollBarThumbSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/HScrollBarSkin.as</path>

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

--- frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/ButtonSkinBase.as
+++ frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/ButtonSkinBase.as
@@ -22,6 +22,8 @@
     import flash.text.TextFormatAlign;
     import flash.text.TextLineMetrics;

+    import mx.core.IFlexDisplayObject;
+    import mx.core.ILayoutElement;
     import mx.core.IUITextField;
     import mx.core.UIComponent;
     import mx.core.UITextField;
@@ -229,13 +231,14 @@
             var iconHeight:Number = iconInstance ? iconInstance.height : 0;
             var w:Number = 0;
             var h:Number = 0;
-
+
+            // FIXME (egeorgie): should be checking for & using ILayoutElement interface, IFlexDisplayObject
             if (iconInstance is UIComponent)
             {
                 iconWidth = UIComponent(iconInstance).getExplicitOrMeasuredWidth();
                 iconHeight = UIComponent(iconInstance).getExplicitOrMeasuredHeight();
             }
-
+
             if (iconPlacement == IconPlacement.LEFT ||
                 iconPlacement == IconPlacement.RIGHT)
             {
@@ -314,10 +317,10 @@

             if (iconInstance)
             {
-                if (iconInstance is UIComponent)
-                {
-                    iconWidth = UIComponent(iconInstance).getExplicitOrMeasuredWidth();
-                    iconHeight = UIComponent(iconInstance).getExplicitOrMeasuredHeight();
+                if (iconInstance is ILayoutElement)
+                {
+                    iconWidth = ILayoutElement(iconInstance).getPreferredBoundsWidth();
+                    iconHeight = ILayoutElement(iconInstance).getPreferredBoundsHeight();
                 }
                 else
                 {
@@ -423,10 +426,8 @@
             }

             labelDisplay.commitStyles();
-            labelDisplay.x = Math.max(0, Math.round(labelX));
-            labelDisplay.y = Math.max(0, Math.round(labelY));
-            labelDisplay.height = labelHeight;
-            labelDisplay.width = labelWidth;
+            resizePart(labelDisplay, labelWidth, labelHeight);
+            positionPart(labelDisplay, Math.max(0, Math.round(labelX)), Math.max(0, Math.round(labelY)));

             // before truncating text, we need to reset it to its original value
             if (hostComponent && labelDisplay.isTruncated)
@@ -438,10 +439,8 @@
             }

             labelDisplayShadow.commitStyles();
-            labelDisplayShadow.x = Math.max(0, Math.round(labelX));
-            labelDisplayShadow.y = Math.max(0, Math.round(labelY + 1));
-            labelDisplayShadow.height = labelHeight;
-            labelDisplayShadow.width = labelWidth;
+            resizePart(labelDisplayShadow, labelWidth, labelHeight);
+            positionPart(labelDisplayShadow, Math.max(0, Math.round(labelX)), Math.max(0, Math.round(labelY + 1)));

             // if labelDisplay is truncated, then push it down here as well.
             // otherwise, it would have gotten pushed in the labelDisplay_valueCommitHandler()
@@ -449,9 +448,9 @@
                 labelDisplayShadow.text = labelDisplay.text;

             if (iconInstance)
-            {
-                iconInstance.x = Math.max(0, Math.round(iconX));
-                iconInstance.y = Math.max(0, Math.round(iconY));
+            {
+                resizePart(iconInstance, iconWidth, iconHeight);
+                positionPart(iconInstance, Math.max(0, Math.round(iconX)), Math.max(0, Math.round(iconY)));
             }
         }


CustomTree horizontal scroll now calculates correctly (based on visible items only).

--- WeaveUI/src/weave/ui/CustomTree.as
+++ WeaveUI/src/weave/ui/CustomTree.as
@@ -7,6 +7,7 @@
 	import mx.controls.Tree;
 	import mx.core.ScrollPolicy;
 	import mx.core.mx_internal;
+	import mx.utils.ObjectUtil;

 	import weave.utils.EventUtils;

@@ -15,9 +16,10 @@
 	 */
 	public class CustomTree extends Tree
 	{
-		public function CustomTree(){
+		public function CustomTree()
+		{
 			super();
-			horizontalScrollPolicy = ScrollPolicy.AUTO;
+			addEventListener("scroll", updateHScrollLater);
 		}

 		// we need to override maxHorizontalScrollPosition because setting
@@ -39,7 +41,7 @@

 		override public function set maxHorizontalScrollPosition(value:Number):void
 		{
-			if (_scrollInvalid)
+			if (ObjectUtil.numericCompare(mx_internal::_maxHorizontalScrollPosition, value) != 0)
 			{
 				mx_internal::_maxHorizontalScrollPosition = value;
 				dispatchEvent(new Event("maxHorizontalScrollPositionChanged"));
@@ -47,40 +49,38 @@
 				scrollAreaChanged = true;
 				invalidateDisplayList();
 			}
-			else
-			{
-				super.maxHorizontalScrollPosition = value;
-				_invalidateScrollLater();
-			}
 		}

-		private var _invalidateScrollLater:Function = EventUtils.generateDelayedCallback(this, _invalidateScroll);
-		private var _scrollInvalid:Boolean = false;
-		private function _invalidateScroll():void
+		private const updateHScrollLater:Function = EventUtils.generateDelayedCallback(this, updateHScrollNow, 0);
+
+		private function updateHScrollNow():void
 		{
-			_scrollInvalid = true;
-			invalidateDisplayList();
+			// we call measureWidthOfItems to get the max width of the item renderers.
+			// then we see how much space we need to scroll, setting maxHorizontalScrollPosition appropriately
+			var widthOfVisibleItems:int = measureWidthOfItems(verticalScrollPosition - offscreenExtraRowsTop, listItems.length);
+			var maxHSP:Number = widthOfVisibleItems - (unscaledWidth - viewMetrics.left - viewMetrics.right);
+
+			var hspolicy:String = ScrollPolicy.ON;
+			if (maxHSP <= 0)
+			{
+				maxHSP = 0;
+				horizontalScrollPosition = 0;
+
+				// horizontal scroll is kept on except when there is no vertical scroll
+				// this avoids an infinite hide/show loop where hiding/showing the h-scroll bar affects the max h-scroll value
+				if (maxVerticalScrollPosition == 0)
+					hspolicy = ScrollPolicy.OFF;
+			}
+
+			maxHorizontalScrollPosition = maxHSP;
+
+			if (horizontalScrollPolicy != hspolicy)
+				horizontalScrollPolicy = hspolicy;
 		}

 		override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
 		{
-			if (_scrollInvalid)
-			{
-				// we call measureWidthOfItems to get the max width of the item renderers.
-				// then we see how much space we need to scroll, setting maxHorizontalScrollPosition appropriately
-				var diffWidth:Number = /*measureWidthOfItems(0,0)*/measuredWidth - (unscaledWidth - viewMetrics.left - viewMetrics.right);
-
-				if (diffWidth <= 0)
-					maxHorizontalScrollPosition = NaN;
-				else
-					maxHorizontalScrollPosition = diffWidth;
-
-				_scrollInvalid = false;
-			}
-			else
-			{
-				_invalidateScrollLater();
-			}
+			updateHScrollLater();

 			// If showRoot is false and root is showing, force commitProperties() to fix the problem.
 			// This workaround requires that the data descriptor reports that the root item is a branch and it has children, even if it doesn't.


Cleaned up DataGridView - removed unused, commented code; changed size handler so columns layout properly.

--- frameworks/as/projects/FlexJSJX/src/org/apache/flex/html/staticControls/beads/DataGridView.as
+++ frameworks/as/projects/FlexJSJX/src/org/apache/flex/html/staticControls/beads/DataGridView.as
@@ -59,9 +59,6 @@

 			var sharedModel:IDataGridModel = _strand.getBeadByType(IBeadModel) as IDataGridModel;

-			//background = new Shape();
-			//DisplayObjectContainer(_strand).addChild(background);
-
 			// create an array of columnLabels for use by the ButtonBar/DataGrid header.
 			var columnLabels:Array = new Array();
 			var buttonWidths:Array = new Array();
@@ -122,32 +119,19 @@
 			var value:Object = ValuesManager.valuesImpl.getValue(_strand, "background-color");
 			if (value != null) backgroundColor = Number(value);

-			//background.graphics.clear();
-			//background.graphics.beginFill(backgroundColor);
-			//background.graphics.drawRect(0,0,sw,sh);
-			//background.graphics.endFill();
-
 			buttonBar.x = 0;
 			buttonBar.y = 0;
-			buttonBar.width = sw;
+			buttonBar.width = sw + (2*columns.length-1);
 			buttonBar.height = 25;

 			columnContainer.x = 0;
 			columnContainer.y = 30;
-			columnContainer.width = sw;
+			columnContainer.width = sw + columns.length*2;
 			columnContainer.height = sh - 25;
-
-			var colXpos:Number = 0;

 			for(var i:int=0; i < columns.length; i++) {
 				var column:List = columns[i];
-
-				var cw:Number = sw/(columns.length);
-				column.y = 0;
-				column.x = colXpos;
-				column.height = columnContainer.height; // this will actually be Nitem*rowHeight
-
-				colXpos += column.width;
+				column.height = columnContainer.height; // this will actually be Nitem*rowHeight eventually
 			}

 			IEventDispatcher(_strand).dispatchEvent(new Event("layoutComplete"));
@@ -172,6 +156,7 @@
 		private function columnListRollOverHandler(event:Event):void
 		{
 			var list:List = event.target as List;
+			if (list == null) return;
 			for(var i:int=0; i < columns.length; i++) {
 				if (list != columns[i]) {
 					var otherList:List = columns[i] as List;


M Do not wait for mouse input to update a node when added to ArcBallController

--- src/aerys/minko/scene/controller/camera/ArcBallController.as
+++ src/aerys/minko/scene/controller/camera/ArcBallController.as
@@ -2,6 +2,7 @@
 {
 	import aerys.minko.render.Viewport;
 	import aerys.minko.scene.controller.EnterFrameController;
+	import aerys.minko.scene.node.ISceneNode;
 	import aerys.minko.scene.node.Scene;
 	import aerys.minko.type.math.Matrix4x4;
 	import aerys.minko.type.math.Vector4;
@@ -65,6 +66,13 @@
 			dispatcher.removeEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler);
 		}

+		override protected function targetAddedHandler(ctrl:EnterFrameController, target:ISceneNode):void
+		{
+			super.targetAddedHandler(ctrl, target);
+
+			_update = true;
+		}
+
 		override protected function sceneEnterFrameHandler(scene		: Scene,
 														   viewport		: Viewport,
 														   destination	: BitmapData,


handle being a bead on a component as well as a view

--- frameworks/as/projects/FlexJSJX/src/org/apache/flex/html/beads/layouts/LayoutChangeNotifier.as
+++ frameworks/as/projects/FlexJSJX/src/org/apache/flex/html/beads/layouts/LayoutChangeNotifier.as
@@ -77,7 +77,10 @@
 			if (_value !== value)
             {
                 _value = value;
-                IBeadView(_strand).host.dispatchEvent(new Event("layoutNeeded"));
+                if (_strand is IBeadView)
+                    IBeadView(_strand).host.dispatchEvent(new Event("layoutNeeded"));
+                else
+                    IEventDispatcher(_strand).dispatchEvent(new Event("layoutNeeded"));
             }
 		}


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@1251482 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/automation/src/mx/automation/delegates/controls/SWFLoaderAutomationImpl.as
+++ frameworks/projects/automation/src/mx/automation/delegates/controls/SWFLoaderAutomationImpl.as
@@ -1,3 +1,13 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.
+//
+////////////////////////////////////////////////////////////////////////////////

 package mx.automation.delegates.controls
 {


fixed bug where first key was being skipped in SpatialIndex.

--- WeaveUISpark/src/weave/utils/SpatialIndex.as
+++ WeaveUISpark/src/weave/utils/SpatialIndex.as
@@ -59,11 +59,11 @@
 		private var callbacks:ICallbackCollection;

 		private var _kdTree:KDTree = new KDTree(5);
-		private var _prevTriggerCounter:uint = 0; // used by iterative tasks & clear()
 		private const _keysArray:Array = []; // of IQualifiedKey
 		private var _keyToBoundsMap:Dictionary = new Dictionary(); // IQualifiedKey -> Array of IBounds2D
 		private var _keyToGeometriesMap:Dictionary = new Dictionary(); // IQualifiedKey -> Array of GeneralizedGeometry or ISimpleGeometry

+		private var _restarted:Boolean = false; // used by async code
 		private var _queryMissingBounds:Boolean; // used by async code
 		private var _keysArrayIndex:int; // used by async code
 		private var _keysIndex:int; // used by async code
@@ -121,24 +121,36 @@
 			if (debug)
 				debugTrace(plotter,this,'createIndex');

+			_plotter = plotter;
 			_queryMissingBounds = queryMissingBounds;
+			_restarted = true;
+
+			_iterateAll(-1); // restart from first task
+			// normal priority because some things can be done without having a fully populated spatial index (?)
+			WeaveAPI.StageUtils.startTask(this, _iterateAll, WeaveAPI.TASK_PRIORITY_NORMAL, callbacks.triggerCallbacks);
+		}
+
+		private const _iterateAll:Function = StageUtils.generateCompoundIterativeTask(_iterate0, _iterate1, _iterate2);
+
+		private function _iterate0():Number
+		{
+			_restarted = false;

 			var key:IQualifiedKey;
 			var bounds:IBounds2D;
 			var i:int;

-			if (plotter is IPlotterWithGeometries)
+			if (_plotter is IPlotterWithGeometries)
 				_keyToGeometriesMap = new Dictionary();
 			else
 				_keyToGeometriesMap = null;

 			_keysArray.length = 0; // hack to prevent callbacks
 			clear();
-			_plotter = plotter;
-
+
 			// make a copy of the keys vector
-			if (plotter)
-				VectorUtils.copy(plotter.filteredKeySet.keys, _keysArray);
+			if (_plotter)
+				VectorUtils.copy(_plotter.filteredKeySet.keys, _keysArray);

 			// if auto-balance is disabled, randomize insertion order
 			if (!_kdTree.autoBalance)
@@ -150,27 +162,15 @@
 			if (debug)
 				debugTrace(_plotter,this,'keys',_keysArray.length);

-			// insert bounds-to-key mappings in the kdtree
-			_prevTriggerCounter = callbacks.triggerCounter; // used to detect change during iterations
-			_iterateAll(-1); // restart from first task
-			// normal priority because some things can be done without having a fully populated spatial index (?)
-			WeaveAPI.StageUtils.startTask(this, _iterateAll, WeaveAPI.TASK_PRIORITY_NORMAL, callbacks.triggerCallbacks);
-		}
-
-		private const _iterateAll:Function = StageUtils.generateCompoundIterativeTask(_iterate1, _iterate2);
+			return 1;
+		}

 		private function _iterate1(stopTime:int):Number
 		{
-			// stop if callbacks were triggered since the iterations started
-			if (callbacks.triggerCounter != _prevTriggerCounter)
-			{
-				if (debug)
-					debugTrace(_plotter,this,'trigger counter changed');
-				return 0;
-			}
-
 			for (; _keysIndex < _keysArray.length; _keysIndex++)
 			{
+				if (_restarted)
+					return 0;
 				if (getTimer() > stopTime)
 					return _keysIndex / _keysArray.length;

@@ -179,6 +179,8 @@
 				if (!boundsArray)
 					_keyToBoundsMap[key] = boundsArray = [];

+				// this may trigger callbacks, which would cause us to skip the new key
+				// at index 0 if we did not have _iterate0 as part of the async task
 				_plotter.getDataBoundsFromRecordKey(key, boundsArray);

 				if (_keyToGeometriesMap != null)
@@ -187,7 +189,8 @@
 					_keyToGeometriesMap[key] = geoms;
 				}
 			}
-			return 1;
+
+			return _restarted ? 0 : 1;
 		}

 		private function _iterate2(stopTime:int):Number
@@ -208,6 +211,8 @@
 				}
 				for (; _boundsArrayIndex < _boundsArray.length; _boundsArrayIndex++) // iterate on nested array
 				{
+					if (_restarted)
+						return 0;
 					if (getTimer() > stopTime)
 						return _keysArrayIndex / _keysArray.length;

@@ -224,7 +229,8 @@
 				// all done with nested array
 				_boundsArray = null;
 			}
-			return 1;
+
+			return _restarted ? 0 : 1;
 		}

 		/**


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@1282778 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/spark/src/spark/components/supportClasses/SkinnableContainerBase.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/SkinnableContainerBase.as
@@ -1,11 +1,19 @@
 ////////////////////////////////////////////////////////////////////////////////
 //
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2008 Adobe Systems Incorporated
-//  All Rights Reserved.
+//  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
 //
-//  NOTICE: Adobe permits you to use, modify, and distribute this file
-//  in accordance with the terms of the license agreement accompanying it.
+//      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: 20645
Author:   smgilson@adobe.com
Date:     2011-03-07T18:55:33.807951Z

Log Message:
-----------
ASDoc updates

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

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/StyleableTextField.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/TextInputOperation.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/Skin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/SkinnableContainerBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/ItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/GroupBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/SkinnableComponent.as</path>

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

--- frameworks/projects/spark/src/spark/components/supportClasses/SkinnableContainerBase.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/SkinnableContainerBase.as
@@ -100,6 +100,11 @@
      *  Enter key is the same as clicking this Button control.
      *
      *  @default null
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function get defaultButton():IFlexDisplayObject
     {


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@1260421 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/framework/src/mx/effects/effectClasses/HideShowEffectTargetFilter.as
+++ frameworks/projects/framework/src/mx/effects/effectClasses/HideShowEffectTargetFilter.as
@@ -20,6 +20,11 @@
  *  by modifying their visible property.
  *  If you set the Effect.filter property to hide
  *  or show, one of these is used.
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
  */
 public class HideShowEffectTargetFilter extends EffectTargetFilter
 {
@@ -33,6 +38,11 @@

 	/**
 	 *  Constructor.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public function HideShowEffectTargetFilter()
 	{
@@ -55,6 +65,11 @@
 	 *  Determines if this is a show or hide filter.
 	 *
 	 *  @default true
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public var show:Boolean = true;


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@1252194 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkTextInputAutomationImpl.as
+++ frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkTextInputAutomationImpl.as
@@ -1,13 +1,3 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  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.
-//
-////////////////////////////////////////////////////////////////////////////////

 package spark.automation.delegates.components
 {


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@1251428 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/automation/src/mx/automation/delegates/controls/ListBaseContentHolderAutomationImpl.as
+++ frameworks/projects/automation/src/mx/automation/delegates/controls/ListBaseContentHolderAutomationImpl.as
@@ -1,3 +1,13 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.
+//
+////////////////////////////////////////////////////////////////////////////////

 package mx.automation.delegates.controls
 {


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@1248551 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/advancedgrids/src/mx/controls/advancedDataGridClasses/AdvancedDataGridGroupItemRenderer.as
+++ frameworks/projects/advancedgrids/src/mx/controls/advancedDataGridClasses/AdvancedDataGridGroupItemRenderer.as
@@ -1,3 +1,13 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.
+//
+////////////////////////////////////////////////////////////////////////////////

 package mx.controls.advancedDataGridClasses
 {


Fix for https://issues.apache.org/jira/browse/FLEX-34189

--- frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/ActionBarButtonSkinBase.as
+++ frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/ActionBarButtonSkinBase.as
@@ -84,7 +84,7 @@
 				layoutPaddingBottom = 20;
 				layoutPaddingLeft = 40;
 				layoutPaddingRight = 40;
-				measuredDefaultWidth = 2012;
+				measuredDefaultWidth = 212;
 				measuredDefaultHeight = 172;
 				break;
 			}


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@1251905 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/automation_dmv/src/mx/automation/delegates/charts/PlotSeriesAutomationImpl.as
+++ frameworks/projects/automation_dmv/src/mx/automation/delegates/charts/PlotSeriesAutomationImpl.as
@@ -1,13 +1,3 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  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.
-//
-////////////////////////////////////////////////////////////////////////////////

 package mx.automation.delegates.charts
 {


+ 补充注释 * 修改版本号

+ 补充注释
* 修改版本号

--- age/src/age/AGE.as
+++ age/src/age/AGE.as
@@ -15,17 +15,29 @@
 	import starling.utils.HAlign;
 	import starling.utils.VAlign;

+	/**
+	 * AGE 全局变量
+	 * @author zhanghaocong
+	 *
+	 */
 	public class AGE
 	{
+		/**
+		 * constructor
+		 *
+		 */
 		public function AGE()
 		{
 		}

 		/**
-		 * AGE 的版本
-		 */
-		public static const VERSION:String = "0.5.0";
-
+		 * 版本
+		 */
+		public static const VERSION:String = "0.8.0";
+
+		/**
+		 * 配置
+		 */
 		public static var config:AGEConfig = new AGEConfig();

 		public static var paddingTop:Number = 0;
@@ -41,6 +53,10 @@
 		 */
 		public static var camera:Camera2D = new Camera2D();

+		/**
+		 * @private
+		 *
+		 */
 		private static var _s:Engine;

 		/**
@@ -119,6 +135,10 @@
 			_s.juggler.add(camera);
 		}

+		/**
+		 * @private
+		 *
+		 */
 		private static function onIsDebugModeChange():void
 		{
 			if (config.isDebugMode)
@@ -131,6 +151,12 @@
 			}
 		}

+		/**
+		 * 更新 viewport
+		 * @param width
+		 * @param height
+		 *
+		 */
 		private static function updateViewport(width:Number, height:Number):void
 		{
 			const viewport:Rectangle = new Rectangle(paddingLeft, paddingTop, width - paddingLeft - paddingRight, height - paddingTop - paddingBottom);
@@ -139,6 +165,10 @@
 			_s.viewPort = viewport;
 		}

+		/**
+		 * @private
+		 *
+		 */
 		protected static function stage_onMouseDown(event:MouseEvent):void
 		{
 			// 鼠标下有任何原生对象则屏蔽掉 Starling 的触摸事件
@@ -150,6 +180,11 @@

 		private static var _isBlockNativeMouseDown:Boolean

+		/**
+		 * 是否阻止鼠标穿透到 Starling
+		 * @return
+		 *
+		 */
 		public static function get isBlockNativeMouseDown():Boolean
 		{
 			return _isBlockNativeMouseDown;
@@ -171,6 +206,11 @@

 		private static var _now:Number;

+		/**
+		 * 设置或获取当前时间
+		 * @return
+		 *
+		 */
 		public static function get now():Number
 		{
 			return _s.now;
@@ -199,11 +239,21 @@
 			_s.dispose();
 		}

+		/**
+		 * 舞台高
+		 * @return
+		 *
+		 */
 		public static function get stageWidth():int
 		{
 			return _s.stage.stageWidth;
 		}

+		/**
+		 * 舞台宽
+		 * @return
+		 *
+		 */
 		public static function get stageHeight():int
 		{
 			return _s.stage.stageHeight;
@@ -211,6 +261,11 @@

 		private static var _onStart:Signal;

+		/**
+		 * 启动时广播
+		 * @return
+		 *
+		 */
 		public static function get onStart():Signal
 		{
 			return _onStart ||= new Signal();