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

--- frameworks/projects/automation/src/mx/automation/delegates/controls/ButtonBarAutomationImpl.as
+++ frameworks/projects/automation/src/mx/automation/delegates/controls/ButtonBarAutomationImpl.as
@@ -1,11 +1,19 @@
 ////////////////////////////////////////////////////////////////////////////////
 //
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2009 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: 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@1260749 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/framework/src/mx/events/StateChangeEvent.as
+++ frameworks/projects/framework/src/mx/events/StateChangeEvent.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.events
 {


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

--- frameworks/projects/framework/src/mx/managers/ISystemManager.as
+++ frameworks/projects/framework/src/mx/managers/ISystemManager.as
@@ -1,11 +1,19 @@
 ////////////////////////////////////////////////////////////////////////////////
 //
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2005-2007 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.
 //
 ////////////////////////////////////////////////////////////////////////////////


Fix regression from new styles-as-data.  It appears that StyleModules don't actually use their own StyleManager to host their styles.

git-svn-id: 8abe1d02b055b1c3ad2747e884e38fb9e7cebddd@1422140 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/framework/src/mx/styles/StyleManagerImpl.as
+++ frameworks/projects/framework/src/mx/styles/StyleManagerImpl.as
@@ -90,13 +90,13 @@
 	 */
 	public static function init(fbs:IFlexModuleFactory):void
 	{
-		var sm:StyleManagerImpl = fbs.getImplementation("mx.styles::IStyleManager2") as StyleManagerImpl;
-		if (!sm)
-			sm = new StyleManagerImpl(fbs);
-
 		var styleDataClassName:String = fbs.info()["styleDataClassName"];
 		if (styleDataClassName)
 		{
+			var sm:StyleManagerImpl = fbs.getImplementation("mx.styles::IStyleManager2") as StyleManagerImpl;
+			if (!sm)
+				sm = new StyleManagerImpl(fbs);
+
 			var styleDataClass:Class = fbs.info()["currentDomain"].getDefinition(styleDataClassName);
 			var styleNames:Array = styleDataClass["inheritingStyles"];
 			for each (var s:String in styleNames)
@@ -1759,7 +1759,7 @@
 		{
 			timer.removeEventListener(TimerEvent.TIMER, timerHandler);
 			timer.stop();
-			module.load(applicationDomain, securityDomain);
+			module.load(applicationDomain, securityDomain, null, moduleFactory);
 		};

 		timer.addEventListener(TimerEvent.TIMER, timerHandler, false, 0, true);


Transferred from the Adobe Open Source Subversion Repository

Revision: 3933
Author:   shodgson@adobe.com
Date:     2008-10-28T20:57:03.525449Z

Log Message:
-----------
Bug: LCDS-427 - Using streaming AMF channel with reliable destination both Producer and Consumer getting channel fault during transient disconnect.
QA: Yes
Doc: No
Checkintests: Pass

Details:
* Add handling for Client.Data.Underflow NetStatus events to AMFChannel (log warning rather than triggering channel disconnect)
* Fix in helper class for streaming channels to correctly reset internal state machine upon disconnect

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/channels/AMFChannel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/channels/StreamingConnectionHandler.as</path>

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

--- frameworks/projects/rpc/src/mx/messaging/channels/AMFChannel.as
+++ frameworks/projects/rpc/src/mx/messaging/channels/AMFChannel.as
@@ -354,6 +354,17 @@
             // If the level is error we couldn't communicate with the server.
             if (info.level == "error")
             {
+                // Suppress processing of "Client.Data.Underflow" status events which are dispatched for
+                // any outstanding AMF messages in HTTP responses that are not fully received because
+                // the underlying connection has closed mid-response.
+                if (info.code == "Client.Data.UnderFlow")
+                {
+                    if (Log.isDebug())
+                        _log.debug("'{0}' channel received a 'Client.Data.Underflow' status event.");
+
+                    return; // Skip further processing.
+                }
+
                 if (connected)
                 {
                     if (info.code.indexOf("Call.Failed") != -1)


Transferred from the Adobe Open Source Subversion Repository

Revision: 5545
Author:   jimurphy@adobe.com
Date:     2009-03-25T19:00:52.330680Z

Log Message:
-----------
1st pass of rename according to the spec http://opensource.adobe.com/wiki/display/flexsdk/Dropping+the+Fx+Prefix

Flex now requires CSS Style declarations to declare @namespace rules and disambiguate between halo and spark components using CSS 3 namespace prefixes on type selectors. At compile time, this namespace information will be used to map type names to qualified ActionScript class names. At runtime, type selectors are matched on qualified ActionScript class name (for example mx.controls.Button rather than just Button). Flex 3 applications must be compiled with -compatibility-version=3.0.0 to get unqualified CSS type selector behavior.

QE: Yes, this build may help in updating test cases to use the new namespaces and class names.
Dev: Not yet
Doc: Not yet

Modified Paths:
--------------
748 paths were modified

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

--- frameworks/projects/spark/src/spark/components/IItemRenderer.as
+++ frameworks/projects/spark/src/spark/components/IItemRenderer.as
@@ -9,10 +9,10 @@
 //
 ////////////////////////////////////////////////////////////////////////////////

-package mx.components
+package spark.components
 {

-import mx.components.IItemRendererOwner;
+import spark.components.IItemRendererOwner;
 import mx.core.IDataRenderer;
 import mx.core.IVisualElement;


Transferred from the Adobe Open Source Subversion Repository

Revision: 21926
Author:   ksimm@adobe.com
Date:     2011-08-10T23:27:21.215704Z

Log Message:
-----------
1) Add the function to find the longest width year
2) Add three helper classes for DateSpinner.
3) Add the error messages for the new class OnDemandDataProvider
4) Add OnDemandDataProvider to SparkClass

QE notes: No
Doc notes: No
Bugs: No
Reviewer: Tom Kraikit
Tests run: Mustella-mobile
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="A">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/collections/OnDemandDataProvider.as</path>
<path kind="file" action="D">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/DateAndTimeRangeList.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/SparkClasses.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/framework/bundles/en_US/collections.properties</path>
<path kind="file" action="A">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/calendarClasses/DateAndTimeProvider.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/calendarClasses/YearProvider.as</path>

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

--- frameworks/projects/mobilecomponents/src/spark/components/calendarClasses/DateAndTimeProvider.as
+++ frameworks/projects/mobilecomponents/src/spark/components/calendarClasses/DateAndTimeProvider.as
@@ -0,0 +1,202 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2011 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.components.calendarClasses
+{
+import spark.collections.OnDemandDataProvider;
+import spark.globalization.supportClasses.DateTimeFormatterEx;
+
+[ExcludeClass]
+
+/**
+ *  Helper class for creating a dynamic date range for DateSpinner in DATE_AND_TIME
+ *  mode. Using this class instead of generating all the dates statically avoids
+ *  the cost of applying DateTimeFormatter.format() to every date.
+ *
+ *  @langversion 3.0
+ *  @playerversion AIR 3
+ *  @productversion Flex 4.5.2
+ */
+public class DateAndTimeProvider extends OnDemandDataProvider
+{
+    //----------------------------------------------------------------------------------------------
+    //
+    //  Class constants
+    //
+    //----------------------------------------------------------------------------------------------
+
+    // number of milliseconds in a day
+    private static const MS_IN_DAY:Number = 1000 * 60 * 60 * 24;
+
+    // default date range if min/max are not specified
+    private static const DEFAULT_RANGE_SIZE:int = 730;
+
+    //--------------------------------------------------------------------------
+    //
+    //  Constructor
+    //
+    //--------------------------------------------------------------------------
+    /**
+     *  Construct a DATE_AND_TIME range for DateSpinner from the start to
+     *  end dates, inclusive. Locale is used to generate the appropriate
+     *  labels.
+     *
+     *  @langversion 3.0
+     *  @playerversion AIR 3
+     *  @productversion Flex 4.5.2
+     */
+    public function DateAndTimeProvider(locale:String, start:Date, end:Date,
+                                        today:Date = null, todayAccentColor:uint = 0)
+    {
+        if (start == null)
+        {
+            start = new Date();
+            start.date -= DEFAULT_RANGE_SIZE / 2;
+        }
+
+        if (end == null)
+        {
+            end = new Date();
+            end.date += DEFAULT_RANGE_SIZE / 2;
+        }
+
+        // we only count days; reset clocks so there are no rounding errors
+        startDate = new Date(start.time);
+        endDate = new Date(end.time);
+
+        // note: set hours to 11 to avoid being near day boundaries that can
+        // cause repeat days due to daylight savings time
+        startDate.hours = 11;
+        startDate.minutes = 0;
+        startDate.seconds = 0;
+        startDate.milliseconds = 0;
+        endDate.hours = 11;
+        endDate.minutes = 0;
+        endDate.seconds = 0;
+        endDate.milliseconds = 0;
+
+        // calculate how many days there are between the two
+        // +1 because we need to include both start and end dates
+        _length = ((endDate.time - startDate.time) / MS_IN_DAY) + 1;
+
+        formatter = new DateTimeFormatterEx();
+        formatter.setStyle("locale", locale);
+        formatter.dateTimeSkeletonPattern = DateTimeFormatterEx.DATESTYLE_MMMEEEd;
+
+        todayDate = today;
+        accentColor = todayAccentColor;
+    }
+
+    //----------------------------------------------------------------------------------------------
+    //
+    //  Variables
+    //
+    //----------------------------------------------------------------------------------------------
+
+    // TODO: look at storing these as ms values instead of Date objects, and create one Date object to use for Date math
+
+    // start of the date range
+    private var startDate:Date;
+
+    // end of the date range
+    private var endDate:Date;
+
+    private var todayDate:Date;
+
+    // color to apply as accent color for dates that match today's date
+    private var accentColor:uint;
+
+    // formatter to use in localizing the date labels
+    private var formatter:DateTimeFormatterEx;
+
+    //----------------------------------------------------------------------------------------------
+    //
+    //  Properties
+    //
+    //----------------------------------------------------------------------------------------------
+
+    //----------------------------------
+    //  length
+    //----------------------------------
+
+    private var _length:int;
+
+    /**
+     *  @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion AIR 3
+     *  @productversion Flex 4.5.2
+     */
+    override public function get length():int
+    {
+        return _length;
+    }
+
+    //----------------------------------------------------------------------------------------------
+    //
+    //  Overridden Methods
+    //
+    //----------------------------------------------------------------------------------------------
+
+    /**
+     *  @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion AIR 3
+     *  @productversion Flex 4.5.2
+     */
+    override public function getItemAt(index:int, prefetch:int=0):Object
+    {
+        // calc date you want from index
+        var d:Date = new Date(startDate.time + index * MS_IN_DAY);
+
+        // generate the appropriate object
+        var item:Object = { label:formatter.format(d), data:d.time };
+
+        if (todayDate)
+        {
+            if (d.getFullYear() == todayDate.getFullYear() &&
+                d.getMonth() == todayDate.getMonth() &&
+                d.getDate() == todayDate.getDate())
+            {
+                item["accentColor"] = accentColor;
+            }
+        }
+
+        return item;
+    }
+
+    /**
+     *  @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion AIR 3
+     *  @productversion Flex 4.5.2
+     */
+    override public function getItemIndex(item:Object):int
+    {
+        if (!isNaN(item.data))
+        {
+            // set firstDate's hour/min/second to the same values
+            var dateObj:Date = new Date(item.data);
+            dateObj.hours = startDate.hours;
+            dateObj.minutes = startDate.minutes;
+            dateObj.seconds = startDate.seconds;
+            dateObj.milliseconds = startDate.milliseconds;
+
+            if (dateObj.time >= startDate.time && dateObj.time <= endDate.time)
+                return Math.round((dateObj.time - startDate.time) / MS_IN_DAY);
+        }
+
+        return -1;
+    }
+}
+}


Now displaying '...' while downloading entity data.

--- WeaveAdmin/src/weave/ui/EntityNode.as
+++ WeaveAdmin/src/weave/ui/EntityNode.as
@@ -74,7 +74,12 @@
 			}

 			if (!title)
-				title = lang("{0}#{1}", entity.getTypeString(), entity.id);
+			{
+				if (entity.id == -1)
+					title = '...';
+				else
+					title = lang("{0}#{1}", entity.getTypeString(), entity.id);
+			}

 			if (debug)
 			{


fixed bug handling falsey non-null values

--- WeaveData/src/weave/data/CSVParser.as
+++ WeaveData/src/weave/data/CSVParser.as
@@ -428,6 +428,7 @@

 			var r:int;
 			var c:int;
+			var cell:Object;
 			var row:Array;
 			var rows:Array = new Array(records.length + headerDepth);

@@ -454,18 +455,17 @@
 					if (headerDepth == 1)
 					{
 						// fields is an Array of Strings
-						row[c] = record[fields[c]] || '';
+						cell = record[fields[c]];
 					}
 					else
 					{
 						// fields is an Array of Arrays
-						var fieldChain:Array = fields[c];
-						var cell:Object = record;
-						for each (var field:String in fieldChain)
+						cell = record;
+						for each (var field:String in fields[c])
 							if (cell)
 								cell = cell[field];
-						row[c] = cell || '';
-					}
+					}
+					row[c] = cell != null ? String(cell) : '';
 				}
 				rows[headerDepth + r] = row;
 			}


EntityNode.findPathToNode() now always uses actual node in hierarchy rather than the equivalent node that was passed in.

--- WeaveData/src/weave/data/hierarchy/EntityNode.as
+++ WeaveData/src/weave/data/hierarchy/EntityNode.as
@@ -368,9 +368,14 @@
 			{
 				// root table node only has two levels - table, column
 				// return path of EntityNode objects
-				for each (var id:int in node.getEntity().parentIds)
-					if (cache.getEntity(id).getEntityType() == EntityType.TABLE)
-						return [this, getCachedChildNode(id), node];
+				for each (var id:int in node.getEntity().parentIds)
+				{
+					if (cache.getEntity(id).getEntityType() == EntityType.TABLE)
+					{
+						var tableNode:EntityNode = this.getCachedChildNode(id);
+						return [this, tableNode, tableNode.getCachedChildNode(node.id)];
+					}
+				}
 				return null;
 			}


Transferred from the Adobe Open Source Subversion Repository

Revision: 11995
Author:   doug.lee@ssbbartgroup.com
Date:     2009-11-19T18:50:30.831767Z

Log Message:
-----------
Updated all AccImpls that use MSAA constants (except TextLayout) to
use the new AccConst references instead of hard-coding hex numbers and
local copies of the constants.

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

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/ListAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/ColorPickerAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/PanelAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/LabelAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/DataGridAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/SliderAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/TextInputAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/CheckBoxAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/ComboBaseAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/TabBarAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/spark/accessibility/WindowedApplicationAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/SpinnerAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/TextBaseAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/PanelAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/SliderAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/DropDownListBaseAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/RichEditableTextAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/CheckBoxAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/ListBaseAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/AlertAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/RadioButtonAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/AccordionHeaderAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/ButtonAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/ButtonBarAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/DateFieldAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/NumericStepperAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/SkinnableTextBaseAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/ListBaseAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/ComboBoxAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/TitleWindowAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/LinkButtonAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/MenuBarAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/ButtonAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/RadioButtonAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/ToggleButtonAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/TreeAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/spark/accessibility/WindowAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/DateChooserAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/VideoPlayerAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/MenuAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/TitleWindowAccImpl.as</path>

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

--- frameworks/projects/mx/src/mx/accessibility/ComboBaseAccImpl.as
+++ frameworks/projects/mx/src/mx/accessibility/ComboBaseAccImpl.as
@@ -14,6 +14,7 @@

 import flash.accessibility.Accessibility;
 import flash.events.Event;
+import mx.accessibility.AccConst;
 import mx.collections.CursorBookmark;
 import mx.collections.IViewCursor;
 import mx.controls.ComboBase;
@@ -37,42 +38,6 @@

 	//--------------------------------------------------------------------------
 	//
-	//  Class constants
-	//
-	//--------------------------------------------------------------------------
-
-	/**
-	 *  @private
-	 */
-	private static const ROLE_SYSTEM_LISTITEM:uint = 0x22;
-
-	/**
-	 *  @private
-	 */
-	private static const STATE_SYSTEM_FOCUSED:uint = 0x00000004;
-
-	/**
-	 *  @private
-	 */
-	private static const STATE_SYSTEM_SELECTABLE:uint = 0x00200000;
-
-	/**
-	 *  @private
-	 */
-	private static const STATE_SYSTEM_SELECTED:uint = 0x00000002;
-
-	/**
-	 *  @private
-	 */
-	private static const EVENT_OBJECT_VALUECHANGE:uint = 0x800E;
-
-	/**
-	 *  @private
-	 */
-	private static const EVENT_OBJECT_SELECTION:uint = 0x8006;
-
-	//--------------------------------------------------------------------------
-	//
 	//  Class methods
 	//
 	//--------------------------------------------------------------------------
@@ -131,7 +96,7 @@
 	{
 		super(master);

-		role = 0x2E; // ROLE_SYSTEM_COMBOBOX
+		role = AccConst.ROLE_SYSTEM_COMBOBOX
 	}

 	//--------------------------------------------------------------------------
@@ -167,7 +132,7 @@
 	 */
 	override public function get_accRole(childID:uint):uint
 	{
-		return childID == 0 ? role : ROLE_SYSTEM_LISTITEM;
+		return childID == 0 ? role : AccConst.ROLE_SYSTEM_LISTITEM;
 	}

 	/**
@@ -207,10 +172,10 @@

 		if (childID > 0)
 		{
-			accState |= STATE_SYSTEM_SELECTABLE;
+			accState |= AccConst.STATE_SYSTEM_SELECTABLE;

 			if (ComboBase(master).selectedIndex == childID - 1)
-				accState |= STATE_SYSTEM_SELECTED | STATE_SYSTEM_FOCUSED;
+				accState |= AccConst.STATE_SYSTEM_SELECTED | AccConst.STATE_SYSTEM_FOCUSED;
 		}

 		return accState;
@@ -260,17 +225,17 @@
 					var childID:uint = index + 1;

 					Accessibility.sendEvent(master, childID,
-											EVENT_OBJECT_SELECTION);
+											AccConst.EVENT_OBJECT_SELECTION);

 					Accessibility.sendEvent(master, 0,
-											EVENT_OBJECT_VALUECHANGE);
+											AccConst.EVENT_OBJECT_VALUECHANGE);
 				}
 				break;
 			}

 			case "valueCommit":
 			{
-				Accessibility.sendEvent(master, 0, EVENT_OBJECT_VALUECHANGE);
+				Accessibility.sendEvent(master, 0, AccConst.EVENT_OBJECT_VALUECHANGE);
 				break;
 			}
 		}


Transferred from the Adobe Open Source Subversion Repository

Revision: 18635
Author:   aharui@adobe.com
Date:     2010-11-17T00:18:36.469040Z

Log Message:
-----------
Add estimatedSizes to the layout infrastructure to better deal with text reflow.
Add new events to layout infrastructure to deal with caching of size information

QE notes: New APIs and Interfaces
Doc notes: New APIs and interfaces
Bugs: SDK-27226, SDK-26155, SDK-25483, SDK-23621, SDK-27225, SDK-26993, SDK-25535, SDK-25521
Reviewer: Evtim
Tests run: checkintests mustella full run
Is noteworthy for integration: yes

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/layouts/TileLayout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/TextBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/managers/layoutClasses/PriorityQueue.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/ScrollerLayout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mx/src/mx/core/Application.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/SkinnableComponent.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/RichEditableText.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/controls/SWFLoader.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/DataGroup.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/primitives/supportClasses/GraphicElement.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/layouts/BasicLayout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Group.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/PopUpAnchor.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/flash-integration/src/mx/flash/UIMovieClip.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/events/FlexEvent.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/styles/StyleProtoChain.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/core/SpriteVisualElement.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/core/IContainerInvalidating.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/tests/basicTests/spark/scripts/FormTestScript.mxml</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/managers/ILayoutManagerContainerClient.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/skins/spark/DefaultItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/layouts/supportClasses/LayoutBase.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/layouts/VerticalLayout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/styles/IStyleManager.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/core/ILayoutElement.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/gridClasses/GridLayout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/skins/spark/TextFieldGridItemRendererInclude.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/styles/StyleManagerImpl.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mx/src/mx/core/Container.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/managers/LayoutManager.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/layouts/HorizontalLayout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Application.as</path>

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

--- frameworks/projects/spark/src/spark/core/SpriteVisualElement.as
+++ frameworks/projects/spark/src/spark/core/SpriteVisualElement.as
@@ -617,6 +617,68 @@
         invalidateParentSizeAndDisplayList();
     }

+    //----------------------------------
+    //  estimatedHeight
+    //----------------------------------
+
+    /**
+     *  @private
+     *  Storage for the estimatedHeight property.
+     */
+    private var _estimatedHeight:Number;
+
+    /**
+     *  The height a component is likely to be given at layout time.  It is
+     *  determined by examining the parent's estimatedHeight, and the
+     *  component's percentHeight, explicitHeight, top and bottom constraints.
+     *  It is NaN if there isn't enough information to compute the height.
+     *  The component can use this information in calculating its
+     *  measuredWidth if the measuredWidth is dependent on the layout
+     *  height.
+     *
+     *  @default NaN
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10.2
+     *  @playerversion AIR 2.0
+     *  @productversion Flex 4.5
+     */
+    public function get estimatedHeight():Number
+    {
+        return _estimatedHeight;
+    }
+
+    //----------------------------------
+    //  estimatedWidth
+    //----------------------------------
+
+    /**
+     *  @private
+     *  Storage for the estimatedWidth property.
+     */
+    private var _estimatedWidth:Number;
+
+    /**
+     *  The width a component is likely to be given at layout time.  It is
+     *  determined by examining the parent's estimatedWidth, and the
+     *  component's percentWidth, explicitWidth, left and right constraints.
+     *  It is NaN if there isn't enough information to compute the width.
+     *  The component can use this information in calculating its
+     *  measuredHeight if the measuredHeight is dependent on the layout
+     *  width.
+     *
+     *  @default NaN
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10.2
+     *  @playerversion AIR 2.0
+     *  @productversion Flex 4.5
+     */
+    public function get estimatedWidth():Number
+    {
+        return _estimatedWidth;
+    }
+
     //----------------------------------
     //  filters
     //----------------------------------
@@ -3066,6 +3128,22 @@
                 MaskUtil.applyMaskType(_mask, _maskType, luminosityInvert, luminosityClip, this);
         }
     }
+
+    /**
+     *  @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10.2
+     *  @playerversion AIR 2.0
+     *  @productversion Flex 4.5
+     */
+	public function setEstimatedSize(estimatedWidth:Number = NaN,
+                                       estimatedHeight:Number = NaN,
+									   invalidateSize:Boolean = true):void
+    {
+        _estimatedWidth = estimatedWidth;
+        _estimatedHeight = estimatedHeight;
+    }
 }
 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 5545
Author:   jimurphy@adobe.com
Date:     2009-03-25T19:00:52.330680Z

Log Message:
-----------
1st pass of rename according to the spec http://opensource.adobe.com/wiki/display/flexsdk/Dropping+the+Fx+Prefix

Flex now requires CSS Style declarations to declare @namespace rules and disambiguate between halo and spark components using CSS 3 namespace prefixes on type selectors. At compile time, this namespace information will be used to map type names to qualified ActionScript class names. At runtime, type selectors are matched on qualified ActionScript class name (for example mx.controls.Button rather than just Button). Flex 3 applications must be compiled with -compatibility-version=3.0.0 to get unqualified CSS type selector behavior.

QE: Yes, this build may help in updating test cases to use the new namespaces and class names.
Dev: Not yet
Doc: Not yet

Modified Paths:
--------------
748 paths were modified

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

--- frameworks/projects/spark/src/spark/layouts/HorizontalLayout.as
+++ frameworks/projects/spark/src/spark/layouts/HorizontalLayout.as
@@ -9,7 +9,7 @@
 //
 ////////////////////////////////////////////////////////////////////////////////

-package mx.layout
+package spark.layout
 {
 import flash.display.DisplayObject;
 import flash.geom.Point;
@@ -17,12 +17,14 @@
 import flash.events.Event;
 import flash.events.EventDispatcher;

-import mx.components.baseClasses.GroupBase;
+import spark.components.supportClasses.GroupBase;
 import mx.core.ILayoutElement;

 import mx.containers.utilityClasses.Flex;
 import mx.events.PropertyChangeEvent;
-import mx.layout.LinearLayoutVector;
+import spark.layout.supportClasses.LayoutBase;
+import spark.layout.supportClasses.LayoutElementHelper;
+import spark.layout.supportClasses.LinearLayoutVector;

 /**


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

--- frameworks/projects/advancedgrids/src/mx/controls/OLAPDataGrid.as
+++ frameworks/projects/advancedgrids/src/mx/controls/OLAPDataGrid.as
@@ -1,11 +1,19 @@
 ////////////////////////////////////////////////////////////////////////////////
 //
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2009 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: 4356
Author:   rfrishbe@adobe.com
Date:     2008-12-18T23:50:17.435515Z

Log Message:
-----------
UIMovieClip needs to implement IVisualElement.  These are mostly some old changes I tried to make earlier before I understood the complexities of the different sizing models in UIMC vs UIC.  However, the important thing here really isn’t that the implementation for IVisualElement on UIMC be correct—it’s that it now compiles and we can continue to support UIMC in Gumbo.  Later, I’ll be taking a look at the different sizing models, and how we should correctly deal with transformations.

As part of this change, utilities.swc will use the files located in the flash-integration project rather than a pre-compiled SWC that was checked in.

This change will allow us to strongly type addElement, getElementAt, etc... to only work on IVisualElements.  That change will be coming a little later.

QE Notes: None
Doc Notes: None
Bugs: -
Reviewer: Glenn
tests: checkintests

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/build.xml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/utilities/src/FlashContainerPlaceholder.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/utilities/build.xml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flash-integration/build.xml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flash-integration/src/mx/flash/UIMovieClip.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/AdvancedLayoutFeatures.as</path>
<path kind="dir" action="D">/flex/sdk/trunk/frameworks/projects/utilities/libs</path>

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

--- frameworks/projects/flash-integration/src/mx/flash/UIMovieClip.as
+++ frameworks/projects/flash-integration/src/mx/flash/UIMovieClip.as
@@ -28,6 +28,7 @@
 import mx.core.IFlexDisplayObject;
 import mx.core.IInvalidating;
 import mx.core.IStateClient;
+import mx.core.AdvancedLayoutFeatures;
 import mx.core.IUIComponent;
 import mx.core.UIComponentDescriptor;
 import mx.core.mx_internal;
@@ -39,6 +40,16 @@
 import mx.managers.ISystemManager;
 import mx.managers.IToolTipManagerClient;
 import flash.events.FocusEvent;
+import mx.core.IVisualElement;
+import mx.geom.TransformOffsets;
+import mx.core.IVisualElement;
+import flash.geom.Point;
+import flash.display.Stage;
+import mx.managers.SystemManagerProxy;
+import flash.geom.Matrix;
+import flash.geom.Matrix3D;
+import mx.events.PropertyChangeEventKind;
+import flash.geom.PerspectiveProjection;

 //--------------------------------------
 //  Lifecycle events
@@ -451,7 +462,8 @@
  */
 public dynamic class UIMovieClip extends MovieClip
     implements IDeferredInstantiationUIComponent, IToolTipManagerClient,
-    IStateClient, IFocusManagerComponent, IConstraintClient, IAutomationObject
+    IStateClient, IFocusManagerComponent, IConstraintClient, IAutomationObject,
+    IVisualElement
 {
     //--------------------------------------------------------------------------
     //
@@ -537,6 +549,119 @@
     //
     //--------------------------------------------------------------------------

+    //----------------------------------
+    //  x
+    //----------------------------------
+
+    [Inspectable(category="General")]
+
+    /**
+     *  Number that specifies the component's horizontal position,
+     *  in pixels, within its parent container.
+     *
+     *
Setting this property directly or calling move()
+     *  will have no effect -- or only a temporary effect -- if the
+     *  component is parented by a layout container such as HBox, Grid,
+     *  or Form, because the layout calculations of those containers
+     *  set the x position to the results of the calculation.
+     *  However, the x property must almost always be set
+     *  when the parent is a Canvas or other absolute-positioning
+     *  container because the default value is 0.

+     *
+     *  @default 0
+     */
+    override public function get x():Number
+    {
+        return (_layoutFeatures == null)? super.x:_layoutFeatures.layoutX;
+    }
+
+    /**
+     *  @private
+     */
+    override public function set x(value:Number):void
+    {
+        if (x == value)
+            return;
+
+        if(_layoutFeatures == null)
+        {
+            super.x  = value;
+            //invalidateProperties();
+        }
+        else
+        {
+            _layoutFeatures.layoutX = value;
+            invalidateTransform();
+        }
+    }
+
+    //----------------------------------
+    //  y
+    //----------------------------------
+
+    [Inspectable(category="General")]
+
+    /**
+     *  Number that specifies the component's vertical position,
+     *  in pixels, within its parent container.
+     *
+     *
Setting this property directly or calling move()
+     *  will have no effect -- or only a temporary effect -- if the
+     *  component is parented by a layout container such as HBox, Grid,
+     *  or Form, because the layout calculations of those containers
+     *  set the x position to the results of the calculation.
+     *  However, the x property must almost always be set
+     *  when the parent is a Canvas or other absolute-positioning
+     *  container because the default value is 0.

+     *
+     *  @default 0
+     */
+    override public function get y():Number
+    {
+        return (_layoutFeatures == null)? super.y:_layoutFeatures.layoutY;
+    }
+
+    /**
+     *  @private
+     */
+    override public function set y(value:Number):void
+    {
+        if (y == value)
+            return;
+
+        if(_layoutFeatures == null)
+        {
+            //invalidateProperties();
+            super.y  = value;
+        }
+        else
+        {
+            _layoutFeatures.layoutY = value;
+            invalidateTransform();
+        }
+    }
+
+    [Bindable("zChanged")]
+    /**
+     *  @inheritDoc
+     */
+    override public function get z():Number
+    {
+        return (_layoutFeatures == null)? super.z:_layoutFeatures.layoutZ;
+    }
+
+    /**
+     *  @private
+     */
+    override public function set z(value:Number):void
+    {
+        if (z == value)
+            return;
+        if(_layoutFeatures == null) initAdvancedLayoutFeatures();
+        _layoutFeatures.layoutZ = value;
+        invalidateTransform();
+    }
+
     [Inspectable]
     /**
      *  Name of the object to use as the bounding box.
@@ -572,7 +697,7 @@
      *
      *
The default value is undefined, which means it is not set.

      */
-    public function get baseline():*
+    public function get baseline():Object
     {
         return _baseline;
     }
@@ -580,7 +705,7 @@
     /**
      *  @private
      */
-    public function set baseline(value:*):void
+    public function set baseline(value:Object):void
     {
         if (value != _baseline)
         {
@@ -606,7 +731,7 @@
      *
      *
The default value is undefined, which means it is not set.

      */
-    public function get bottom():*
+    public function get bottom():Object
     {
         return _bottom;
     }
@@ -614,7 +739,7 @@
     /**
      *  @private
      */
-    public function set bottom(value:*):void
+    public function set bottom(value:Object):void
     {
         if (value != _bottom)
         {
@@ -640,7 +765,7 @@
      *
      *
The default value is undefined, which means it is not set.

      */
-    public function get horizontalCenter():*
+    public function get horizontalCenter():Object
     {
         return _horizontalCenter;
     }
@@ -648,7 +773,7 @@
     /**
      *  @private
      */
-    public function set horizontalCenter(value:*):void
+    public function set horizontalCenter(value:Object):void
     {
         if (value != _horizontalCenter)
         {
@@ -674,7 +799,7 @@
      *
      *
The default value is undefined, which means it is not set.

      */
-    public function get left():*
+    public function get left():Object
     {
         return _left;
     }
@@ -682,7 +807,7 @@
     /**
      *  @private
      */
-    public function set left(value:*):void
+    public function set left(value:Object):void
     {
         if (value != _left)
         {
@@ -708,7 +833,7 @@
      *
      *
The default value is undefined, which means it is not set.

      */
-    public function get right():*
+    public function get right():Object
     {
         return _right;
     }
@@ -716,7 +841,7 @@
     /**
      *  @private
      */
-    public function set right(value:*):void
+    public function set right(value:Object):void
     {
         if (value != _right)
         {
@@ -742,7 +867,7 @@
      *
      *
The default value is undefined, which means it is not set.

      */
-    public function get top():*
+    public function get top():Object
     {
         return _top;
     }
@@ -750,7 +875,7 @@
     /**
      *  @private
      */
-    public function set top(value:*):void
+    public function set top(value:Object):void
     {
         if (value != _top)
         {
@@ -776,7 +901,7 @@
      *
      *
The default value is undefined, which means it is not set.

      */
-    public function get verticalCenter():*
+    public function get verticalCenter():Object
     {
         return _verticalCenter;
     }
@@ -784,7 +909,7 @@
     /**
      *  @private
      */
-    public function set verticalCenter(value:*):void
+    public function set verticalCenter(value:Object):void
     {
         if (value != _verticalCenter)
         {
@@ -1464,11 +1589,16 @@
         if (!_systemManager)
         {
             var r:DisplayObject = root;
-            if (r)
+            if (r && !(r is Stage))
             {
                 // If this object is attached to the display list, then
                 // the root property holds its SystemManager.
                 _systemManager = (r as ISystemManager);
+            }
+            else if (r)
+            {
+                // if the root is the Stage, then we are in a second AIR window
+                _systemManager = Stage(r).getChildAt(0) as ISystemManager;
             }
             else
             {
@@ -1483,6 +1613,11 @@
                         _systemManager = ui.systemManager;
                         break;
                     }
+                    else if (o is ISystemManager)
+                    {
+                        _systemManager = o as ISystemManager;
+                        break;
+                    }
                     o = o.parent;
                 }
             }
@@ -1645,6 +1780,136 @@
     override public function set width(value:Number):void
     {
         explicitWidth = value;
+    }
+
+    //----------------------------------
+    //  scaleX
+    //----------------------------------
+
+    [Inspectable(category="Size", defaultValue="1.0")]
+
+    /**
+     *  Number that specifies the horizontal scaling factor.
+     *
+     *
The default value is 1.0, which means that the object
+     *  is not scaled.
+     *  A scaleX of 2.0 means the object has been
+     *  magnified by a factor of 2, and a scaleX of 0.5
+     *  means the object has been reduced by a factor of 2.

+     *
+     *
A value of 0.0 is an invalid value.
+     *  Rather than setting it to 0.0, set it to a small value, or set
+     *  the visible property to false to hide the component.

+     *
+     *  @default 1.0
+     */
+
+    override public function get scaleX():Number
+    {
+        return ((_layoutFeatures == null)? super.scaleX:_layoutFeatures.layoutScaleX);
+    }
+
+    override public function set scaleX(value:Number):void
+    {
+        var prevValue:Number = (_layoutFeatures == null)? scaleX:_layoutFeatures.layoutScaleX;
+        if (prevValue == value)
+            return;
+
+        // trace("set scaleX:" + this + "value = " + value);
+        if(_layoutFeatures == null)
+            super.scaleX = value;
+        else
+        {
+            _layoutFeatures.layoutScaleX = value;
+        }
+        invalidateTransform();
+
+        // If we're not compatible with Flex3 (measuredWidth is pre-scale always)
+        // and scaleX is changing we need to invalidate parent size and display list
+        // since we are not going to detect a change in measured sizes during measure.
+        invalidateParentSizeAndDisplayList();
+    }
+
+    //----------------------------------
+    //  scaleY
+    //----------------------------------
+
+    [Inspectable(category="Size", defaultValue="1.0")]
+
+    /**
+     *  Number that specifies the vertical scaling factor.
+     *
+     *
The default value is 1.0, which means that the object
+     *  is not scaled.
+     *  A scaleY of 2.0 means the object has been
+     *  magnified by a factor of 2, and a scaleY of 0.5
+     *  means the object has been reduced by a factor of 2.

+     *
+     *
A value of 0.0 is an invalid value.
+     *  Rather than setting it to 0.0, set it to a small value, or set
+     *  the visible property to false to hide the component.

+     *
+     *  @default 1.0
+     */
+    override public function get scaleY():Number
+    {
+        return ((_layoutFeatures == null)? super.scaleY:_layoutFeatures.layoutScaleY);
+    }
+
+    override public function set scaleY(value:Number):void
+    {
+        var prevValue:Number = (_layoutFeatures == null)? scaleY:_layoutFeatures.layoutScaleY;
+        if (prevValue == value)
+            return;
+
+        if(_layoutFeatures == null)
+            super.scaleY = value;
+        else
+        {
+            _layoutFeatures.layoutScaleY = value;
+        }
+        invalidateTransform();
+
+        // If we're not compatible with Flex3 (measuredWidth is pre-scale always)
+        // and scaleX is changing we need to invalidate parent size and display list
+        // since we are not going to detect a change in measured sizes during measure.
+        invalidateParentSizeAndDisplayList();
+    }
+
+   //----------------------------------
+    //  scaleZ
+    //----------------------------------
+
+    [Inspectable(category="Size", defaultValue="1.0")]
+    /**
+     *  Number that specifies the scaling factor along the z axis.
+     *
+     *
A scaling along the z axis will not affect a typical component, which lies flat
+     *  in the z=0 plane.  components with children that have 3D transforms applied, or
+     *  components with a non-zero transformZ, will be affected.

+     *
+     *
The default value is 1.0, which means that the object
+     *  is not scaled.

+     *
+     *
This property is ignored during calculation by any of Flex's 2D layouts.

+     *
+     *  @default 1.0
+     */
+    override public function get scaleZ():Number
+    {
+        return ((_layoutFeatures == null)? super.scaleZ:_layoutFeatures.layoutScaleZ);
+    }
+
+    /**
+     * @private
+     */
+    override public function set scaleZ(value:Number):void
+    {
+        if (scaleZ == value)
+            return;
+        if(_layoutFeatures == null) initAdvancedLayoutFeatures();
+        _layoutFeatures.layoutScaleZ = value;
+        invalidateTransform();
     }

     //--------------------------------------------------------------------------
@@ -1764,7 +2029,561 @@
      */
     public function setConstraintValue(constraintName:String, value:*):void
     {
+        // set it using the setter first
         this[constraintName] = value;
+
+        // this is so we can have the value typed as *
+        this["_"+constraintName] = value;
+    }
+
+    /**
+     * Determines the order in which items inside of groups are rendered. Groups order their items based on their layer property, with the lowest layer
+     * in the back, and the higher in the front.  items with the same layer value will appear in the order they are added to the Groups item list.
+     *
+     * defaults to 0
+     *
+     * @default 0
+     */
+    public function get layer():Number
+    {
+        return (_layoutFeatures == null)? 0:_layoutFeatures.layer;
+    }
+
+    [Bindable("layerChange")]
+    /**
+     * @private
+     */
+    public function set layer(value:Number):void
+    {
+        if(value == layer)
+            return;
+        if(_layoutFeatures == null) initAdvancedLayoutFeatures();
+        _layoutFeatures.layer = value;
+        dispatchEvent(new FlexEvent("layerChange"));
+        if(parent != null && "invalidateLayering" in parent && parent["invalidateLayering"] is Function)
+            parent["invalidateLayering"]();
+        // TODO: should be in some interface...
+    }
+
+    /**
+     *
+     */
+    public function get transformX():Number
+    {
+        return (_layoutFeatures == null)? 0:_layoutFeatures.transformX;
+    }
+    /**
+     *  @private
+     */
+    public function set transformX(value:Number):void
+    {
+        if (transformX == value)
+            return;
+        if(_layoutFeatures == null) initAdvancedLayoutFeatures();
+        _layoutFeatures.transformX = value;
+        invalidateTransform();
+        invalidateParentSizeAndDisplayList();
+    }
+
+    /**
+     *
+     */
+    public function get transformY():Number
+    {
+        return (_layoutFeatures == null)? 0:_layoutFeatures.transformY;
+    }
+    /**
+     *  @private
+     */
+    public function set transformY(value:Number):void
+    {
+        if (transformY == value)
+            return;
+        if(_layoutFeatures == null) initAdvancedLayoutFeatures();
+        _layoutFeatures.transformY = value;
+        invalidateTransform();
+        invalidateParentSizeAndDisplayList();
+    }
+
+    /**
+     *
+     */
+    public function get transformZ():Number
+    {
+        return (_layoutFeatures == null)? 0:_layoutFeatures.transformZ;
+    }
+    /**
+     *  @private
+     */
+    public function set transformZ(value:Number):void
+    {
+        if (transformZ == value)
+            return;
+        if(_layoutFeatures == null) initAdvancedLayoutFeatures();
+        _layoutFeatures.transformZ = value;
+        invalidateTransform();
+        invalidateParentSizeAndDisplayList();
+    }
+
+    /**
+     * @inheritDoc
+     */
+    override public function get rotation():Number
+    {
+        return (_layoutFeatures == null)? super.rotation:_layoutFeatures.layoutRotationZ;
+    }
+
+    /**
+     * @private
+     */
+    override public function set rotation(value:Number):void
+    {
+        if (rotation == value)
+            return;
+
+        if(_layoutFeatures == null)
+        {
+            // clamp the rotation value between -180 and 180.  This is what
+            // the Flash player does and what we mimic in CompoundTransform;
+            // however, the Flash player doesn't handle values larger than
+            // 2^15 - 1 (FP-749), so we need to clamp even when we're
+            // just setting super.rotation.
+            if (value > 180 || value < -180)
+            {
+                value = value % 360;
+
+                if (value > 180)
+                    value = value - 360;
+                else if (value < -180)
+                    value = value + 360;
+            }
+
+            super.rotation = value;
+        }
+        else
+        {
+            _layoutFeatures.layoutRotationZ = value;
+        }
+
+        invalidateTransform();
+        invalidateParentSizeAndDisplayList();
+    }
+
+    /**
+     *  @inheritDoc
+     */
+    override public function get rotationZ():Number
+    {
+        return rotation;
+    }
+    /**
+     *  @private
+     */
+    override public function set rotationZ(value:Number):void
+    {
+        rotation = value;
+    }
+
+    /**
+     * Indicates the x-axis rotation of the DisplayObject instance, in degrees, from its original orientation
+     * relative to the 3D parent container. Values from 0 to 180 represent clockwise rotation; values
+     * from 0 to -180 represent counterclockwise rotation. Values outside this range are added to or subtracted from
+     * 360 to obtain a value within the range.
+     *
+     * This property is ignored during calculation by any of Flex's 2D layouts.
+     */
+    override public function get rotationX():Number
+    {
+        return (_layoutFeatures == null)? super.rotationX:_layoutFeatures.layoutRotationX;
+    }
+
+    /**
+     *  @private
+     */
+    override public function set rotationX(value:Number):void
+    {
+        if (rotationX == value)
+            return;
+
+        if(_layoutFeatures == null) initAdvancedLayoutFeatures();
+        _layoutFeatures.layoutRotationX = value;
+        invalidateTransform();
+        invalidateParentSizeAndDisplayList();
+    }
+
+    /**
+     * Indicates the y-axis rotation of the DisplayObject instance, in degrees, from its original orientation
+     * relative to the 3D parent container. Values from 0 to 180 represent clockwise rotation; values
+     * from 0 to -180 represent counterclockwise rotation. Values outside this range are added to or subtracted from
+     * 360 to obtain a value within the range.
+     *
+     * This property is ignored during calculation by any of Flex's 2D layouts.
+     */
+    override public function get rotationY():Number
+    {
+        return (_layoutFeatures == null)? super.rotationY:_layoutFeatures.layoutRotationY;
+    }
+
+    /**
+     *  @private
+     */
+    override public function set rotationY(value:Number):void
+    {
+        if (rotationY == value)
+            return;
+
+        if(_layoutFeatures == null) initAdvancedLayoutFeatures();
+        _layoutFeatures.layoutRotationY = value;
+        invalidateTransform();
+        invalidateParentSizeAndDisplayList();
+    }
+
+    /**
+     *  Defines a set of adjustments that can be applied to the component's transform in a way that is
+     *  invisible to the component's parent's layout. For example, if you want a layout to adjust
+     *  for a component that will be rotated 90 degrees, you set the component's rotation property.
+     *  If you want the layout to not adjust for the component being rotated, you set its offsets.rotationZ
+     *  property.
+     */
+    public function set offsets(value:TransformOffsets):void
+    {
+        if(_layoutFeatures == null) initAdvancedLayoutFeatures();
+
+        if(_layoutFeatures.offsets != null)
+            _layoutFeatures.offsets.removeEventListener(Event.CHANGE,transformOffsetsChangedHandler);
+        _layoutFeatures.offsets = value;
+        if(_layoutFeatures.offsets != null)
+            _layoutFeatures.offsets.addEventListener(Event.CHANGE,transformOffsetsChangedHandler);
+    }
+
+    /**
+     * @private
+     */
+    public function get offsets():TransformOffsets
+    {
+        return (_layoutFeatures != null)? _layoutFeatures.offsets:null;
+    }
+
+    private function transformOffsetsChangedHandler(e:Event):void
+    {
+        invalidateTransform();
+    }
+
+    /**
+     * @inheritDoc
+     */
+    override public function get transform():flash.geom.Transform
+    {
+        if(_transform == null)
+        {
+            setTransform(new mx.geom.Transform(this));
+        }
+        return _transform;
+    }
+
+    /**
+     * @private
+     */
+    override public function set transform(value:flash.geom.Transform):void
+    {
+        setTransform(value);
+
+        assignTransformMatrices();
+        super.transform.colorTransform = value.colorTransform;
+        super.transform.perspectiveProjection = _transform.perspectiveProjection;
+        if(maintainProjectionCenter)
+            applyPerspectiveProjection();
+    }
+
+    private function assignTransformMatrices():void
+    {
+        var m:Matrix = _transform.matrix;
+        var m3:Matrix3D =  _transform.matrix3D;
+        if(m != null)
+            layoutMatrix = m.clone();
+        else if(m3 != null)
+            layoutMatrix3D = m3.clone();
+
+        // invalidateSize();
+        notifySizeChanged();
+    }
+
+
+    private function transformPropertyChangeHandler(event:PropertyChangeEvent):void
+    {
+        if (event.kind == PropertyChangeEventKind.UPDATE)
+        {
+            if (event.property == "matrix" || event.property == "matrix3D")
+            {
+                assignTransformMatrices();
+            }
+            else if (event.property == "perspectiveProjection")
+            {
+                super.transform.perspectiveProjection = _transform.perspectiveProjection;
+                if(maintainProjectionCenter)
+                    applyPerspectiveProjection();
+            }
+            else if (event.property == "colorTransform")
+            {
+                super.transform.colorTransform = _transform.colorTransform;
+            }
+        }
+    }
+
+    /**
+     * @private
+     */
+    private var _maintainProjectionCenter:Boolean = false;
+
+    /**
+     * When true, the component will keep its projection matrix centered on the middle of its bounding box.  If no projection matrix is defined
+     * on the component, one will be added automatically.
+     */
+    public function set maintainProjectionCenter(value:Boolean):void
+    {
+        _maintainProjectionCenter = value;
+        if(value && super.transform.perspectiveProjection == null)
+        {
+            super.transform.perspectiveProjection = new PerspectiveProjection();
+        }
+        applyPerspectiveProjection();
+    }
+    /**
+     * @private
+     */
+    public function get maintainProjectionCenter():Boolean
+    {
+        return _maintainProjectionCenter;
+    }
+
+
+    /**
+     *  The transform matrix that is used to calculate the component's layout relative to its siblings. This matrix
+     *  is defined by the component's 2D properties such as x, y, rotation,
+     *  scaleX, scaleY, transformX, and transformY.
+     *
This matrix is modified by the values of the offset property to determine its final, computed matrix.

+     */
+    public function get layoutMatrix():Matrix
+    {
+        if(_layoutFeatures != null)
+        {
+            return _layoutFeatures.layoutMatrix;
+        }
+        else
+        {
+            return super.transform.matrix;
+        }
+    }
+
+    /**
+     * @private
+     */
+    public function set layoutMatrix(value:Matrix):void
+    {
+        if(_layoutFeatures == null)
+        {
+            super.transform.matrix = value;
+            //invalidateSize();
+            notifySizeChanged();
+        }
+        else
+        {
+            _layoutFeatures.layoutMatrix = value;
+            invalidateTransform();
+            invalidateParentSizeAndDisplayList();
+        }
+    }
+
+    /**
+     *  The transform matrix that is used to calculate a component's layout relative to its siblings. This matrix is defined by
+     *  the component's 3D properties (which include the 2D properties such as x, y, rotation,
+     *  scaleX, scaleY, transformX, and transformY, as well as rotationX,
+     *  rotationY, scaleZ, z, and transformZ.
+     *
+     *
Most components do not have any 3D transform properties set on them.

+     *
+     *
This matrix is modified by the values of the offset property to determine its final, computed matrix.

+     */
+    public function set layoutMatrix3D(value:Matrix3D):void
+    {
+        if(_layoutFeatures == null) initAdvancedLayoutFeatures();
+        _layoutFeatures.layoutMatrix3D = value;
+        invalidateTransform();
+        invalidateParentSizeAndDisplayList();
+    }
+
+    /**
+     * @private
+     */
+    public function get layoutMatrix3D():Matrix3D
+    {
+        if(_layoutFeatures == null) initAdvancedLayoutFeatures();
+        return _layoutFeatures.layoutMatrix3D;
+    }
+
+    private function setTransform(value:flash.geom.Transform):void
+    {
+        // Clean up the old event listeners
+        var oldTransform:mx.geom.Transform = _transform as mx.geom.Transform;
+        if (oldTransform)
+        {
+            oldTransform.removeEventListener(PropertyChangeEvent.PROPERTY_CHANGE, transformPropertyChangeHandler);
+        }
+
+        var newTransform:mx.geom.Transform = value as mx.geom.Transform;
+
+        if (newTransform)
+        {
+            newTransform.addEventListener(PropertyChangeEvent.PROPERTY_CHANGE, transformPropertyChangeHandler);
+        }
+
+        _transform = value;
+    }
+
+    /**
+     * A utility method to update the rotation and scale of the transform while keeping a particular point, specified in the component's own coordinate space,
+     * fixed in the parent's coordinate space.  This function will assign the rotation and scale values provided, then update the x/y/z properties
+     * as necessary to keep tx/ty/tz fixed.
+     * @param rx,ry,rz the new values for the rotation of the transform
+     * @param sx,sy,sz the new values for the scale of the transform
+     * @param tx,ty,tz the point, in the component's own coordinates, to keep fixed relative to its parent.
+     */
+    public function transformAround(rx:Number,ry:Number,rz:Number,sx:Number,sy:Number,sz:Number,tx:Number,ty:Number,tz:Number):void
+    {
+        if(_layoutFeatures == null && (
+            (!isNaN(rx) && rx != 0) ||
+            (!isNaN(ry) && ry != 0) ||
+            (!isNaN(sz) && sz != 1)
+            ))
+        {
+            initAdvancedLayoutFeatures();
+        }
+        if(_layoutFeatures != null)
+        {
+            _layoutFeatures.transformAround(rx,ry,rz,sx,sy,sz,tx,ty,tz,true);
+            invalidateTransform();
+            invalidateParentSizeAndDisplayList();
+        }
+        else
+        {
+            var xformedPt:Point = super.transform.matrix.transformPoint(new Point(tx,ty));
+            if(!isNaN(rz))
+            rotation = rz;
+            if(!isNaN(sx))
+                scaleX = sx;
+            if(!isNaN(sx))
+                scaleY = sy;
+            var postXFormPoint:Point = super.transform.matrix.transformPoint(new Point(tx,ty));
+            x += xformedPt.x - postXFormPoint.x;
+            y += xformedPt.y - postXFormPoint.y;
+        }
+    }
+
+    /**
+     *  Helper method to invalidate parent size and display list if
+     *  this object affects its layout (includeInLayout is true).
+     */
+    protected function invalidateParentSizeAndDisplayList():void
+    {
+        if (!includeInLayout)
+            return;
+
+        var p:IInvalidating = parent as IInvalidating;
+        if (!p)
+            return;
+
+        p.invalidateSize();
+        p.invalidateDisplayList();
+    }
+
+    /**
+     * @private
+     *
+     * storage for advanced layout and transform properties.
+     */
+    private var _layoutFeatures:AdvancedLayoutFeatures;
+
+    /**
+     * @private
+     *
+     * storage for the modified Transform object that can dispatch change events correctly.
+     */
+    private var _transform:flash.geom.Transform;
+
+    /**
+     * Initializes the implementation and storage of some of the less frequently used
+     * advanced layout features of a component.  Call this function before attempting to use any of the
+     * features implemented by the AdvancedLayoutFeatures object.
+     *
+     */
+    protected function initAdvancedLayoutFeatures():void
+    {
+        var features:AdvancedLayoutFeatures = new AdvancedLayoutFeatures();
+
+        features.layoutScaleX = scaleX;
+        features.layoutScaleY = scaleY;
+        features.layoutScaleZ = scaleZ;
+        features.layoutRotationX = rotationX;
+        features.layoutRotationY = rotationY;
+        features.layoutRotationZ = rotation;
+        features.layoutX = x;
+        features.layoutY = y;
+        features.layoutZ = z;
+        _layoutFeatures = features;
+        invalidateTransform();
+    }
+
+    private function invalidateTransform():void
+    {
+        if(_layoutFeatures && _layoutFeatures.updatePending == false)
+        {
+            _layoutFeatures.updatePending = true;
+            applyComputedTransform();
+            notifySizeChanged();
+        }
+    }
+
+    /**
+     * Commits the computed matrix built from the combination of the layout matrix and the transform offsets to the flash displayObject's transform.
+     */
+    private function applyComputedTransform():void
+    {
+        _layoutFeatures.updatePending = false;
+        if(_layoutFeatures.is3D)
+        {
+            super.transform.matrix3D = _layoutFeatures.computedMatrix3D;
+        }
+        else
+        {
+            super.transform.matrix = _layoutFeatures.computedMatrix;
+        }
+    }
+
+    private function applyPerspectiveProjection():void
+    {
+        var pmatrix:PerspectiveProjection = super.transform.perspectiveProjection;
+        if(pmatrix != null)
+        {
+            // width, height instead of unscaledWidth, unscaledHeight
+            pmatrix.projectionCenter = new Point(width/2,height/2);
+        }
+    }
+
+    private function isOnDisplayList():Boolean
+    {
+        var p:DisplayObjectContainer;
+
+        try
+        {
+            p = _parent ? _parent : super.parent;
+        }
+        catch (e:SecurityError)
+        {
+            // trace("UIComponent.isOnDisplayList(): " + e);
+            return true;        // we are on the display list but the parent is in another sandbox
+        }
+
+        return p ? true : false;
     }

     //--------------------------------------------------------------------------
@@ -1848,6 +2667,7 @@

     public function set currentState(value:String):void
     {
+        // TODO: revisit states
         if (value == _currentState)
             return;

@@ -2173,12 +2993,34 @@
      *  @param y The new y-position for this object.
      */
     public function move(x:Number, y:Number):void
-    {
-        this.x = x;
-        this.y = y;
-
-        if (x != oldX || y != oldY)
-        {
+    {
+        var changed:Boolean = false;
+
+        if (x != this.x)
+        {
+            if(_layoutFeatures == null)
+                super.x  = x;
+            else
+                _layoutFeatures.layoutX = x;
+
+            dispatchEvent(new Event("xChanged"));
+            changed = true;
+        }
+
+        if (y != this.y)
+        {
+            if(_layoutFeatures == null)
+                super.y  = y;
+            else
+                _layoutFeatures.layoutY = y;
+
+            dispatchEvent(new Event("yChanged"));
+            changed = true;
+        }
+
+        if (changed)
+        {
+            invalidateTransform();
             dispatchMoveEvent();
         }
     }
@@ -2205,6 +3047,7 @@
      */
     public function setActualSize(newWidth:Number, newHeight:Number):void
     {
+        // TODO: is this how it should be?
         if (sizeChanged(_width, newWidth) || sizeChanged(_height, newHeight))
             dispatchResizeEvent();

@@ -2679,6 +3522,5 @@
             return automationDelegate.replayAutomatableEvent(event);
         return false;
     }
-
 }
 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 10653
Author:   egeorgie@adobe.com
Date:     2009-09-28T19:34:37.823932Z

Log Message:
-----------
Add APIs for detecting whether an IVisualElement is in 3D, or an ILayoutElement has 3D matrix. Small cleanup for "depth" property and ASDoc comments, "depth" is now consistently non-bindable.

QE notes: None
Doc notes: None
Bugs: None
Reviewer: Ryan
Tests run: checkintests, mustella (Group, layout3D)

Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/core/SpriteVisualElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/supportClasses/GraphicElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/IVisualElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flash-integration/src/mx/flash/UIMovieClip.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/ILayoutElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>

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

--- frameworks/projects/flash-integration/src/mx/flash/UIMovieClip.as
+++ frameworks/projects/flash-integration/src/mx/flash/UIMovieClip.as
@@ -947,7 +947,7 @@
      */
     override public function get z():Number
     {
-        return (_layoutFeatures == null)? super.z:_layoutFeatures.layoutZ;
+        return (_layoutFeatures == null) ? super.z : _layoutFeatures.layoutZ;
     }

     /**
@@ -2482,7 +2482,7 @@
         // if it's been set, layoutFeatures won't be null.  Otherwise, return 1 as
         // super.scaleX might be some other value since we change the width/height
         // through scaling
-        return ((_layoutFeatures == null)? 1:_layoutFeatures.layoutScaleY);
+        return (_layoutFeatures == null) ? 1 : _layoutFeatures.layoutScaleY;
     }

     override public function set scaleY(value:Number):void
@@ -2569,7 +2569,7 @@
      *  @default 1.0
      *
      *  @langversion 3.0
-     *  @playerversion Flash 9
+     *  @playerversion Flash 10
      *  @playerversion AIR 1.1
      *  @productversion Flex 3
      */
@@ -2853,24 +2853,18 @@
     }

     /**
-     * Determines the order in which items inside of groups are rendered. Groups order their items based on their layer property, with the lowest layer
-     * in the back, and the higher in the front.  items with the same layer value will appear in the order they are added to the Groups item list.
-     *
-     * defaults to 0
-     *
-     * @default 0
-     *
-     *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
+     *  @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function get depth():Number
     {
-        return (_layoutFeatures == null)? 0:_layoutFeatures.depth;
-    }
-
-    [Bindable("layerChange")]
+        return (_layoutFeatures == null) ? 0 : _layoutFeatures.depth;
+    }
+
     /**
      * @private
      */
@@ -2882,7 +2876,6 @@
 			initAdvancedLayoutFeatures();

         _layoutFeatures.depth = value;
-        dispatchEvent(new FlexEvent("layerChange"));
         if (parent != null && "invalidateLayering" in parent && parent["invalidateLayering"] is Function)
             parent["invalidateLayering"]();
         // FIXME (rfrishbe): should be in some interface...
@@ -2892,13 +2885,13 @@
      *
      *
      *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function get transformX():Number
     {
-        return (_layoutFeatures == null)? 0:_layoutFeatures.transformX;
+        return (_layoutFeatures == null) ? 0 : _layoutFeatures.transformX;
     }
     /**
      *  @private
@@ -2920,13 +2913,13 @@
      *
      *
      *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function get transformY():Number
     {
-        return (_layoutFeatures == null)? 0:_layoutFeatures.transformY;
+        return (_layoutFeatures == null) ? 0 : _layoutFeatures.transformY;
     }
     /**
      *  @private
@@ -2948,13 +2941,13 @@
      *
      *
      *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function get transformZ():Number
     {
-        return (_layoutFeatures == null)? 0:_layoutFeatures.transformZ;
+        return (_layoutFeatures == null) ? 0 : _layoutFeatures.transformZ;
     }
     /**
      *  @private
@@ -2982,7 +2975,7 @@
      */
     override public function get rotation():Number
     {
-        return (_layoutFeatures == null)? super.rotation:_layoutFeatures.layoutRotationZ;
+        return (_layoutFeatures == null) ? super.rotation : _layoutFeatures.layoutRotationZ;
     }

     /**
@@ -3103,9 +3096,9 @@
      *  property.
      *
      *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function set postLayoutTransformOffsets(value:TransformOffsets):void
     {
@@ -3203,9 +3196,9 @@
      *  component, one will be added automatically.
      *
      *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function set maintainProjectionCenter(value:Boolean):void
     {
@@ -3228,9 +3221,9 @@
      *  @inheritDoc
      *
      *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function getLayoutMatrix():Matrix
     {
@@ -3253,9 +3246,9 @@
      *  @inheritDoc
      *
      *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function setLayoutMatrix(value:Matrix, invalidateLayout:Boolean):void
     {
@@ -3283,9 +3276,9 @@
      *  @inheritDoc
      *
      *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function getLayoutMatrix3D():Matrix3D
     {
@@ -3297,14 +3290,40 @@
         // we hand out a clone.
         return _layoutFeatures.layoutMatrix3D.clone();
     }
-
+
     /**
      *  @inheritDoc
      *
      *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    public function get hasLayoutMatrix3D():Boolean
+    {
+        return _layoutFeatures ? _layoutFeatures.layoutIs3D : false;
+    }
+
+    /**
+     *  @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    public function get is3D():Boolean
+    {
+        return _layoutFeatures ? _layoutFeatures.is3D : false;
+    }
+
+    /**
+     *  @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function setLayoutMatrix3D(value:Matrix3D, invalidateLayout:Boolean):void
     {
@@ -3351,9 +3370,9 @@
      * @param transformCenter the point, in the component's own coordinates, to keep fixed relative to its parent.
      *
      *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function transformAround(transformCenter:Vector3D,
                                     scale:Vector3D = null,
@@ -3549,9 +3568,9 @@
      * Commits the computed matrix built from the combination of the layout matrix and the transform offsets to the flash displayObject's transform.
      *
      *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     private function applyComputedMatrix():void
     {
@@ -3606,9 +3625,9 @@
      *  @inheritDoc
      *
      *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function getPreferredBoundsWidth(postLayoutTransform:Boolean = true):Number
     {
@@ -3624,9 +3643,9 @@
      *  @inheritDoc
      *
      *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function getMinBoundsWidth(postLayoutTransform:Boolean = true):Number
     {
@@ -3642,9 +3661,9 @@
      *  @inheritDoc
      *
      *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function getMaxBoundsWidth(postLayoutTransform:Boolean = true):Number
     {
@@ -3660,9 +3679,9 @@
      *  @inheritDoc
      *
      *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function getBoundsXAtSize(width:Number, height:Number, postLayoutTransform:Boolean = true):Number
     {
@@ -3674,9 +3693,9 @@
      *  @inheritDoc
      *
      *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function getBoundsYAtSize(width:Number, height:Number, postLayoutTransform:Boolean = true):Number
     {
@@ -3688,9 +3707,9 @@
      *  @inheritDoc
      *
      *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function getLayoutBoundsWidth(postLayoutTransform:Boolean = true):Number
     {
@@ -3706,9 +3725,9 @@
      *  @inheritDoc
      *
      *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function getLayoutBoundsX(postLayoutTransform:Boolean = true):Number
     {
@@ -3724,9 +3743,9 @@
      *  @inheritDoc
      *
      *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function setLayoutBoundsPosition(x:Number, y:Number, postLayoutTransform:Boolean = true):void
     {
@@ -3737,9 +3756,9 @@
      *  @inheritDoc
      *
      *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function setLayoutBoundsSize(width:Number,
                                         height:Number,