You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ah...@apache.org on 2016/06/03 17:55:20 UTC

[1/6] git commit: [flex-asjs] [refs/heads/spark] - use IVisualElement instead of Object in addElement and friends

Repository: flex-asjs
Updated Branches:
  refs/heads/spark c4cb764eb -> 64ffbcba9


use IVisualElement instead of Object in addElement and friends


Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/ea5f2493
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/ea5f2493
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/ea5f2493

Branch: refs/heads/spark
Commit: ea5f249325f25ee83f4426739480cbc7c31f5895
Parents: c4cb764
Author: Alex Harui <ah...@apache.org>
Authored: Fri May 27 12:03:53 2016 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Fri May 27 12:03:53 2016 -0700

----------------------------------------------------------------------
 .../org/apache/flex/charts/core/IAxisGroup.as   |   3 +-
 .../flex/charts/core/IChartItemRenderer.as      |  45 ---------
 .../flex/charts/optimized/SVGChartDataGroup.as  |   5 +-
 .../flex/org/apache/flex/core/Application.as    |  32 +++---
 .../flex/org/apache/flex/core/ContainerBase.as  |  20 ++--
 .../flex/core/ContainerBaseStrandChildren.as    |  10 +-
 .../org/apache/flex/core/FilledRectangle.as     |   2 +-
 .../main/flex/org/apache/flex/core/IChild.as    |   2 +-
 .../flex/org/apache/flex/core/IContentView.as   |   2 +-
 .../flex/org/apache/flex/core/IItemRenderer.as  |   2 +-
 .../main/flex/org/apache/flex/core/IParent.as   |  10 +-
 .../main/flex/org/apache/flex/core/IUIBase.as   |  68 +------------
 .../flex/org/apache/flex/core/IVisualElement.as | 100 +++++++++++++++++++
 .../main/flex/org/apache/flex/core/ListBase.as  |  10 +-
 .../apache/flex/core/ListBaseStrandChildren.as  |  10 +-
 .../org/apache/flex/core/SimpleStatesImpl.as    |   6 +-
 .../main/flex/org/apache/flex/core/UIBase.as    |  34 ++++---
 .../apache/flex/utils/MXMLDataInterpreter.as    |   8 +-
 .../org/apache/flex/createjs/Application.as     |  33 +++---
 .../org/apache/flex/createjs/core/UIBase.as     |  26 +++--
 .../flex/core/StatesWithTransitionsImpl.as      |  11 +-
 .../apache/flex/flat/beads/CSSScrollBarView.as  |   9 +-
 .../apache/flex/flat/beads/DropDownListView.as  |   3 +-
 .../org/apache/flex/html/beads/ComboBoxView.as  |   7 +-
 .../org/apache/flex/html/beads/ContainerView.as |  11 +-
 .../apache/flex/html/beads/DropDownListView.as  |   4 +-
 .../apache/flex/html/beads/WebBrowserView.as    |   2 +-
 .../flex/html/supportClasses/DataGroup.as       |   5 +-
 .../main/flex/org/apache/flex/mobile/IView.as   |   4 +-
 .../flex/org/apache/flex/mobile/ManagerBase.as  |  11 +-
 .../apache/flex/mobile/StackedViewManager.as    |   5 +-
 31 files changed, 274 insertions(+), 226 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ea5f2493/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/core/IAxisGroup.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/core/IAxisGroup.as b/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/core/IAxisGroup.as
index c2c8f79..dcb37a3 100644
--- a/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/core/IAxisGroup.as
+++ b/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/core/IAxisGroup.as
@@ -20,6 +20,7 @@ package org.apache.flex.charts.core
 {
 	import org.apache.flex.core.graphics.IFill;
 	import org.apache.flex.core.graphics.IStroke;
+	import org.apache.flex.core.IVisualElement;
 
 	/**
 	 * The IAxisGroup defines the interface for classes that provide drawing
@@ -30,7 +31,7 @@ package org.apache.flex.charts.core
 	 *  @playerversion AIR 2.6
 	 *  @productversion FlexJS 0.0
 	 */
-	public interface IAxisGroup
+	public interface IAxisGroup extends IVisualElement
 	{
 		function removeAllElements():void;
 		

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ea5f2493/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/core/IChartItemRenderer.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/core/IChartItemRenderer.as b/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/core/IChartItemRenderer.as
index 16a2ec8..430f7af 100644
--- a/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/core/IChartItemRenderer.as
+++ b/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/core/IChartItemRenderer.as
@@ -67,50 +67,5 @@ package org.apache.flex.charts.core
 		function get yField():String;
 		function set yField(value:String):void;
 		
-		/**
-		 *  The x display position for the itemRenderer. This is set by
-		 *  the chart's layout manager.
-		 *
-		 *  @langversion 3.0
-		 *  @playerversion Flash 10.2
-		 *  @playerversion AIR 2.6
-		 *  @productversion FlexJS 0.0
-		 */
-		function set x(value:Number):void;
-		function get x():Number;
-		
-		/**
-		 *  The y display position for the itemRenderer. This is set by
-		 *  the chart's layout manager.
-		 *
-		 *  @langversion 3.0
-		 *  @playerversion Flash 10.2
-		 *  @playerversion AIR 2.6
-		 *  @productversion FlexJS 0.0
-		 */
-		function set y(value:Number):void;
-		function get y():Number;
-		
-		/**
-		 *  The display width for the itemRenderer. This is set by
-		 *  the chart's layout manager.
-		 *
-		 *  @langversion 3.0
-		 *  @playerversion Flash 10.2
-		 *  @playerversion AIR 2.6
-		 *  @productversion FlexJS 0.0
-		 */
-		function set width(value:Number):void;
-		
-		/**
-		 *  The display height for the itemRenderer. This is set by
-		 *  the chart's layout manager.
-		 *
-		 *  @langversion 3.0
-		 *  @playerversion Flash 10.2
-		 *  @playerversion AIR 2.6
-		 *  @productversion FlexJS 0.0
-		 */
-		function set height(value:Number):void;
 	}
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ea5f2493/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/optimized/SVGChartDataGroup.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/optimized/SVGChartDataGroup.as b/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/optimized/SVGChartDataGroup.as
index 3d5ec8c..d7fc8af 100644
--- a/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/optimized/SVGChartDataGroup.as
+++ b/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/optimized/SVGChartDataGroup.as
@@ -25,6 +25,7 @@ package org.apache.flex.charts.optimized
 	import org.apache.flex.core.IItemRenderer;
 	import org.apache.flex.core.IItemRendererParent;
 	import org.apache.flex.core.IStrand;
+	import org.apache.flex.core.IVisualElement;
 	import org.apache.flex.core.UIBase;
 	import org.apache.flex.core.graphics.GraphicsContainer;
 	import org.apache.flex.events.Event;
@@ -141,7 +142,7 @@ package org.apache.flex.charts.optimized
 		 *  @playerversion AIR 2.6
 		 *  @productversion FlexJS 0.0
 		 */
-		override public function addElement(value:Object, dispatchEvent:Boolean = true):void
+		override public function addElement(value:IVisualElement, dispatchEvent:Boolean = true):void
 		{
 			_children.push(value);
 			
@@ -160,7 +161,7 @@ package org.apache.flex.charts.optimized
 		 *  @playerversion AIR 2.6
 		 *  @productversion FlexJS 0.0
 		 */
-		override public function addElementAt(value:Object, index:int, dispatchEvent:Boolean = true):void
+		override public function addElementAt(value:IVisualElement, index:int, dispatchEvent:Boolean = true):void
 		{
 			if (index >= _children.length) _children.push(value);
 			else _children.splice(index, 0, value);

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ea5f2493/frameworks/projects/Core/src/main/flex/org/apache/flex/core/Application.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/Application.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/Application.as
index 97d0088..697f893 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/Application.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/Application.as
@@ -414,8 +414,9 @@ package org.apache.flex.core
          *  @playerversion Flash 10.2
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.0
+		 *  @flexjsignorecoercion org.apache.flex.core.IUIBase
          */
-        public function addElement(c:Object, dispatchEvent:Boolean = true):void
+        public function addElement(c:IVisualElement, dispatchEvent:Boolean = true):void
         {
             COMPILE::AS3 {
                 if (c is IUIBase)
@@ -427,8 +428,9 @@ package org.apache.flex.core
                     addChild(c as DisplayObject);
             }
             COMPILE::JS {
-                this.element.appendChild(c.element);
-                c.addedToParent();
+				var ui:IUIBase = c as IUIBase;
+                this.element.appendChild(ui.element);
+                ui.addedToParent();
             }
         }
 
@@ -439,8 +441,9 @@ package org.apache.flex.core
          *  @playerversion Flash 10.2
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.0
+		 *  @flexjsignorecoercion org.apache.flex.core.IUIBase
          */
-        public function addElementAt(c:Object, index:int, dispatchEvent:Boolean = true):void
+        public function addElementAt(c:IVisualElement, index:int, dispatchEvent:Boolean = true):void
         {
             COMPILE::AS3 {
                 if (c is IUIBase)
@@ -457,9 +460,10 @@ package org.apache.flex.core
                     addElement(c);
                 else
                 {
-                    element.insertBefore(c.positioner,
+					var ui:IUIBase = c as IUIBase;
+                    element.insertBefore(ui.positioner,
                         children[index]);
-                    c.addedToParent();
+                    ui.addedToParent();
                 }
 
             }
@@ -473,10 +477,10 @@ package org.apache.flex.core
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.0
          */
-        public function getElementAt(index:int):Object
+        public function getElementAt(index:int):IVisualElement
         {
             COMPILE::AS3 {
-                return getChildAt(index);
+                return getChildAt(index) as IVisualElement;
             }
             COMPILE::JS {
                 var children:NodeList = internalChildren();
@@ -491,8 +495,9 @@ package org.apache.flex.core
          *  @playerversion Flash 10.2
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.0
+		 *  @flexjsignorecoercion org.apache.flex.core.IUIBase
          */
-        public function getElementIndex(c:Object):int
+        public function getElementIndex(c:IVisualElement):int
         {
             COMPILE::AS3 {
                 if (c is IUIBase)
@@ -503,9 +508,10 @@ package org.apache.flex.core
             COMPILE::JS {
                 var children:NodeList = internalChildren();
                 var n:int = children.length;
+				var ui:IUIBase = c as IUIBase;
                 for (var i:int = 0; i < n; i++)
                 {
-                    if (children[i] == c.element)
+                    if (children[i] == ui.element)
                         return i;
                 }
                 return -1;
@@ -519,8 +525,9 @@ package org.apache.flex.core
          *  @playerversion Flash 10.2
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.0
+		 *  @flexjsignorecoercion org.apache.flex.core.IUIBase
          */
-        public function removeElement(c:Object, dispatchEvent:Boolean = true):void
+        public function removeElement(c:IVisualElement, dispatchEvent:Boolean = true):void
         {
             COMPILE::AS3 {
                 if (c is IUIBase)
@@ -531,7 +538,8 @@ package org.apache.flex.core
                     removeChild(c as DisplayObject);
             }
             COMPILE::JS {
-                element.removeChild(c.element);
+				var ui:IUIBase = c as IUIBase;
+                element.removeChild(ui.element);
             }
         }
 

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ea5f2493/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ContainerBase.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ContainerBase.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ContainerBase.as
index 2f7186f..1609c2a 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ContainerBase.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ContainerBase.as
@@ -106,7 +106,7 @@ package org.apache.flex.core
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.0
          */
-        override public function getElementAt(index:int):Object
+        override public function getElementAt(index:int):IVisualElement
         {
             var contentView:IParent = view as IParent;
             if (contentView != null) {
@@ -119,7 +119,7 @@ package org.apache.flex.core
         /**
          *  @private
          */
-        override public function getElementIndex(c:Object):int
+        override public function getElementIndex(c:IVisualElement):int
         {
 			var contentView:IParent = view as IParent;
 			if (contentView != null) {
@@ -132,7 +132,7 @@ package org.apache.flex.core
         /**
          *  @private
          */
-        override public function addElement(c:Object, dispatchEvent:Boolean = true):void
+        override public function addElement(c:IVisualElement, dispatchEvent:Boolean = true):void
         {
 			var contentView:IParent = view as IParent;
 			if (contentView != null) {
@@ -148,7 +148,7 @@ package org.apache.flex.core
         /**
          *  @private
          */
-        override public function addElementAt(c:Object, index:int, dispatchEvent:Boolean = true):void
+        override public function addElementAt(c:IVisualElement, index:int, dispatchEvent:Boolean = true):void
         {
 			var contentView:IParent = view as IParent;
 			if (contentView != null) {
@@ -164,7 +164,7 @@ package org.apache.flex.core
         /**
          *  @private
          */
-        override public function removeElement(c:Object, dispatchEvent:Boolean = true):void
+        override public function removeElement(c:IVisualElement, dispatchEvent:Boolean = true):void
         {
 			var contentView:IParent = view as IParent;
 			if (contentView != null) {
@@ -229,7 +229,7 @@ package org.apache.flex.core
          * @suppress {undefinedNames}
 		 * Support strandChildren.
 		 */
-		public function $addElement(c:Object, dispatchEvent:Boolean = true):void
+		public function $addElement(c:IVisualElement, dispatchEvent:Boolean = true):void
 		{
 			super.addElement(c, dispatchEvent);
 		}
@@ -239,7 +239,7 @@ package org.apache.flex.core
          * @suppress {undefinedNames}
 		 * Support strandChildren.
 		 */
-		public function $addElementAt(c:Object, index:int, dispatchEvent:Boolean = true):void
+		public function $addElementAt(c:IVisualElement, index:int, dispatchEvent:Boolean = true):void
 		{
 			super.addElementAt(c, index, dispatchEvent);
 		}
@@ -249,7 +249,7 @@ package org.apache.flex.core
          * @suppress {undefinedNames}
 		 * Support strandChildren.
 		 */
-		public function $removeElement(c:Object, dispatchEvent:Boolean = true):void
+		public function $removeElement(c:IVisualElement, dispatchEvent:Boolean = true):void
 		{
 			super.removeElement(c, dispatchEvent);
 		}
@@ -259,7 +259,7 @@ package org.apache.flex.core
          * @suppress {undefinedNames}
 		 * Support strandChildren.
 		 */
-		public function $getElementIndex(c:Object):int
+		public function $getElementIndex(c:IVisualElement):int
 		{
 			return super.getElementIndex(c);
 		}
@@ -269,7 +269,7 @@ package org.apache.flex.core
          * @suppress {undefinedNames}
 		 * Support strandChildren.
 		 */
-		public function $getElementAt(index:int):Object
+		public function $getElementAt(index:int):IVisualElement
 		{
 			return super.getElementAt(index);
 		}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ea5f2493/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ContainerBaseStrandChildren.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ContainerBaseStrandChildren.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ContainerBaseStrandChildren.as
index d171288..a5afbee 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ContainerBaseStrandChildren.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ContainerBaseStrandChildren.as
@@ -59,7 +59,7 @@ package org.apache.flex.core
 		/**
 		 *  @private
 		 */
-		public function addElement(c:Object, dispatchEvent:Boolean = true):void
+		public function addElement(c:IVisualElement, dispatchEvent:Boolean = true):void
 		{
 			owner.$addElement(c, dispatchEvent);
 		}
@@ -67,7 +67,7 @@ package org.apache.flex.core
 		/**
 		 *  @private
 		 */
-		public function addElementAt(c:Object, index:int, dispatchEvent:Boolean = true):void
+		public function addElementAt(c:IVisualElement, index:int, dispatchEvent:Boolean = true):void
 		{
 			owner.$addElementAt(c, index, dispatchEvent);
 		}
@@ -75,7 +75,7 @@ package org.apache.flex.core
 		/**
 		 *  @private
 		 */
-		public function removeElement(c:Object, dispatchEvent:Boolean = true):void
+		public function removeElement(c:IVisualElement, dispatchEvent:Boolean = true):void
 		{
 			owner.$removeElement(c, dispatchEvent);
 		}
@@ -83,7 +83,7 @@ package org.apache.flex.core
 		/**
 		 *  @private
 		 */
-		public function getElementIndex(c:Object):int
+		public function getElementIndex(c:IVisualElement):int
 		{
 			return owner.$getElementIndex(c);
 		}
@@ -91,7 +91,7 @@ package org.apache.flex.core
 		/**
 		 *  @private
 		 */
-		public function getElementAt(index:int):Object
+		public function getElementAt(index:int):IVisualElement
 		{
 			return owner.$getElementAt(index);
 		}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ea5f2493/frameworks/projects/Core/src/main/flex/org/apache/flex/core/FilledRectangle.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/FilledRectangle.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/FilledRectangle.as
index 2fcf8dd..368a4f8 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/FilledRectangle.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/FilledRectangle.as
@@ -51,7 +51,7 @@ package org.apache.flex.core
             COMPILE::AS3
             {
                 _shape = new flash.display.Shape();
-                this.addElement(_shape);
+                this.addChild(_shape);
             }
 		}
 		

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ea5f2493/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IChild.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IChild.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IChild.as
index f273f2e..97423f9 100755
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IChild.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IChild.as
@@ -32,7 +32,7 @@ package org.apache.flex.core
      *  @playerversion AIR 2.6
      *  @productversion FlexJS 0.0
      */
-    public interface IChild
+    public interface IChild extends IVisualElement
 	{
         /**
          *  The parent.

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ea5f2493/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IContentView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IContentView.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IContentView.as
index 42cc685..a6b64eb 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IContentView.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IContentView.as
@@ -32,7 +32,7 @@ package org.apache.flex.core
 		function get height():Number;
 		function set height(value:Number):void;
 
-		function addElement(value:Object, dispatchEvent:Boolean = true):void;
+		function addElement(value:IVisualElement, dispatchEvent:Boolean = true):void;
 		function removeAllElements():void;
 	}
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ea5f2493/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IItemRenderer.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IItemRenderer.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IItemRenderer.as
index 237517d..26b4c7c 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IItemRenderer.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IItemRenderer.as
@@ -29,7 +29,7 @@ package org.apache.flex.core
      *  @playerversion AIR 2.6
      *  @productversion FlexJS 0.0
      */
-	public interface IItemRenderer extends IEventDispatcher
+	public interface IItemRenderer extends IEventDispatcher, IVisualElement
 	{
         /**
          *  The data item to be displayed by the item renderer.

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ea5f2493/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IParent.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IParent.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IParent.as
index 2b49278..26620e3 100755
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IParent.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IParent.as
@@ -41,7 +41,7 @@ package org.apache.flex.core
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.0
          */
-        function addElement(c:Object, dispatchEvent:Boolean = true):void;
+        function addElement(c:IVisualElement, dispatchEvent:Boolean = true):void;
 
         /**
          *  Add a component to the parent.
@@ -55,7 +55,7 @@ package org.apache.flex.core
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.0
          */
-        function addElementAt(c:Object, index:int, dispatchEvent:Boolean = true):void;
+        function addElementAt(c:IVisualElement, index:int, dispatchEvent:Boolean = true):void;
         
         /**
          *  Gets the index of this subcomponent.
@@ -68,7 +68,7 @@ package org.apache.flex.core
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.0
          */
-        function getElementIndex(c:Object):int;
+        function getElementIndex(c:IVisualElement):int;
 
         /**
          *  Remove a component from the parent.
@@ -81,7 +81,7 @@ package org.apache.flex.core
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.0
          */
-       function removeElement(c:Object, dispatchEvent:Boolean = true):void;
+       function removeElement(c:IVisualElement, dispatchEvent:Boolean = true):void;
        
        /**
         *  The number of elements in the parent.
@@ -103,7 +103,7 @@ package org.apache.flex.core
         *  @playerversion AIR 2.6
         *  @productversion FlexJS 0.0
         */
-       function getElementAt(index:int):Object;
+       function getElementAt(index:int):IVisualElement;
 
     }
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ea5f2493/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IUIBase.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IUIBase.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IUIBase.as
index 349e24f..82f5803 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IUIBase.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IUIBase.as
@@ -28,7 +28,7 @@ package org.apache.flex.core
      *  @playerversion AIR 2.6
      *  @productversion FlexJS 0.0
      */
-	public interface IUIBase extends IStrand, IEventDispatcher
+	public interface IUIBase extends IStrand, IEventDispatcher, IVisualElement
 	{
         /**
          *  Each IUIBase has an element that is actually added to
@@ -80,72 +80,6 @@ package org.apache.flex.core
          */
 		function addedToParent():void;
 		
-		/**
-		 *  The alpha or opacity in the range of 0 to 1.
-		 *  
-		 *  @langversion 3.0
-		 *  @playerversion Flash 10.2
-		 *  @playerversion AIR 2.6
-		 *  @productversion FlexJS 0.0
-		 */
-		function get alpha():Number;
-		function set alpha(value:Number):void;
-		
-		/**
-		 *  The x co-ordinate or left side position of the bounding box.
-		 *  
-		 *  @langversion 3.0
-		 *  @playerversion Flash 10.2
-		 *  @playerversion AIR 2.6
-		 *  @productversion FlexJS 0.0
-		 */
-		function get x():Number;
-		function set x(value:Number):void;
-		
-		/**
-		 *  The y co-ordinate or top position of the bounding box.
-		 *  
-		 *  @langversion 3.0
-		 *  @playerversion Flash 10.2
-		 *  @playerversion AIR 2.6
-		 *  @productversion FlexJS 0.0
-		 */
-		function get y():Number;
-		function set y(value:Number):void;
-		
-		/**
-		 *  The width of the bounding box.
-		 *  
-		 *  @langversion 3.0
-		 *  @playerversion Flash 10.2
-		 *  @playerversion AIR 2.6
-		 *  @productversion FlexJS 0.0
-		 */
-		function get width():Number;
-		function set width(value:Number):void;
-		
-		/**
-		 * The height of the bounding box.
-		 *  
-		 *  @langversion 3.0
-		 *  @playerversion Flash 10.2
-		 *  @playerversion AIR 2.6
-		 *  @productversion FlexJS 0.0
-		 */
-		function get height():Number;
-		function set height(value:Number):void;
-        
-        /**
-         *  Whether the component is visible.
-         *  
-         *  @langversion 3.0
-         *  @playerversion Flash 10.2
-         *  @playerversion AIR 2.6
-         *  @productversion FlexJS 0.0
-         */
-        function get visible():Boolean;
-        function set visible(value:Boolean):void;
-        
         /**
          *  The top most event dispatcher.  Good for trying to capture
          *  all input events.

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ea5f2493/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IVisualElement.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IVisualElement.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IVisualElement.as
new file mode 100644
index 0000000..e1a4b7d
--- /dev/null
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IVisualElement.as
@@ -0,0 +1,100 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package org.apache.flex.core
+{
+    import org.apache.flex.events.IEventDispatcher;
+
+    /**
+     *  The IVisualElement interface is the basic interface for display components.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10.2
+     *  @playerversion AIR 2.6
+     *  @productversion FlexJS 0.0
+     */
+	public interface IVisualElement
+	{
+		/**
+		 *  The alpha or opacity in the range of 0 to 1.
+		 *  
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion FlexJS 0.0
+		 */
+		function get alpha():Number;
+		function set alpha(value:Number):void;
+		
+		/**
+		 *  The x co-ordinate or left side position of the bounding box.
+		 *  
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion FlexJS 0.0
+		 */
+		function get x():Number;
+		function set x(value:Number):void;
+		
+		/**
+		 *  The y co-ordinate or top position of the bounding box.
+		 *  
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion FlexJS 0.0
+		 */
+		function get y():Number;
+		function set y(value:Number):void;
+		
+		/**
+		 *  The width of the bounding box.
+		 *  
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion FlexJS 0.0
+		 */
+		function get width():Number;
+		function set width(value:Number):void;
+		
+		/**
+		 * The height of the bounding box.
+		 *  
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion FlexJS 0.0
+		 */
+		function get height():Number;
+		function set height(value:Number):void;
+        
+        /**
+         *  Whether the component is visible.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.0
+         */
+        function get visible():Boolean;
+        function set visible(value:Boolean):void;
+        
+    }
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ea5f2493/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ListBase.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ListBase.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ListBase.as
index 6380f2f..18b1fe9 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ListBase.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ListBase.as
@@ -77,7 +77,7 @@ package org.apache.flex.core
          * @suppress {undefinedNames}
 		 * Support strandChildren.
 		 */
-		public function $addElement(c:Object, dispatchEvent:Boolean = true):void
+		public function $addElement(c:IVisualElement, dispatchEvent:Boolean = true):void
 		{
 			super.addElement(c, dispatchEvent);
 		}
@@ -87,7 +87,7 @@ package org.apache.flex.core
          * @suppress {undefinedNames}
 		 * Support strandChildren.
 		 */
-		public function $addElementAt(c:Object, index:int, dispatchEvent:Boolean = true):void
+		public function $addElementAt(c:IVisualElement, index:int, dispatchEvent:Boolean = true):void
 		{
 			super.addElementAt(c, index, dispatchEvent);
 		}
@@ -97,7 +97,7 @@ package org.apache.flex.core
          * @suppress {undefinedNames}
 		 * Support strandChildren.
 		 */
-		public function $removeElement(c:Object, dispatchEvent:Boolean = true):void
+		public function $removeElement(c:IVisualElement, dispatchEvent:Boolean = true):void
 		{
 			super.removeElement(c, dispatchEvent);
 		}
@@ -107,7 +107,7 @@ package org.apache.flex.core
          * @suppress {undefinedNames}
 		 * Support strandChildren.
 		 */
-		public function $getElementIndex(c:Object):int
+		public function $getElementIndex(c:IVisualElement):int
 		{
 			return super.getElementIndex(c);
 		}
@@ -117,7 +117,7 @@ package org.apache.flex.core
          * @suppress {undefinedNames}
 		 * Support strandChildren.
 		 */
-		public function $getElementAt(index:int):Object
+		public function $getElementAt(index:int):IVisualElement
 		{
 			return super.getElementAt(index);
 		}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ea5f2493/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ListBaseStrandChildren.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ListBaseStrandChildren.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ListBaseStrandChildren.as
index 3f77774..642817d 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ListBaseStrandChildren.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ListBaseStrandChildren.as
@@ -60,7 +60,7 @@ package org.apache.flex.core
 		/**
 		 *  @private
 		 */
-		public function addElement(c:Object, dispatchEvent:Boolean = true):void
+		public function addElement(c:IVisualElement, dispatchEvent:Boolean = true):void
 		{
 			owner.$addElement(c, dispatchEvent);
 		}
@@ -68,7 +68,7 @@ package org.apache.flex.core
 		/**
 		 *  @private
 		 */
-		public function addElementAt(c:Object, index:int, dispatchEvent:Boolean = true):void
+		public function addElementAt(c:IVisualElement, index:int, dispatchEvent:Boolean = true):void
 		{
 			owner.$addElementAt(c, index, dispatchEvent);
 		}
@@ -76,7 +76,7 @@ package org.apache.flex.core
 		/**
 		 *  @private
 		 */
-		public function removeElement(c:Object, dispatchEvent:Boolean = true):void
+		public function removeElement(c:IVisualElement, dispatchEvent:Boolean = true):void
 		{
 			owner.$removeElement(c, dispatchEvent);
 		}
@@ -84,7 +84,7 @@ package org.apache.flex.core
 		/**
 		 *  @private
 		 */
-		public function getElementIndex(c:Object):int
+		public function getElementIndex(c:IVisualElement):int
 		{
 			return owner.$getElementIndex(c);
 		}
@@ -92,7 +92,7 @@ package org.apache.flex.core
 		/**
 		 *  @private
 		 */
-		public function getElementAt(index:int):Object
+		public function getElementAt(index:int):IVisualElement
 		{
 			return owner.$getElementAt(index);
 		}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ea5f2493/frameworks/projects/Core/src/main/flex/org/apache/flex/core/SimpleStatesImpl.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/SimpleStatesImpl.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/SimpleStatesImpl.as
index 4a27318..e9d48ea 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/SimpleStatesImpl.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/SimpleStatesImpl.as
@@ -148,6 +148,10 @@ package org.apache.flex.core
             }
         }
         
+		/**
+		 *  @flexjsignorecoercion org.apache.flex.core.IChild
+		 *  @flexjsignorecoercion org.apache.flex.core.IParent
+		 */
         private function apply(s:State):void
         {
             var arr:Array = s.overrides;
@@ -174,7 +178,7 @@ package org.apache.flex.core
                             parent = parent[ai.destination] as IParent;
                         if (ai.relativeTo != null)
                         {
-                            var child:Object = ai.document[ai.relativeTo];
+                            var child:IChild = ai.document[ai.relativeTo] as IChild;
                             if (ai.destination == null)
                                 parent = child.parent as IParent;
                             var index:int = parent.getElementIndex(child);

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ea5f2493/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIBase.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIBase.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIBase.as
index 2465a40..d71e35f 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIBase.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIBase.as
@@ -168,7 +168,7 @@ package org.apache.flex.core
 		 *  @playerversion AIR 2.6
 		 *  @productversion FlexJS 0.0
 		 */
-		public static const SIZE_CHANGED = "sizeChanged";
+		public static const SIZE_CHANGED:String = "sizeChanged";
 		
         /**
          *  Constructor.
@@ -1112,8 +1112,9 @@ package org.apache.flex.core
          *  @playerversion Flash 10.2
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.0
+		 *  @flexjsignorecoercion org.apache.flex.core.IUIBase
          */
-		public function addElement(c:Object, dispatchEvent:Boolean = true):void
+		public function addElement(c:IVisualElement, dispatchEvent:Boolean = true):void
 		{
             COMPILE::AS3
             {
@@ -1127,8 +1128,9 @@ package org.apache.flex.core
             }
             COMPILE::JS
             {
-                element.appendChild(c.positioner);
-                c.addedToParent();
+				var ui:IUIBase = c as IUIBase;
+                element.appendChild(ui.positioner);
+                ui.addedToParent();
             }
 		}
         
@@ -1139,8 +1141,9 @@ package org.apache.flex.core
          *  @playerversion Flash 10.2
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.0
+		 *  @flexjsignorecoercion org.apache.flex.core.IUIBase
          */
-        public function addElementAt(c:Object, index:int, dispatchEvent:Boolean = true):void
+        public function addElementAt(c:IVisualElement, index:int, dispatchEvent:Boolean = true):void
         {
             COMPILE::AS3
             {
@@ -1159,9 +1162,10 @@ package org.apache.flex.core
                     addElement(c);
                 else
                 {
-                    element.insertBefore(c.positioner,
+					var ui:IUIBase = c as IUIBase;
+                    element.insertBefore(ui.positioner,
                         children[index]);
-                    c.addedToParent();
+                    ui.addedToParent();
                 }
             }
         }
@@ -1174,11 +1178,11 @@ package org.apache.flex.core
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.0
          */
-        public function getElementAt(index:int):Object
+        public function getElementAt(index:int):IVisualElement
         {
             COMPILE::AS3
             {
-                return getChildAt(index);
+                return getChildAt(index) as IVisualElement;
             }
             COMPILE::JS
             {
@@ -1194,8 +1198,9 @@ package org.apache.flex.core
          *  @playerversion Flash 10.2
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.0
+		 *  @flexjsignorecoercion org.apache.flex.core.IUIBase
          */
-        public function getElementIndex(c:Object):int
+        public function getElementIndex(c:IVisualElement):int
         {
             COMPILE::AS3
             {
@@ -1208,9 +1213,10 @@ package org.apache.flex.core
             {
                 var children:Array = internalChildren();
                 var n:int = children.length;
+				var ui:IUIBase = c as IUIBase;
                 for (var i:int = 0; i < n; i++)
                 {
-                    if (children[i] == c.element)
+                    if (children[i] == ui.element)
                         return i;
                 }
                 return -1;                
@@ -1224,8 +1230,9 @@ package org.apache.flex.core
          *  @playerversion Flash 10.2
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.0
+		 *  @flexjsignorecoercion org.apache.flex.core.IUIBase
          */
-        public function removeElement(c:Object, dispatchEvent:Boolean = true):void
+        public function removeElement(c:IVisualElement, dispatchEvent:Boolean = true):void
         {
             COMPILE::AS3
             {
@@ -1236,7 +1243,8 @@ package org.apache.flex.core
             }
             COMPILE::JS
             {
-                element.removeChild(c.element);
+				var ui:IUIBase = c as IUIBase;
+                element.removeChild(ui.element);
             }
         }
 		

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ea5f2493/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/MXMLDataInterpreter.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/MXMLDataInterpreter.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/MXMLDataInterpreter.as
index c69b550..946b17a 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/MXMLDataInterpreter.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/MXMLDataInterpreter.as
@@ -30,6 +30,7 @@ import org.apache.flex.core.IDocument;
 import org.apache.flex.core.IMXMLDocument;
 import org.apache.flex.core.IParent;
 import org.apache.flex.core.IStrand;
+import org.apache.flex.core.IVisualElement;
 import org.apache.flex.events.Event;
 import org.apache.flex.events.IEventDispatcher;
 
@@ -168,6 +169,7 @@ public class MXMLDataInterpreter
     
     /**
      * @flexjsignorecoercion Function 
+     * @flexjsignorecoercion org.apache.flex.core.IUIBase 
      */
     private static function initializeStrandBasedObject(document:Object, parent:IParent, comp:Object, data:Array, i:int):int
     {
@@ -295,13 +297,13 @@ public class MXMLDataInterpreter
         }
         COMPILE::AS3
         {
-            if (parent && comp is DisplayObject)
-                parent.addElement(comp, !(parent is IContainer));
+            if (parent && comp is IVisualElement)
+                parent.addElement(comp as IVisualElement, !(parent is IContainer));
         }
         COMPILE::JS
         {
             if (parent && comp is IUIBase)
-                parent.addElement(comp, !(parent is IContainer));
+                parent.addElement(comp as IUIBase, !(parent is IContainer));
         }
         
         if (children)

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ea5f2493/frameworks/projects/CreateJS/src/main/flex/org/apache/flex/createjs/Application.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/CreateJS/src/main/flex/org/apache/flex/createjs/Application.as b/frameworks/projects/CreateJS/src/main/flex/org/apache/flex/createjs/Application.as
index 9eccec2..3e67071 100644
--- a/frameworks/projects/CreateJS/src/main/flex/org/apache/flex/createjs/Application.as
+++ b/frameworks/projects/CreateJS/src/main/flex/org/apache/flex/createjs/Application.as
@@ -22,7 +22,9 @@ package org.apache.flex.createjs
 	import org.apache.flex.core.IApplicationView;
 	import org.apache.flex.core.IParent;
 	import org.apache.flex.core.IStrand;
+    import org.apache.flex.core.IUIBase;
 	import org.apache.flex.core.IValuesImpl;
+	import org.apache.flex.core.IVisualElement;
 	import org.apache.flex.core.ValuesManager;
 	import org.apache.flex.events.Event;
 	import org.apache.flex.events.IEventDispatcher;
@@ -318,11 +320,13 @@ package org.apache.flex.createjs
 		 *  @playerversion AIR 2.6
 		 *  @productversion FlexJS 0.0
          *  @flexjsignorecoercion createjs.DisplayObject
+         *  @flexjsignorecoercion org.apache.flex.core.IUIBase
 		 */
-		public function addElement(c:Object, dispatchEvent:Boolean = true):void
+		public function addElement(c:IVisualElement, dispatchEvent:Boolean = true):void
 		{
-			stage.addChild(c.element as DisplayObject);
-			c.addedToParent();
+			var ui:IUIBase = c as IUIBase;
+			stage.addChild(ui.element as DisplayObject);
+			ui.addedToParent();
 		}
 		
 		/**
@@ -333,11 +337,13 @@ package org.apache.flex.createjs
 		 *  @playerversion AIR 2.6
 		 *  @productversion FlexJS 0.0
          *  @flexjsignorecoercion createjs.DisplayObject
+         *  @flexjsignorecoercion org.apache.flex.core.IUIBase
 		 */
-		public function addElementAt(c:Object, index:int, dispatchEvent:Boolean = true):void
+		public function addElementAt(c:IVisualElement, index:int, dispatchEvent:Boolean = true):void
 		{
-			stage.addChildAt(c.element as DisplayObject, index);
-			c.addedToParent();
+			var ui:IUIBase = c as IUIBase;
+			stage.addChildAt(ui.element as DisplayObject, index);
+			ui.addedToParent();
 		}
 		
 		/**
@@ -347,12 +353,13 @@ package org.apache.flex.createjs
 		 *  @playerversion Flash 10.2
 		 *  @playerversion AIR 2.6
 		 *  @productversion FlexJS 0.0
+         *  @flexjsignorecoercion org.apache.flex.core.IVisualElement
          *  @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement
 		 */
-		public function getElementAt(index:int):Object
+		public function getElementAt(index:int):IVisualElement
 		{
 			var c:WrappedHTMLElement = stage.getChildAt(index) as WrappedHTMLElement;
-			return c.flexjs_wrapper;
+			return c.flexjs_wrapper as IVisualElement;
 		}
 		
 		/**
@@ -363,10 +370,11 @@ package org.apache.flex.createjs
 		 *  @playerversion AIR 2.6
 		 *  @productversion FlexJS 0.0
          *  @flexjsignorecoercion createjs.DisplayObject
+         *  @flexjsignorecoercion org.apache.flex.core.IUIBase
 		 */
-		public function getElementIndex(c:Object):int
+		public function getElementIndex(c:IVisualElement):int
 		{
-			return stage.getChildIndex(c.element as DisplayObject)
+			return stage.getChildIndex((c as IUIBase).element as DisplayObject)
 		}
 		
 		/**
@@ -376,10 +384,11 @@ package org.apache.flex.createjs
 		 *  @playerversion Flash 10.2
 		 *  @playerversion AIR 2.6
 		 *  @productversion FlexJS 0.0
+         *  @flexjsignorecoercion org.apache.flex.core.IUIBase
 		 */
-		public function removeElement(c:Object, dispatchEvent:Boolean = true):void
+		public function removeElement(c:IVisualElement, dispatchEvent:Boolean = true):void
 		{
-			stage.removeChild(c.element as DisplayObject);
+			stage.removeChild((c as IUIBase).element as DisplayObject);
 		}
 		
 		/**

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ea5f2493/frameworks/projects/CreateJS/src/main/flex/org/apache/flex/createjs/core/UIBase.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/CreateJS/src/main/flex/org/apache/flex/createjs/core/UIBase.as b/frameworks/projects/CreateJS/src/main/flex/org/apache/flex/createjs/core/UIBase.as
index 568d954..a33ca13 100644
--- a/frameworks/projects/CreateJS/src/main/flex/org/apache/flex/createjs/core/UIBase.as
+++ b/frameworks/projects/CreateJS/src/main/flex/org/apache/flex/createjs/core/UIBase.as
@@ -30,6 +30,7 @@ package org.apache.flex.createjs.core
 	import org.apache.flex.core.IBeadController;
     import org.apache.flex.core.IFlexJSElement;
     import org.apache.flex.core.IUIBase;
+    import org.apache.flex.core.IVisualElement;
 	import org.apache.flex.core.ValuesManager;
 	import org.apache.flex.events.Event;
 	import org.apache.flex.events.IEventDispatcher;
@@ -334,49 +335,54 @@ package org.apache.flex.createjs.core
         /**
          * @flexjsignorecoercion createjs.Container
          * @flexjsignorecoercion createjs.DisplayObject
+         * @flexjsignorecoercion org.apache.flex.core.IUIBase
          */
-        public function addElement(c:Object, dispatchEvent:Boolean = true):void
+        public function addElement(c:IVisualElement, dispatchEvent:Boolean = true):void
         {
-            (element as Container).addChild(c.element as DisplayObject);
+            (element as Container).addChild((c as IUIBase).element as DisplayObject);
         }
         
         /**
          * @flexjsignorecoercion createjs.Container
          * @flexjsignorecoercion createjs.DisplayObject
+         * @flexjsignorecoercion org.apache.flex.core.IVisualElement
          */
-        public function addElementAt(c:Object, index:int, dispatchEvent:Boolean = true):void
+        public function addElementAt(c:IVisualElement, index:int, dispatchEvent:Boolean = true):void
         {
-            (element as Container).addChildAt(c.element as DisplayObject, index);
+            (element as Container).addChildAt((c as IUIBase).element as DisplayObject, index);
         }
         
         
         /**
          * @flexjsignorecoercion createjs.Container
          * @flexjsignorecoercion createjs.DisplayObject
+         * @flexjsignorecoercion org.apache.flex.core.IVisualElement
          */
-        public function getElementIndex(c:Object):int
+        public function getElementIndex(c:IVisualElement):int
         {
-            return (element as Container).getChildIndex(c.element as DisplayObject);
+            return (element as Container).getChildIndex((c as IUIBase).element as DisplayObject);
         }
         
 
         /**
          * @flexjsignorecoercion createjs.Container
          * @flexjsignorecoercion createjs.DisplayObject
+         * @flexjsignorecoercion org.apache.flex.core.IVisualElement
          */
-        public function removeElement(c:Object, dispatchEvent:Boolean = true):void
+        public function removeElement(c:IVisualElement, dispatchEvent:Boolean = true):void
         {
-            (element as Container).removeChild(c.element as DisplayObject);
+            (element as Container).removeChild((c as IUIBase).element as DisplayObject);
         }
         
 
         /**
          * @flexjsignorecoercion createjs.Container
          * @flexjsignorecoercion createjs.DisplayObject
+         * @flexjsignorecoercion org.apache.flex.core.IVisualElement
          */
-        public function getElementAt(index:int):Object
+        public function getElementAt(index:int):IVisualElement
         {
-            return (element as Container).getChildAt(index);
+            return (element as Container).getChildAt(index) as IVisualElement;
         }
         
 

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ea5f2493/frameworks/projects/Effects/src/main/flex/org/apache/flex/core/StatesWithTransitionsImpl.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Effects/src/main/flex/org/apache/flex/core/StatesWithTransitionsImpl.as b/frameworks/projects/Effects/src/main/flex/org/apache/flex/core/StatesWithTransitionsImpl.as
index 9549bc8..ed99875 100644
--- a/frameworks/projects/Effects/src/main/flex/org/apache/flex/core/StatesWithTransitionsImpl.as
+++ b/frameworks/projects/Effects/src/main/flex/org/apache/flex/core/StatesWithTransitionsImpl.as
@@ -19,6 +19,7 @@
 package org.apache.flex.core
 {
         
+    import org.apache.flex.core.IChild;
     import org.apache.flex.core.IParent;
     import org.apache.flex.core.IStatesObject;
     import org.apache.flex.effects.Effect;
@@ -266,6 +267,10 @@ package org.apache.flex.core
             }
         }
         
+		/**
+		 *  @flexjsignorecoercion org.apache.flex.core.IChild
+		 *  @flexjsignorecoercion org.apache.flex.core.IParent
+		 */
         private function apply(oldState:State, s:State):void
         {
             var arr:Array = s.overrides;
@@ -286,7 +291,7 @@ package org.apache.flex.core
                         }
                     }
                     var childrenAdded:Boolean = false;
-                    for each (var item:Object in ai.items)
+                    for each (var item:IChild in ai.items)
                     {
                         if (!isItemInState(item, oldState))
                         {
@@ -295,9 +300,9 @@ package org.apache.flex.core
                                 parent = parent[ai.destination] as IParent;
                             if (ai.relativeTo != null)
                             {
-                                var child:Object = ai.document[ai.relativeTo];
+                                var child:IChild = ai.document[ai.relativeTo];
                                 if (ai.destination)
-                                    parent = IChild(child).parent as IParent;
+                                    parent = child.parent as IParent;
                                 var index:int = parent.getElementIndex(child);
                                 if (ai.position == "after")
                                     index++;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ea5f2493/frameworks/projects/Flat/src/main/flex/org/apache/flex/flat/beads/CSSScrollBarView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Flat/src/main/flex/org/apache/flex/flat/beads/CSSScrollBarView.as b/frameworks/projects/Flat/src/main/flex/org/apache/flex/flat/beads/CSSScrollBarView.as
index 38583f6..85f97db 100644
--- a/frameworks/projects/Flat/src/main/flex/org/apache/flex/flat/beads/CSSScrollBarView.as
+++ b/frameworks/projects/Flat/src/main/flex/org/apache/flex/flat/beads/CSSScrollBarView.as
@@ -26,6 +26,7 @@ package org.apache.flex.flat.beads
 	import org.apache.flex.core.IScrollBarModel;
 	import org.apache.flex.core.IStrand;
 	import org.apache.flex.core.IUIBase;
+	import org.apache.flex.core.IVisualElement;
 	import org.apache.flex.core.Strand;
 	import org.apache.flex.core.UIBase;
 	import org.apache.flex.core.ValuesManager;
@@ -134,10 +135,10 @@ package org.apache.flex.flat.beads
 			_thumb = new Button();				
             Button(_thumb).className = "vscrollbar-thumb";
             
-            UIBase(value).addElement(_decrement);
-            UIBase(value).addElement(_increment);
-            UIBase(value).addElement(_track);
-            UIBase(value).addElement(_thumb);
+            UIBase(value).addElement(_decrement as IVisualElement);
+            UIBase(value).addElement(_increment as IVisualElement);
+            UIBase(value).addElement(_track as IVisualElement);
+            UIBase(value).addElement(_thumb as IVisualElement);
             
             IEventDispatcher(_strand).addEventListener("heightChanged", changeHandler);
             

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ea5f2493/frameworks/projects/Flat/src/main/flex/org/apache/flex/flat/beads/DropDownListView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Flat/src/main/flex/org/apache/flex/flat/beads/DropDownListView.as b/frameworks/projects/Flat/src/main/flex/org/apache/flex/flat/beads/DropDownListView.as
index f7357b9..3b416ee 100644
--- a/frameworks/projects/Flat/src/main/flex/org/apache/flex/flat/beads/DropDownListView.as
+++ b/frameworks/projects/Flat/src/main/flex/org/apache/flex/flat/beads/DropDownListView.as
@@ -36,6 +36,7 @@ package org.apache.flex.flat.beads
 	import org.apache.flex.core.ISelectionModel;
 	import org.apache.flex.core.IStrand;
 	import org.apache.flex.core.IUIBase;
+	import org.apache.flex.core.IVisualElement;
 	import org.apache.flex.core.ValuesManager;
 	import org.apache.flex.events.Event;
 	import org.apache.flex.events.IEventDispatcher;
@@ -296,7 +297,7 @@ package org.apache.flex.flat.beads
                     while (host && !(host is IPopUpHost))
                         host = host.parent;
                     if (host)
-                        IPopUpHost(host).addElement(popUp);
+                        IPopUpHost(host).addElement(popUp as IVisualElement);
                 }
                 else
                 {

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ea5f2493/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ComboBoxView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ComboBoxView.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ComboBoxView.as
index e725517..5ff7bcb 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ComboBoxView.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ComboBoxView.as
@@ -29,6 +29,7 @@ package org.apache.flex.html.beads
 	import org.apache.flex.core.IStrand;
 	import org.apache.flex.core.ValuesManager;
     import org.apache.flex.core.IParent;
+    import org.apache.flex.core.IVisualElement;
 	import org.apache.flex.events.Event;
 	import org.apache.flex.events.IEventDispatcher;
 	import org.apache.flex.html.Button;
@@ -201,6 +202,10 @@ package org.apache.flex.html.beads
 		{
 			return _popUpVisible;
 		}
+		/**
+		 *  @private
+		 *  @flexjsignorecoercion org.apache.flex.core.IVisualElement
+		 */
 		public function set popUpVisible(value:Boolean):void
 		{
 			if (value != _popUpVisible)
@@ -218,7 +223,7 @@ package org.apache.flex.html.beads
 					while (host && !(host is IPopUpHost))
 						host = host.parent;
                     if (host)
-    					IPopUpHost(host).addElement(popUp);
+    					IPopUpHost(host).addElement(popUp as IVisualElement);
 				}
 				else
 				{

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ea5f2493/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ContainerView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ContainerView.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ContainerView.as
index 26e78be..3813c5b 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ContainerView.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ContainerView.as
@@ -31,6 +31,7 @@ package org.apache.flex.html.beads
 	import org.apache.flex.core.IParentIUIBase;
 	import org.apache.flex.core.IStrand;
 	import org.apache.flex.core.IUIBase;
+	import org.apache.flex.core.IVisualElement;
 	import org.apache.flex.core.IViewport;
 	import org.apache.flex.core.IViewportModel;
 	import org.apache.flex.core.UIBase;
@@ -143,7 +144,7 @@ package org.apache.flex.html.beads
 		/**
 		 * @private
 		 */
-		public function addElement(c:Object, dispatchEvent:Boolean = true):void
+		public function addElement(c:IVisualElement, dispatchEvent:Boolean = true):void
 		{
 			contentView.addElement(c, dispatchEvent);
 		}
@@ -151,7 +152,7 @@ package org.apache.flex.html.beads
 		/**
 		 * @private
 		 */
-		public function addElementAt(c:Object, index:int, dispatchEvent:Boolean = true):void
+		public function addElementAt(c:IVisualElement, index:int, dispatchEvent:Boolean = true):void
 		{
 			contentView.addElementAt(c, index, dispatchEvent);
 		}
@@ -159,7 +160,7 @@ package org.apache.flex.html.beads
 		/**
 		 * @private
 		 */
-		public function getElementIndex(c:Object):int
+		public function getElementIndex(c:IVisualElement):int
 		{
 			return contentView.getElementIndex(c);
 		}
@@ -167,7 +168,7 @@ package org.apache.flex.html.beads
 		/**
 		 * @private
 		 */
-		public function removeElement(c:Object, dispatchEvent:Boolean = true):void
+		public function removeElement(c:IVisualElement, dispatchEvent:Boolean = true):void
 		{
 			contentView.removeElement(c, dispatchEvent);
 		}
@@ -183,7 +184,7 @@ package org.apache.flex.html.beads
 		/**
 		 * @private
 		 */
-		public function getElementAt(index:int):Object
+		public function getElementAt(index:int):IVisualElement
 		{
 			return contentView.getElementAt(index);
 		}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ea5f2493/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/DropDownListView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/DropDownListView.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/DropDownListView.as
index 1334227..f34a5dc 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/DropDownListView.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/DropDownListView.as
@@ -32,6 +32,7 @@ package org.apache.flex.html.beads
 	import org.apache.flex.core.IPopUpHost;
 	import org.apache.flex.core.ISelectionModel;
 	import org.apache.flex.core.IStrand;
+    import org.apache.flex.core.IVisualElement;
 	import org.apache.flex.core.ValuesManager;
 	import org.apache.flex.events.Event;
 	import org.apache.flex.events.IEventDispatcher;
@@ -274,6 +275,7 @@ package org.apache.flex.html.beads
         
         /**
          *  @private
+		 *  @flexjsignorecoercion org.apache.flex.core.IVisualElement
          */
         public function set popUpVisible(value:Boolean):void
         {
@@ -287,7 +289,7 @@ package org.apache.flex.html.beads
                     while (host && !(host is IPopUpHost))
                         host = host.parent;
                     if (host)
-                        IPopUpHost(host).addElement(popUp);
+                        IPopUpHost(host).addElement(popUp as IVisualElement);
                 }
                 else
                 {

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ea5f2493/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/WebBrowserView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/WebBrowserView.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/WebBrowserView.as
index 46c9484..2350b2d 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/WebBrowserView.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/WebBrowserView.as
@@ -94,7 +94,7 @@ package org.apache.flex.html.beads
 			loader.y = 0;
 			loader.width = host.width;
 			loader.height = host.height;
-			(host as UIBase).addElement(loader);
+			(host as UIBase).addChild(loader);
 		}
 
 		/**

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ea5f2493/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/DataGroup.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/DataGroup.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/DataGroup.as
index 15b6587..8fe8b22 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/DataGroup.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/DataGroup.as
@@ -24,6 +24,7 @@ package org.apache.flex.html.supportClasses
 	import org.apache.flex.core.IRollOverModel;
 	import org.apache.flex.core.ISelectionModel;
 	import org.apache.flex.core.IStrand;
+	import org.apache.flex.core.IVisualElement;
     import org.apache.flex.core.UIBase;
 	import org.apache.flex.events.IEventDispatcher;
 	import org.apache.flex.events.Event;
@@ -58,7 +59,7 @@ package org.apache.flex.html.supportClasses
 		/**
 		 * @private
 		 */
-		override public function addElement(c:Object, dispatchEvent:Boolean = true):void
+		override public function addElement(c:IVisualElement, dispatchEvent:Boolean = true):void
 		{
 			super.addElement(c, dispatchEvent);
 			
@@ -72,7 +73,7 @@ package org.apache.flex.html.supportClasses
 		/**
 		 * @private
 		 */
-		override public function removeElement(c:Object, dispatchEvent:Boolean = true):void
+		override public function removeElement(c:IVisualElement, dispatchEvent:Boolean = true):void
 		{	
 			super.removeElement(c, dispatchEvent);
 			

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ea5f2493/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/IView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/IView.as b/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/IView.as
index 232d212..7957f21 100644
--- a/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/IView.as
+++ b/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/IView.as
@@ -18,6 +18,8 @@
 ////////////////////////////////////////////////////////////////////////////////
 package org.apache.flex.mobile
 {
+	import org.apache.flex.core.IVisualElement;
+	
 	/**
 	 * The IView interface is implemented by any class that can be managed by
 	 * an IViewManager.
@@ -27,7 +29,7 @@ package org.apache.flex.mobile
 	 *  @playerversion AIR 2.6
 	 *  @productversion FlexJS 0.0
 	 */
-	public interface IView
+	public interface IView extends IVisualElement
 	{
 		/**
 		 * The parent view manager.

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ea5f2493/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/ManagerBase.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/ManagerBase.as b/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/ManagerBase.as
index 5c2e149..8861131 100644
--- a/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/ManagerBase.as
+++ b/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/ManagerBase.as
@@ -19,6 +19,7 @@
 package org.apache.flex.mobile
 {
 	import org.apache.flex.core.IChrome;
+	import org.apache.flex.core.IVisualElement;
 	import org.apache.flex.core.UIBase;
 	import org.apache.flex.events.Event;
 	COMPILE::JS
@@ -118,7 +119,7 @@ package org.apache.flex.mobile
 		 *  @playerversion AIR 2.6
 		 *  @productversion FlexJS 0.0
 		 */
-		override public function addElement(c:Object, dispatchEvent:Boolean=true):void
+		override public function addElement(c:IVisualElement, dispatchEvent:Boolean=true):void
 		{
 			if (c is IChrome) {
 				super.addElementAt(c,0,dispatchEvent);
@@ -134,7 +135,7 @@ package org.apache.flex.mobile
 		/**
 		 * @private.
 		 */
-		override public function addElementAt(c:Object, index:int, dispatchEvent:Boolean=true):void
+		override public function addElementAt(c:IVisualElement, index:int, dispatchEvent:Boolean=true):void
 		{
 			if (c is IChrome) {
 				super.addElementAt(c, index, dispatchEvent);
@@ -147,7 +148,7 @@ package org.apache.flex.mobile
 		/**
 		 * @private
 		 */
-		override public function removeElement(c:Object, dispatchEvent:Boolean=true):void
+		override public function removeElement(c:IVisualElement, dispatchEvent:Boolean=true):void
 		{
 			if (c is IChrome) {
 				super.removeElement(c, dispatchEvent);
@@ -160,7 +161,7 @@ package org.apache.flex.mobile
 		/**
 		 * @private
 		 */
-		override public function getElementAt(index:int):Object
+		override public function getElementAt(index:int):IVisualElement
 		{
 			return _contentArea.getElementAt(index);
 		}
@@ -168,7 +169,7 @@ package org.apache.flex.mobile
 		/**
 		 * @private
 		 */
-		override public function getElementIndex(c:Object):int
+		override public function getElementIndex(c:IVisualElement):int
 		{
 			return _contentArea.getElementIndex(c);
 		}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ea5f2493/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/StackedViewManager.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/StackedViewManager.as b/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/StackedViewManager.as
index 4b29d28..aa1dfd7 100644
--- a/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/StackedViewManager.as
+++ b/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/StackedViewManager.as
@@ -144,14 +144,15 @@ package org.apache.flex.mobile
 		 *  @playerversion Flash 10.2
 		 *  @playerversion AIR 2.6
 		 *  @productversion FlexJS 0.0
+		 *  @flexjsignorecoercion org.apache.flex.mobile.IView
 		 */
 		public function pop():void
 		{
 			if (ViewManagerModel(model).views.length > 1) {
-				var lastView:Object = ViewManagerModel(model).popView();
+				var lastView:IView = ViewManagerModel(model).popView() as IView;
 				removeElement(_topView);
 				addElement(lastView);
-				_topView = lastView as IView;
+				_topView = lastView;
 				
 				dispatchEvent( new Event("viewChanged") );
 			}


[6/6] git commit: [flex-asjs] [refs/heads/spark] - clean compile for MX with Label and App (except for an Array with flags scenario)

Posted by ah...@apache.org.
clean compile for MX with Label and App (except for an Array with flags scenario)


Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/64ffbcba
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/64ffbcba
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/64ffbcba

Branch: refs/heads/spark
Commit: 64ffbcba9640923a9b09d2fcd5eb9eb4bc603e3a
Parents: 4f3802e
Author: Alex Harui <ah...@apache.org>
Authored: Fri Jun 3 10:55:02 2016 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Fri Jun 3 10:55:02 2016 -0700

----------------------------------------------------------------------
 .../org/apache/flex/core/HTMLElementWrapper.as  |  10 ++
 .../main/flex/org/apache/flex/events/Event.as   |   9 ++
 .../org/apache/flex/events/IEventDispatcher.as  |   2 +-
 .../main/flex/org/apache/flex/geom/Rectangle.as |  19 +++
 .../main/flex/flex/display/InteractiveObject.as |  11 +-
 .../MX/src/main/flex/flex/display/Shape.as      | 114 ++++++++++++++++++
 .../MX/src/main/flex/flex/display/Sprite.as     |   2 +-
 .../MX/src/main/flex/flex/events/FocusEvent.as  |  39 +++++++
 .../MX/src/main/flex/flex/events/TimerEvent.as  |  18 +++
 .../MX/src/main/flex/flex/text/TextField.as     |  14 +--
 .../MX/src/main/flex/flex/ui/Keyboard.as        |   1 +
 .../mx/containers/utilityClasses/BoxLayout.as   |   5 +
 .../containers/utilityClasses/CanvasLayout.as   |  26 ++++-
 .../utilityClasses/ConstraintColumn.as          |  11 +-
 .../containers/utilityClasses/ConstraintRow.as  |  13 ++-
 .../MX/src/main/flex/mx/controls/Label.as       |   3 +-
 .../mx/controls/listClasses/BaseListData.as     |   2 +-
 .../controls/listClasses/IListItemRenderer.as   |   2 +-
 .../MX/src/main/flex/mx/core/Application.as     |  25 ++++
 .../MX/src/main/flex/mx/core/Container.as       |  73 ++++++++++--
 .../flex/mx/core/ContainerRawChildrenList.as    |   9 +-
 .../flex/mx/core/IVisualElementContainer.as     |   2 +
 .../main/flex/mx/events/IndexChangedEvent.as    |  11 +-
 .../src/main/flex/mx/geom/RoundedRectangle.as   |   1 +
 .../src/main/flex/mx/managers/FocusManager.as   | 116 +++++++++++++++++--
 .../MX/src/main/flex/mx/utils/LoaderUtil.as     |  32 +++--
 26 files changed, 513 insertions(+), 57 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/64ffbcba/frameworks/projects/Core/src/main/flex/org/apache/flex/core/HTMLElementWrapper.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/HTMLElementWrapper.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/HTMLElementWrapper.as
index 4d4999b..60fe7e8 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/HTMLElementWrapper.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/HTMLElementWrapper.as
@@ -261,5 +261,15 @@ package org.apache.flex.core
             
             return source.dispatchEvent(e);
         }
+		
+		public function get tabIndex():int
+		{
+			return _element.tabIndex;
+		}
+		
+		public function set tabIndex(value:int):void
+		{
+			_element.tabIndex = value;
+		}
 	}
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/64ffbcba/frameworks/projects/Core/src/main/flex/org/apache/flex/events/Event.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/events/Event.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/events/Event.as
index 8076c66..f0d2e19 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/events/Event.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/events/Event.as
@@ -130,5 +130,14 @@ package org.apache.flex.events
 		{
 			return new org.apache.flex.events.Event(type, bubbles, cancelable);
 		}
+		
+		/**
+		 */
+		public function isDefaultPrevented():Boolean
+		{
+			return defaultPrevented;
+		}
+		
+
     }
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/64ffbcba/frameworks/projects/Core/src/main/flex/org/apache/flex/events/IEventDispatcher.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/events/IEventDispatcher.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/events/IEventDispatcher.as
index 6d8c684..aecbb4d 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/events/IEventDispatcher.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/events/IEventDispatcher.as
@@ -43,7 +43,7 @@ package org.apache.flex.events
 	{
         function addEventListener(type:String, handler:Function, opt_capture:Boolean = false, opt_handlerScope:Object = null):void;
         function removeEventListener(type:String, handler:Function, opt_capture:Boolean = false, opt_handlerScope:Object = null):void;
-        //function hasEventListener(type:String):Boolean;
+        function hasEventListener(type:String):Boolean;
         function dispatchEvent(event:Object):Boolean;
 	}
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/64ffbcba/frameworks/projects/Core/src/main/flex/org/apache/flex/geom/Rectangle.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/geom/Rectangle.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/geom/Rectangle.as
index 3f48dc0..93bee93 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/geom/Rectangle.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/geom/Rectangle.as
@@ -97,7 +97,26 @@ public class Rectangle
     {
         height = value - top;
     }
+	
+	public function get x():Number
+	{
+		return left;
+	}
+	public function set x(value:Number):void
+	{
+		left = value;
+	}
+	
+	public function get y():Number
+	{
+		return top;
+	}
 
+	public function set y(value:Number):void
+	{
+		top = value;
+	}
+	
 	public static function convert(obj:Object):org.apache.flex.geom.Rectangle
 	{
 		return new org.apache.flex.geom.Rectangle(obj.x, obj.y, obj.width, obj.height);

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/64ffbcba/frameworks/projects/MX/src/main/flex/flex/display/InteractiveObject.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/flex/display/InteractiveObject.as b/frameworks/projects/MX/src/main/flex/flex/display/InteractiveObject.as
index 435e6d2..b2e542c 100644
--- a/frameworks/projects/MX/src/main/flex/flex/display/InteractiveObject.as
+++ b/frameworks/projects/MX/src/main/flex/flex/display/InteractiveObject.as
@@ -21,6 +21,15 @@ package flex.display
 {
 	public interface InteractiveObject extends DisplayObject
 	{
-		
+		/** 
+		 *  @copy flash.display.InteractiveObject#tabIndex
+		 *  
+		 *  @langversion 3.0
+		 *  @playerversion Flash 9
+		 *  @playerversion AIR 1.1
+		 *  @productversion Flex 3
+		 */
+		function get tabIndex():int;
+		function set tabIndex(index:int):void;		
 	}
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/64ffbcba/frameworks/projects/MX/src/main/flex/flex/display/Shape.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/flex/display/Shape.as b/frameworks/projects/MX/src/main/flex/flex/display/Shape.as
new file mode 100644
index 0000000..2593600
--- /dev/null
+++ b/frameworks/projects/MX/src/main/flex/flex/display/Shape.as
@@ -0,0 +1,114 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package flex.display
+{	
+	import org.apache.flex.core.graphics.GraphicsContainer;
+	import org.apache.flex.geom.Point;
+	import org.apache.flex.utils.PointUtils;
+	import mx.managers.SystemManagerGlobals;
+	
+	public class Shape extends GraphicsContainer
+	{
+		COMPILE::JS
+		private var _name:String;
+		COMPILE::JS
+		public function get name():String
+		{
+			return _name;
+		}
+		COMPILE::JS
+		public function set name(value:String):void
+		{
+			_name = value;
+		}
+		
+		/**
+		 *  @flexjsignorecoercion flex.display.TopOfDisplayList
+		 */
+		public function get topOfDisplayList():TopOfDisplayList
+		{
+			return topMostEventDispatcher as TopOfDisplayList;
+		}
+
+		COMPILE::JS
+		/**
+		 *  @flexjsignorecoercion flex.display.DisplayObject
+		 */
+		public function get root():DisplayObject
+		{
+			return topMostEventDispatcher as DisplayObject;
+		}
+		
+		COMPILE::JS
+		/**
+		 *  @flexjsignorecoercion flex.display.DisplayObject
+		 */
+		public function contains(child:DisplayObject):Boolean
+		{
+			while (child)
+			{
+				if (child.parent == this)
+					return true;
+				child = child.parent as DisplayObject;
+			}
+			return topMostEventDispatcher as DisplayObject;
+		}
+		
+		COMPILE::JS
+		private var _graphics:Graphics;
+		
+		COMPILE::JS
+		/**
+		 *  @flexjsignorecoercion flex.display.DisplayObject
+		 */
+		public function get graphics():Graphics
+		{
+			if (!_graphics)
+				_graphics = new Graphics(this);
+			return _graphics
+		}
+
+		COMPILE::JS
+		public function get mouseX():Number
+		{
+			var pt:Point = new Point(SystemManagerGlobals.lastMouseEvent.screenX,
+									 SystemManagerGlobals.lastMouseEvent.screenY);
+			pt = PointUtils.globalToLocal(pt, this);
+			return pt.x;
+		}
+		
+		COMPILE::JS
+		public function get mouseY():Number
+		{
+			var pt:Point = new Point(SystemManagerGlobals.lastMouseEvent.screenX,
+				SystemManagerGlobals.lastMouseEvent.screenY);
+			pt = PointUtils.globalToLocal(pt, this);
+			return pt.x;
+		}
+		
+		COMPILE::JS
+		override public function get parent():DisplayObjectContainer
+		{
+			return super.parent as DisplayObjectContainer;
+		}
+
+	}
+	
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/64ffbcba/frameworks/projects/MX/src/main/flex/flex/display/Sprite.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/flex/display/Sprite.as b/frameworks/projects/MX/src/main/flex/flex/display/Sprite.as
index bd29b87..045039e 100644
--- a/frameworks/projects/MX/src/main/flex/flex/display/Sprite.as
+++ b/frameworks/projects/MX/src/main/flex/flex/display/Sprite.as
@@ -85,7 +85,7 @@ package flex.display
 		COMPILE::JS
 		public function addChildAt(child:DisplayObject, index:int):DisplayObject
 		{
-			addElement(child, index);
+			addElementAt(child, index);
 			return child;
 		}
 		

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/64ffbcba/frameworks/projects/MX/src/main/flex/flex/events/FocusEvent.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/flex/events/FocusEvent.as b/frameworks/projects/MX/src/main/flex/flex/events/FocusEvent.as
new file mode 100644
index 0000000..e529f15
--- /dev/null
+++ b/frameworks/projects/MX/src/main/flex/flex/events/FocusEvent.as
@@ -0,0 +1,39 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package flex.events
+{	
+    import flex.display.InteractiveObject;
+	
+	public class FocusEvent extends Event
+	{
+		public function FocusEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false, relatedObject:InteractiveObject = null,
+			shiftKey:Boolean = false, keyCode:uint = 0, direction:String = "none")
+		{
+			super(type, bubbles, cancelable);
+			this.relatedObject = relatedObject;
+		}
+		
+		public var relatedObject:InteractiveObject;
+		public var keyCode:uint;
+		public var shiftKey:Boolean;
+		
+		public static const FOCUS_IN:String = "focusIn";
+		public static const FOCUS_OUT:String = "focusOut";
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/64ffbcba/frameworks/projects/MX/src/main/flex/flex/events/TimerEvent.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/flex/events/TimerEvent.as b/frameworks/projects/MX/src/main/flex/flex/events/TimerEvent.as
index 9864b85..cd41889 100644
--- a/frameworks/projects/MX/src/main/flex/flex/events/TimerEvent.as
+++ b/frameworks/projects/MX/src/main/flex/flex/events/TimerEvent.as
@@ -1,3 +1,21 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
 package flex.events
 {	
 	public class TimerEvent extends Event

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/64ffbcba/frameworks/projects/MX/src/main/flex/flex/text/TextField.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/flex/text/TextField.as b/frameworks/projects/MX/src/main/flex/flex/text/TextField.as
index 116c7e3..92f27c8 100644
--- a/frameworks/projects/MX/src/main/flex/flex/text/TextField.as
+++ b/frameworks/projects/MX/src/main/flex/flex/text/TextField.as
@@ -426,19 +426,7 @@ public class TextField extends Label
 		_tabEnabled = value;
 		trace("TextField.tabEnabled not implemented");
 	}
-	
-	private var _tabIndex:int;
-	public function get tabIndex():int
-	{
-		trace("TextField.tabIndex not implemented");
-		return _tabIndex;
-	}
-	public function set tabIndex(value:int):void
-	{
-		_tabIndex = value;
-		trace("TextField.tabIndex not implemented");
-	}
-	
+		
 	private var _textColor:uint;
 	public function get textColor():uint
 	{

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/64ffbcba/frameworks/projects/MX/src/main/flex/flex/ui/Keyboard.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/flex/ui/Keyboard.as b/frameworks/projects/MX/src/main/flex/flex/ui/Keyboard.as
index 6573157..002adde 100644
--- a/frameworks/projects/MX/src/main/flex/flex/ui/Keyboard.as
+++ b/frameworks/projects/MX/src/main/flex/flex/ui/Keyboard.as
@@ -25,6 +25,7 @@ package flex.ui
 		{
 		}
 				
+		public static const TAB:int = 0x09;
 		public static const LEFT:int = 0x25;
 		public static const UP:int = 0x26;
 		public static const RIGHT:int = 0x27;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/64ffbcba/frameworks/projects/MX/src/main/flex/mx/containers/utilityClasses/BoxLayout.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/containers/utilityClasses/BoxLayout.as b/frameworks/projects/MX/src/main/flex/mx/containers/utilityClasses/BoxLayout.as
index 691af3c..18e9260 100644
--- a/frameworks/projects/MX/src/main/flex/mx/containers/utilityClasses/BoxLayout.as
+++ b/frameworks/projects/MX/src/main/flex/mx/containers/utilityClasses/BoxLayout.as
@@ -173,12 +173,17 @@ public class BoxLayout extends Layout
 		var horizontalAlign:Number = getHorizontalAlignValue();
 		var verticalAlign:Number = getVerticalAlignValue();
 
+		COMPILE::LATER
+		{
 		var mw:Number = target.scaleX > 0 && target.scaleX != 1 ?
 						target.minWidth / Math.abs(target.scaleX) :
 						target.minWidth;
 		var mh:Number = target.scaleY > 0 && target.scaleY != 1 ?
 						target.minHeight / Math.abs(target.scaleY) :
 						target.minHeight;
+		}
+		var mw:Number = target.minWidth;
+		var mh:Number = target.minHeight;
 
 		var w:Number = Math.max(unscaledWidth, mw) - vm.right - vm.left;
 		var h:Number = Math.max(unscaledHeight, mh) - vm.bottom - vm.top;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/64ffbcba/frameworks/projects/MX/src/main/flex/mx/containers/utilityClasses/CanvasLayout.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/containers/utilityClasses/CanvasLayout.as b/frameworks/projects/MX/src/main/flex/mx/containers/utilityClasses/CanvasLayout.as
index 6ef6dd2..16f9b7f 100644
--- a/frameworks/projects/MX/src/main/flex/mx/containers/utilityClasses/CanvasLayout.as
+++ b/frameworks/projects/MX/src/main/flex/mx/containers/utilityClasses/CanvasLayout.as
@@ -20,8 +20,16 @@
 package mx.containers.utilityClasses
 {
 
+COMPILE::AS3
+{
 import flash.display.DisplayObject;
 import flash.geom.Rectangle;
+}
+COMPILE::JS
+{
+import flex.display.DisplayObject;
+import org.apache.flex.geom.Rectangle;	
+}
 COMPILE::LATER
 {
 import mx.containers.Canvas;
@@ -36,7 +44,10 @@ import mx.events.ChildExistenceChangedEvent;
 import mx.events.MoveEvent;
 import mx.resources.IResourceManager;
 import mx.resources.ResourceManager;
+COMPILE::LATER
+{
 import flash.utils.Dictionary;
+}
 
 use namespace mx_internal;
 
@@ -98,7 +109,10 @@ public class CanvasLayout extends Layout
     private var colSpanChildren:Array = [];
     private var rowSpanChildren:Array = [];
     
+	COMPILE::LATER
+	{
     private var constraintCache:Dictionary = new Dictionary(true);
+	}
     
     private var constraintRegionsInUse:Boolean = false;
 
@@ -317,7 +331,11 @@ public class CanvasLayout extends Layout
             return;
         //Calculate constraint boundaries if it has not been calculated
         //already 
+		COMPILE::LATER
+		{
         var childInfo:ChildConstraintInfo = constraintCache[constraintChild];
+		}
+		var childInfo:ChildConstraintInfo;
         if (!childInfo)
             childInfo = parseConstraints(child);
         var left:Number = childInfo.left;
@@ -1158,7 +1176,10 @@ public class CanvasLayout extends Layout
                                                 top, bottom, verticalCenter, baseline, leftBoundary, 
                                                 rightBoundary, hcBoundary, topBoundary, bottomBoundary, 
                                                 vcBoundary, baselineBoundary); 
-        constraintCache[child] = info;                                              
+		COMPILE::LATER
+		{
+        constraintCache[child] = info;    
+		}
         return info;
     }
 
@@ -1690,8 +1711,11 @@ public class CanvasLayout extends Layout
         DisplayObject(event.relatedObject).removeEventListener(
             MoveEvent.MOVE, child_moveHandler);
             
+		COMPILE::LATER
+		{
         //delete this child from the constraint cache if it exists
         delete constraintCache[event.relatedObject]; 
+		}
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/64ffbcba/frameworks/projects/MX/src/main/flex/mx/containers/utilityClasses/ConstraintColumn.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/containers/utilityClasses/ConstraintColumn.as b/frameworks/projects/MX/src/main/flex/mx/containers/utilityClasses/ConstraintColumn.as
index b5a4614..0ffaf26 100644
--- a/frameworks/projects/MX/src/main/flex/mx/containers/utilityClasses/ConstraintColumn.as
+++ b/frameworks/projects/MX/src/main/flex/mx/containers/utilityClasses/ConstraintColumn.as
@@ -20,12 +20,19 @@
 package mx.containers.utilityClasses
 {
 
+COMPILE::AS3
+{
 import flash.events.Event;
-import flash.events.IEventDispatcher;
+import flash.events.EventDispatcher;
+}
+COMPILE::JS
+{
+import org.apache.flex.events.Event;
+import org.apache.flex.events.EventDispatcher;
+}
 import mx.core.IInvalidating;
 import mx.core.mx_internal;
 import mx.core.IMXMLObject;
-import flash.events.EventDispatcher;
 
 use namespace mx_internal;
 

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/64ffbcba/frameworks/projects/MX/src/main/flex/mx/containers/utilityClasses/ConstraintRow.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/containers/utilityClasses/ConstraintRow.as b/frameworks/projects/MX/src/main/flex/mx/containers/utilityClasses/ConstraintRow.as
index 91df783..4dc7773 100644
--- a/frameworks/projects/MX/src/main/flex/mx/containers/utilityClasses/ConstraintRow.as
+++ b/frameworks/projects/MX/src/main/flex/mx/containers/utilityClasses/ConstraintRow.as
@@ -20,12 +20,19 @@
 package mx.containers.utilityClasses
 {	
 
-import flash.events.Event;
-import flash.events.IEventDispatcher;
+COMPILE::AS3
+{
+	import flash.events.Event;
+	import flash.events.EventDispatcher;
+}
+COMPILE::JS
+{
+	import org.apache.flex.events.Event;
+	import org.apache.flex.events.EventDispatcher;
+}
 import mx.core.IInvalidating;
 import mx.core.mx_internal;
 import mx.core.IMXMLObject;
-import flash.events.EventDispatcher;
 
 use namespace mx_internal;
 

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/64ffbcba/frameworks/projects/MX/src/main/flex/mx/controls/Label.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/controls/Label.as b/frameworks/projects/MX/src/main/flex/mx/controls/Label.as
index 38f4c57..d07b9f8 100644
--- a/frameworks/projects/MX/src/main/flex/mx/controls/Label.as
+++ b/frameworks/projects/MX/src/main/flex/mx/controls/Label.as
@@ -35,8 +35,7 @@ COMPILE::JS
     import flex.display.DisplayObject;
     import flex.display.Graphics;
     import flex.events.Event;
-    import flex.geom.Rectangle;
-    import flex.text.StyleSheet;
+    import org.apache.flex.geom.Rectangle;
     import flex.text.TextFormat;
     import flex.text.TextLineMetrics;    
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/64ffbcba/frameworks/projects/MX/src/main/flex/mx/controls/listClasses/BaseListData.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/controls/listClasses/BaseListData.as b/frameworks/projects/MX/src/main/flex/mx/controls/listClasses/BaseListData.as
index cdb1651..d934724 100644
--- a/frameworks/projects/MX/src/main/flex/mx/controls/listClasses/BaseListData.as
+++ b/frameworks/projects/MX/src/main/flex/mx/controls/listClasses/BaseListData.as
@@ -20,7 +20,7 @@
 package mx.controls.listClasses
 {
 
-import flash.events.EventDispatcher;
+import org.apache.flex.events.EventDispatcher;
 
 import mx.core.IUIComponent;
 import mx.core.IUID;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/64ffbcba/frameworks/projects/MX/src/main/flex/mx/controls/listClasses/IListItemRenderer.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/controls/listClasses/IListItemRenderer.as b/frameworks/projects/MX/src/main/flex/mx/controls/listClasses/IListItemRenderer.as
index 86d2b92..f25db68 100644
--- a/frameworks/projects/MX/src/main/flex/mx/controls/listClasses/IListItemRenderer.as
+++ b/frameworks/projects/MX/src/main/flex/mx/controls/listClasses/IListItemRenderer.as
@@ -20,7 +20,7 @@
 package mx.controls.listClasses
 {
 
-import flash.events.IEventDispatcher;
+import org.apache.flex.events.IEventDispatcher;
 import mx.core.IDataRenderer;
 import mx.core.IFlexDisplayObject;
 import mx.core.IUIComponent;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/64ffbcba/frameworks/projects/MX/src/main/flex/mx/core/Application.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/core/Application.as b/frameworks/projects/MX/src/main/flex/mx/core/Application.as
index 57cd9ec..ea036f0 100644
--- a/frameworks/projects/MX/src/main/flex/mx/core/Application.as
+++ b/frameworks/projects/MX/src/main/flex/mx/core/Application.as
@@ -1124,7 +1124,12 @@ public class Application extends LayoutContainer
             if (!resizeHandlerAdded)
             {
                 // weak reference
+				COMPILE::LATER
+				{
                 systemManager.addEventListener(Event.RESIZE, resizeHandler, false, 0, true);
+				}
+				systemManager.addEventListener(Event.RESIZE, resizeHandler);
+				
                 resizeHandlerAdded = true;
             }
         }
@@ -1323,11 +1328,14 @@ public class Application extends LayoutContainer
     {
         super.resourcesChanged();
         
+		COMPILE::AS3
+		{
         // "View Source" on the context menu
         if (viewSourceCMI)
         {
             viewSourceCMI.caption = resourceManager.getString("core", "viewSource");
         }
+		}
     }
     
     //--------------------------------------------------------------------------
@@ -1875,6 +1883,23 @@ public class Application extends LayoutContainer
         
         invalidateDisplayList();      
     }
+	
+	COMPILE::JS
+	private function makeParameters(url:String):Object
+	{
+		if (url == null || url.length == 0)
+			return {};
+		
+		url = url.substring(1); // remove leading ?
+		var parts:Array = url.split("&");
+		var parms:Object = {};
+		for each (var part:String in parts)
+		{
+			var subParts:Array = part.split("=");
+			parms[subParts[0]] = subParts[1];
+		}
+		return parms;
+	}
 }
 
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/64ffbcba/frameworks/projects/MX/src/main/flex/mx/core/Container.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/core/Container.as b/frameworks/projects/MX/src/main/flex/mx/core/Container.as
index 1ca04ea..248e6ba 100644
--- a/frameworks/projects/MX/src/main/flex/mx/core/Container.as
+++ b/frameworks/projects/MX/src/main/flex/mx/core/Container.as
@@ -43,7 +43,7 @@ COMPILE::JS
     import flex.display.Loader;
     import flex.display.Shape;
     import flex.events.Event;
-    import flex.events.MouseEvent;
+    import org.apache.flex.events.MouseEvent;
     import flex.text.TextField;
     import flex.text.TextLineMetrics;
     import flex.ui.Keyboard;            
@@ -555,7 +555,10 @@ public class Container extends UIComponent
     {
         super();
 
+		COMPILE::AS3
+		{
         tabEnabled = false;
+		}
         tabFocusEnabled = false;
         
         showInAutomationHierarchy = false;
@@ -807,6 +810,7 @@ public class Container extends UIComponent
      *  @private
      *  Propagate to children.
      */
+	COMPILE::AS3
     override public function set doubleClickEnabled(value:Boolean):void
     {
         super.doubleClickEnabled = value;
@@ -892,7 +896,10 @@ public class Container extends UIComponent
 
             o.x = 0;
             o.y = 0;
+			COMPILE::LATER
+			{
             o.scrollRect = null;
+			}
 
             _focusPane = o;
         }
@@ -907,7 +914,10 @@ public class Container extends UIComponent
         {
             o.x = contentPane.x;
             o.y = contentPane.y;
+			COMPILE::LATER
+			{
             o.scrollRect = contentPane.scrollRect;
+			}
         }
 
         invalidateSizeFlag = oldInvalidateSizeFlag;
@@ -2454,6 +2464,7 @@ public class Container extends UIComponent
      *  The mouseShieldChildren style is an inherting style
      *  that is used by the children views.
      */
+	COMPILE::AS3
     override public function addEventListener(
                                     type:String, listener:Function,
                                     useCapture:Boolean = false,
@@ -2495,6 +2506,7 @@ public class Container extends UIComponent
      *  $addEventListener to add event listeners without affecting the behavior 
      *  of the component.
      */
+	COMPILE::AS3
     mx_internal function $addEventListener(
                             type:String, listener:Function,
                             useCapture:Boolean = false,
@@ -2509,7 +2521,7 @@ public class Container extends UIComponent
      *  @private
      *  Remove the mouse shield if we no longer listen to any mouse events
      */
-    
+    COMPILE::AS3
     override public function removeEventListener(
                                     type:String, listener:Function,
                                     useCapture:Boolean = false):void
@@ -2549,6 +2561,7 @@ public class Container extends UIComponent
      *  $removeEventListener to remove event listeners without affecting the behavior 
      *  of the component.
      */
+	COMPILE::AS3
     mx_internal function $removeEventListener(
                               type:String, listener:Function,
                               useCapture:Boolean = false):void
@@ -3026,9 +3039,12 @@ public class Container extends UIComponent
      */ 
     override public function addElement(element:org.apache.flex.core.IVisualElement):org.apache.flex.core.IVisualElement
     {
+		COMPILE::AS3
+		{
         if (! (element is DisplayObject) )
             throw ArgumentError(element + " is not supported in this Container");
-        
+		}
+		
         return addChild(element as DisplayObject) as org.apache.flex.core.IVisualElement;
     }
     
@@ -3042,8 +3058,11 @@ public class Container extends UIComponent
      */
     override public function addElementAt(element:org.apache.flex.core.IVisualElement, index:int):org.apache.flex.core.IVisualElement
     {
-        if (! (element is DisplayObject) )
-            throw ArgumentError(element + " is not supported in this Container");
+		COMPILE::AS3
+		{
+			if (! (element is DisplayObject) )
+				throw ArgumentError(element + " is not supported in this Container");
+		}
         
         return addChildAt(element as DisplayObject, index) as org.apache.flex.core.IVisualElement;
     }
@@ -3058,8 +3077,11 @@ public class Container extends UIComponent
      */
     override public function removeElement(element:org.apache.flex.core.IVisualElement):org.apache.flex.core.IVisualElement
     {
-        if (! (element is DisplayObject) )
-            throw ArgumentError(element + " is not found in this Container");
+		COMPILE::AS3
+		{
+			if (! (element is DisplayObject) )
+				throw ArgumentError(element + " is not supported in this Container");
+		}
         
         return removeChild(element as DisplayObject) as org.apache.flex.core.IVisualElement;
     }
@@ -3103,8 +3125,11 @@ public class Container extends UIComponent
      */
     public function setElementIndex(element:org.apache.flex.core.IVisualElement, index:int):void
     {
-        if (! (element is DisplayObject) )
-            throw ArgumentError(element + " is not found in this Container");
+		COMPILE::AS3
+		{
+			if (! (element is DisplayObject) )
+				throw ArgumentError(element + " is not supported in this Container");
+		}
         
         return setChildIndex(element as DisplayObject, index);
     }
@@ -3117,6 +3142,7 @@ public class Container extends UIComponent
      *  @playerversion AIR 1.5
      *  @productversion Flex 4
      */
+	COMPILE::LATER
     public function swapElements(element1:org.apache.flex.core.IVisualElement, element2:org.apache.flex.core.IVisualElement):void
     {
         if (! (element1 is DisplayObject) )
@@ -3135,6 +3161,7 @@ public class Container extends UIComponent
      *  @playerversion AIR 1.5
      *  @productversion Flex 4
      */
+	COMPILE::LATER
     public function swapElementsAt(index1:int, index2:int):void
     {
         swapChildrenAt(index1, index2);
@@ -3248,9 +3275,16 @@ public class Container extends UIComponent
         if (autoLayout == false)
             forceLayout = true;
 
+		COMPILE::LATER
+		{
         // weak references
         UIComponentGlobals.layoutManager.addEventListener(
             FlexEvent.UPDATE_COMPLETE, layoutCompleteHandler, false, 0, true);
+		}
+		// weak references
+		UIComponentGlobals.layoutManager.addEventListener(
+			FlexEvent.UPDATE_COMPLETE, layoutCompleteHandler);
+
     }
 
     /**
@@ -3979,9 +4013,11 @@ public class Container extends UIComponent
      */
     override public function finishPrint(obj:Object, target:IFlexDisplayObject):void
     {
+		COMPILE::LATER
+		{
         if (obj)
             contentPane.scrollRect = Rectangle(obj);
-
+		}
         super.finishPrint(obj,target);
     }
 
@@ -4023,8 +4059,15 @@ public class Container extends UIComponent
         {
             forceLayout = true;
             // weak reference
+			COMPILE::LATER
+			{
             UIComponentGlobals.layoutManager.addEventListener(
                 FlexEvent.UPDATE_COMPLETE, layoutCompleteHandler, false, 0, true);
+			}
+			// weak references
+			UIComponentGlobals.layoutManager.addEventListener(
+				FlexEvent.UPDATE_COMPLETE, layoutCompleteHandler);
+
         }
     }
 
@@ -4093,8 +4136,15 @@ public class Container extends UIComponent
         {
             forceLayout = true;
             // weak reference
+			COMPILE::LATER
+			{
             UIComponentGlobals.layoutManager.addEventListener(
                 FlexEvent.UPDATE_COMPLETE, layoutCompleteHandler, false, 0, true);
+			}
+			// weak references
+			UIComponentGlobals.layoutManager.addEventListener(
+				FlexEvent.UPDATE_COMPLETE, layoutCompleteHandler);
+
         }
 
         if (hasEventListener("childrenChanged"))
@@ -5192,10 +5242,13 @@ public class Container extends UIComponent
         // 91.9/0.01 = 9190 if it weren't for the rounding.
         // To undo the effect of the rounding, we'll add a fudge factor to
         // newViewableWidth. That way, we don't display unwanted scrollbars.
+		COMPILE::LATER
+		{
         if (scaleX != 1.0)
             newViewableWidth += 1.0 / Math.abs(scaleX);
         if (scaleY != 1.0)
             newViewableHeight += 1.0 / Math.abs(scaleY);
+		}
 
         newViewableWidth = Math.floor(newViewableWidth);
         newViewableHeight = Math.floor(newViewableHeight);

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/64ffbcba/frameworks/projects/MX/src/main/flex/mx/core/ContainerRawChildrenList.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/core/ContainerRawChildrenList.as b/frameworks/projects/MX/src/main/flex/mx/core/ContainerRawChildrenList.as
index 2639f74..299eb35 100644
--- a/frameworks/projects/MX/src/main/flex/mx/core/ContainerRawChildrenList.as
+++ b/frameworks/projects/MX/src/main/flex/mx/core/ContainerRawChildrenList.as
@@ -20,9 +20,16 @@
 package mx.core
 {
 
+COMPILE::AS3
+{
 import flash.display.DisplayObject;
 import flash.geom.Point;
-
+}
+COMPILE::JS
+{
+import flex.display.DisplayObject;
+import org.apache.flex.geom.Point;
+}
 use namespace mx_internal;
 
 [ExcludeClass]

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/64ffbcba/frameworks/projects/MX/src/main/flex/mx/core/IVisualElementContainer.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/core/IVisualElementContainer.as b/frameworks/projects/MX/src/main/flex/mx/core/IVisualElementContainer.as
index a185ef4..b14b8be 100644
--- a/frameworks/projects/MX/src/main/flex/mx/core/IVisualElementContainer.as
+++ b/frameworks/projects/MX/src/main/flex/mx/core/IVisualElementContainer.as
@@ -256,6 +256,7 @@ public interface IVisualElementContainer
      *  @playerversion AIR 1.5
      *  @productversion Flex 4
      */
+	COMPILE::LATER
     function swapElements(element1:org.apache.flex.core.IVisualElement, element2:org.apache.flex.core.IVisualElement):void;
     
     /**
@@ -275,6 +276,7 @@ public interface IVisualElementContainer
      *  @playerversion AIR 1.5
      *  @productversion Flex 4
      */
+	COMPILE::LATER
     function swapElementsAt(index1:int, index2:int):void;
 
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/64ffbcba/frameworks/projects/MX/src/main/flex/mx/events/IndexChangedEvent.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/events/IndexChangedEvent.as b/frameworks/projects/MX/src/main/flex/mx/events/IndexChangedEvent.as
index 364717a..860f959 100644
--- a/frameworks/projects/MX/src/main/flex/mx/events/IndexChangedEvent.as
+++ b/frameworks/projects/MX/src/main/flex/mx/events/IndexChangedEvent.as
@@ -20,8 +20,15 @@
 package mx.events
 {
 
+COMPILE::AS3
+{
 import flash.display.DisplayObject;
-import flash.events.Event;
+}
+COMPILE::JS
+{
+import flex.display.DisplayObject;
+}
+import flex.events.Event;
 
 /**
  *  The IndexChangedEvent class represents events that are dispatched when 
@@ -299,7 +306,7 @@ public class IndexChangedEvent extends Event
     /**
      *  @private
      */
-    override public function clone():Event
+    override public function cloneEvent():Event
     {
         return new IndexChangedEvent(type, bubbles, cancelable,
                                      relatedObject, oldIndex, 

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/64ffbcba/frameworks/projects/MX/src/main/flex/mx/geom/RoundedRectangle.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/geom/RoundedRectangle.as b/frameworks/projects/MX/src/main/flex/mx/geom/RoundedRectangle.as
index 1eff289..049152b 100644
--- a/frameworks/projects/MX/src/main/flex/mx/geom/RoundedRectangle.as
+++ b/frameworks/projects/MX/src/main/flex/mx/geom/RoundedRectangle.as
@@ -89,6 +89,7 @@ public class RoundedRectangle extends Rectangle
 	 *  @productversion Flex 3
 	 */
 	public var cornerRadius:Number = 0;
+	
 }
 
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/64ffbcba/frameworks/projects/MX/src/main/flex/mx/managers/FocusManager.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/managers/FocusManager.as b/frameworks/projects/MX/src/main/flex/mx/managers/FocusManager.as
index 105c979..d641b83 100644
--- a/frameworks/projects/MX/src/main/flex/mx/managers/FocusManager.as
+++ b/frameworks/projects/MX/src/main/flex/mx/managers/FocusManager.as
@@ -36,7 +36,17 @@ import flash.system.IME;
 import flash.text.TextField;
 import flash.ui.Keyboard;
 }
-
+COMPILE::JS
+{
+	import flex.display.DisplayObject;
+	import flex.display.DisplayObjectContainer;
+	import flex.display.InteractiveObject;	
+	import org.apache.flex.events.EventDispatcher;
+	import flex.events.Event;
+	import flex.events.FocusEvent;
+	import flex.ui.Keyboard;
+	import flex.text.TextField;
+}
 COMPILE::LATER
 {
 import mx.core.FlexSprite;
@@ -154,9 +164,12 @@ public class FocusManager extends EventDispatcher implements IFocusManager
 		this.popup = popup;
 
         IMEEnabled = true;
+		COMPILE::AS3
+		{
 		// Only <= IE8 supported focus cycling out of the SWF
         browserMode = Capabilities.playerType == "ActiveX" && !popup;
-        desktopMode = Platform.isAir && !popup;
+		desktopMode = Platform.isAir && !popup;
+		}
         // Flash main windows come up activated, AIR main windows don't
         windowActivated = !desktopMode;
     
@@ -204,6 +217,8 @@ public class FocusManager extends EventDispatcher implements IFocusManager
 
         // Make sure the SystemManager is running so it can tell us about
         // mouse clicks and stage size changes.
+		COMPILE::AS3
+		{
 		try
 		{
 			var awm:IActiveWindowManager = 
@@ -220,6 +235,7 @@ public class FocusManager extends EventDispatcher implements IFocusManager
 			// ignore null pointer errors caused by container using a 
 			// systemManager from another sandbox.
 		}
+		}
     }
 
     //--------------------------------------------------------------------------
@@ -593,15 +609,24 @@ public class FocusManager extends EventDispatcher implements IFocusManager
      *  @playerversion Flash 9
      *  @playerversion AIR 1.1
      *  @productversion Flex 3
+	 *  @flexjsignorecoercion flex.display.InteractiveObject;
+	 *  @flexjsignorecoercion org.apache.flex.core.IUIBase;
      */
     public function getFocus():IFocusManagerComponent
     {
+		COMPILE::AS3
+		{
         var stage:Stage = form.systemManager.stage;
         
         if (!stage)
             return null;
             
         var o:InteractiveObject = stage.focus;
+		}
+		COMPILE::JS
+		{
+			var o:InteractiveObject = document.activeElement as InteractiveObject;			
+		}
 		var i:IUIBase;
 		while (o != null)
 		{
@@ -620,8 +645,11 @@ public class FocusManager extends EventDispatcher implements IFocusManager
         // different than it does on device when using StageText.  In ADL, when
         // the focus is a StageText component, a TextField whose parent is the 
         // stage is assigned focus.  
+		COMPILE::AS3
+		{
         if ((!o && _lastFocus) || (o is TextField && o.parent == stage))
             return _lastFocus;
+		}
         
         return findFocusManagerComponent(i);
     }
@@ -684,6 +712,8 @@ public class FocusManager extends EventDispatcher implements IFocusManager
             // trace("FM " + this + " setting last focus " + target);
             _lastFocus = findFocusManagerComponent(i);
             
+			COMPILE::AS3
+			{
 			if (Capabilities.hasIME)
             {
                 var usesIME:Boolean;
@@ -696,7 +726,8 @@ public class FocusManager extends EventDispatcher implements IFocusManager
                 if (IMEEnabled)
                     IME.enabled = usesIME;
             }
-            
+			}
+			
 			// handle default button here
 			// we can't check for Button because of cross-versioning so
 			// for now we just check for an emphasized property
@@ -800,8 +831,11 @@ public class FocusManager extends EventDispatcher implements IFocusManager
         if (activated)
         {
             dispatchEvent(new FlexEvent(FlexEvent.FLEX_WINDOW_DEACTIVATE));
+			COMPILE::AS3
+			{
             if (form.systemManager.stage)
                 form.systemManager.stage.focus = null;
+			}
         }
     }   
 
@@ -876,6 +910,8 @@ public class FocusManager extends EventDispatcher implements IFocusManager
         // listen for focus changes, use weak references for the stage
 		// form.systemManager can be null if the form is created in a sandbox and 
 		// added as a child to the root system manager.
+		COMPILE::AS3
+		{
 		var sm:ISystemManager = form.systemManager;
 		if (sm)
 		{
@@ -909,7 +945,7 @@ public class FocusManager extends EventDispatcher implements IFocusManager
             sm.addEventListener("windowActivate", activateWindowHandler, true, 0, true);
             sm.addEventListener("windowDeactivate", deactivateWindowHandler, true, 0, true);
         }
-
+		}
         activated = true;
         dispatchEvent(new FlexEvent(FlexEvent.FLEX_WINDOW_ACTIVATE));
         
@@ -944,6 +980,8 @@ public class FocusManager extends EventDispatcher implements IFocusManager
         // trace("FocusManager deactivating " + this);
         // trace("FocusManager deactivating = " + this._form.systemManager.loaderInfo.url);
          
+		COMPILE::AS3
+		{
         // listen for focus changes
 		var sm:ISystemManager = form.systemManager;
         if (sm)
@@ -971,7 +1009,7 @@ public class FocusManager extends EventDispatcher implements IFocusManager
         form.removeEventListener(KeyboardEvent.KEY_DOWN, defaultButtonKeyHandler);
         // stop listening for default button in Capture phase
         form.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler, true);
-
+		}
         activated = false;
         dispatchEvent(new FlexEvent(FlexEvent.FLEX_WINDOW_DEACTIVATE));
 
@@ -1023,7 +1061,7 @@ public class FocusManager extends EventDispatcher implements IFocusManager
 	            o = o.parent;
 	        }
 	    }
-	    catch (error:SecurityError)
+	    catch (error:Error)
 	    {
 	    	// can happen in a loaded child swf
 	    	// trace("findFocusManagerComponent: handling security error");
@@ -1276,10 +1314,12 @@ public class FocusManager extends EventDispatcher implements IFocusManager
             }
             else
             {
+				COMPILE::AS3
+				{
                 o.addEventListener("tabChildrenChange", tabChildrenChangeHandler);
                 checkChildren = doc.tabChildren;
-            }
-
+	            }
+			}
             if (checkChildren)
             {
                 if (o is IRawChildrenContainer)
@@ -1296,7 +1336,7 @@ public class FocusManager extends EventDispatcher implements IFocusManager
                         {
                             addFocusables(rawChildren.getChildAt(i));
                         }
-                        catch(error:SecurityError)
+                        catch(error:Error)
                         {
                             // Ignore this child if we can't access it
                             // trace("addFocusables: ignoring security error getting child from rawChildren: " + error);
@@ -1316,7 +1356,7 @@ public class FocusManager extends EventDispatcher implements IFocusManager
                         {
                             addFocusables(doc.getChildAt(i));
                         }
-                        catch(error:SecurityError)
+                        catch(error:Error)
                         {
                             // Ignore this child if we can't access it
                             // trace("addFocusables: ignoring security error getting child at document." + error);
@@ -1340,8 +1380,11 @@ public class FocusManager extends EventDispatcher implements IFocusManager
         var p:DisplayObjectContainer = o.parent;
         while (p && p != s)
         {
+			COMPILE::AS3
+			{
             if (!p.tabChildren)
                 return false;
+			}
             if (p is IFocusManagerComponent && !(IFocusManagerComponent(p).hasFocusableChildren))
                 return false;
             p = p.parent;
@@ -1655,6 +1698,7 @@ public class FocusManager extends EventDispatcher implements IFocusManager
 	 *  @playerversion Flash 9
 	 *  @playerversion AIR 1.1
 	 *  @productversion Flex 3
+	 *  @flexjsignorecoercion flex.display.InteractiveObject
 	 */
 	private function getNextFocusManagerComponent2(
                             backward:Boolean = false, 
@@ -1680,11 +1724,17 @@ public class FocusManager extends EventDispatcher implements IFocusManager
         {
 	        // if there is no passed in object, then get the object that has the focus
     	    var o:DisplayObject = fromObject; 
+			COMPILE::AS3
+			{
         	if (!o)
         		o = form.systemManager.stage.focus;
             else if (o == form.systemManager.stage)
                 o == null;
-        
+			}
+			COMPILE::JS
+			{
+				o = document.activeElement as InteractiveObject;
+			}
 	        o = DisplayObject(findFocusManagerComponent2(InteractiveObject(o)));
 	
 	        var g:String = "";
@@ -1767,6 +1817,7 @@ public class FocusManager extends EventDispatcher implements IFocusManager
      *  @playerversion AIR 1.1
      *  @productversion Flex 3
      */
+	COMPILE::AS3
     override public function toString():String
     {
         return Object(form).toString() + ".focusManager";
@@ -1807,11 +1858,19 @@ public class FocusManager extends EventDispatcher implements IFocusManager
         
         // if it is truly parented, add it, otherwise it will get added when the top of the tree
         // gets parented.
+		COMPILE::AS3
+		{
         if (target.stage)
         {
             // trace("FM: addedHandler: adding focusables");
             addFocusables(DisplayObject(event.target));
         }
+		}
+		COMPILE::JS
+		{
+			// trace("FM: addedHandler: adding focusables");
+			addFocusables(DisplayObject(event.target));			
+		}
     }
 
     /**
@@ -1874,7 +1933,10 @@ public class FocusManager extends EventDispatcher implements IFocusManager
         {
             if (!dontRemoveTabChildrenHandler)
             {
+				COMPILE::AS3
+				{
                 o.removeEventListener("tabChildrenChange", tabChildrenChangeHandler);
+				}
                 o.removeEventListener("hasFocusableChildrenChange", hasFocusableChildrenChangeHandler);
             }
 
@@ -1933,11 +1995,14 @@ public class FocusManager extends EventDispatcher implements IFocusManager
         // trace("FocusManager focusInHandler in  = " + this._form.systemManager.loaderInfo.url);
         // trace("FM " + this + " focusInHandler " + target);
 
+		COMPILE::AS3
+		{
         if (lastFocus && !isEnabledAndVisible(DisplayObject(lastFocus)) && DisplayObject(form).stage)
         {
             DisplayObject(form).stage.focus = null;
             lastFocus = null;
         }
+		}
     }
     
     /**
@@ -2018,6 +2083,7 @@ public class FocusManager extends EventDispatcher implements IFocusManager
      *  @private
      *  Add or remove if tabbing properties change.
      */
+	COMPILE::AS3
     private function tabChildrenChangeHandler(event:Event):void
     {
         if (event.target != event.currentTarget)
@@ -2147,7 +2213,10 @@ public class FocusManager extends EventDispatcher implements IFocusManager
                 // the focus somewhere else, so we set fauxFocus to the stage as a signal
                 // to the setFocusToNextObject logic that it shouldn't use the stage.focus
                 // as the starting point.
+				COMPILE::AS3
+				{
                 fauxFocus = sm.stage;
+				}
             }
             // trace("tabHandled by " + this);
             setFocusToNextObject(event);
@@ -2166,6 +2235,7 @@ public class FocusManager extends EventDispatcher implements IFocusManager
     /**
      *  @private
      *  Watch for TAB keys.
+	 *  @flexjsignorecoercion flex.display.InteractiveObject
      */
     mx_internal function keyDownHandler(event:KeyboardEvent):void
     {
@@ -2205,7 +2275,14 @@ public class FocusManager extends EventDispatcher implements IFocusManager
                 var o:DisplayObject = fauxFocus;
 				if (!o)
 				{
+					COMPILE::AS3
+					{
 					o = form.systemManager.stage.focus;
+					}
+					COMPILE::JS
+					{
+					o = document.activeElement as InteractiveObject;
+					}
 				}
 				
                 // trace("focus was at " + o);
@@ -2325,9 +2402,19 @@ public class FocusManager extends EventDispatcher implements IFocusManager
 	
     }
 	
+	/**
+	 * @flexjsignorecoercion flex.display.InteractiveObject
+	 */
 	private function getBrowserFocusComponent(shiftKey:Boolean):InteractiveObject
 	{
+		COMPILE::AS3
+		{
     	var focusComponent:InteractiveObject = form.systemManager.stage.focus;
+		}
+		COMPILE::JS
+		{
+			var focusComponent:InteractiveObject = document.activeElement as InteractiveObject;			
+		}
 		
 		// if the focus is null it means focus is in an application we
 		// don't have access to. Use either the last object or the first
@@ -2344,7 +2431,14 @@ public class FocusManager extends EventDispatcher implements IFocusManager
 
 }
 
+COMPILE::AS3
+{
 import flash.display.DisplayObject;
+}
+COMPILE::JS
+{
+	import flex.display.DisplayObject;	
+}
 
 /** 
  * @private

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/64ffbcba/frameworks/projects/MX/src/main/flex/mx/utils/LoaderUtil.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/utils/LoaderUtil.as b/frameworks/projects/MX/src/main/flex/mx/utils/LoaderUtil.as
index 7f76b6d..26f2e4e 100644
--- a/frameworks/projects/MX/src/main/flex/mx/utils/LoaderUtil.as
+++ b/frameworks/projects/MX/src/main/flex/mx/utils/LoaderUtil.as
@@ -19,13 +19,18 @@
 
 package mx.utils
 {
-
+COMPILE::AS3
+{
 import flash.display.DisplayObject;
+import flash.display.Loader;
 import flash.display.LoaderInfo;
 import flash.events.IEventDispatcher;
 import flash.system.Capabilities;
 import flash.utils.Dictionary;
-
+}
+COMPILE::JS
+{
+}
 COMPILE::LATER
 {
 import mx.core.ApplicationDomainTarget;
@@ -37,8 +42,6 @@ import mx.events.Request;
 import mx.managers.SystemManagerGlobals;
 import mx.utils.Platform;
 
-import flash.display.Loader;
-
 use namespace mx_internal;
 
   /**
@@ -110,7 +113,7 @@ use namespace mx_internal;
      *  on it. If you want the unencoded url, you must call unencodeURI() on
      *  the results.
      *
-     *  @param loaderInfo A LoaderInfo instance.
+     *  @param loaderInfo A LoaderInfo instance or url string.
      *
      *  @return A normalized <code>LoaderInfo.url</code> property.
      *  
@@ -119,9 +122,20 @@ use namespace mx_internal;
      *  @playerversion AIR 1.1
      *  @productversion Flex 3
      */
-    public static function normalizeURL(loaderInfo:LoaderInfo):String
+    public static function normalizeURL(loaderInfo:Object):String
     {
-        var url:String = loaderInfo.url;
+        var url:String;
+		COMPILE::AS3
+		{
+			if (loaderInfo is LoaderInfo)
+			  url = loaderInfo.url;
+			else
+			  url = loaderInfo.toString();
+		}
+		COMPILE::JS
+		{
+			url = loaderInfo.toString();
+		}
         var index:int;
         var searchString:String;
         var urlFilter:Function;
@@ -388,6 +402,7 @@ use namespace mx_internal;
      * @return
      * encoded url that may be loaded with a URLRequest
      **/
+	COMPILE::AS3
     mx_internal static function OSToPlayerURI(url:String, local:Boolean):String 
     {
         
@@ -455,6 +470,7 @@ use namespace mx_internal;
      * 
      *  @return the parent module factory if available, null otherwise. 
      */
+	COMPILE::AS3
     private static function getParentModuleFactory(moduleFactory:IFlexModuleFactory):IFlexModuleFactory    
     {
         var request:Request = new Request(Request.GET_PARENT_FLEX_MODULE_FACTORY_REQUEST);
@@ -600,6 +616,7 @@ use namespace mx_internal;
      * 
      *  @return true if loaded into the top-level application domain, false otherwise.
      */ 
+	COMPILE::LATER
     private static function isLoadedIntoTopLevelApplicationDomain(moduleFactory:IFlexModuleFactory):Boolean
     {
         if (moduleFactory is DisplayObject)
@@ -627,6 +644,7 @@ use namespace mx_internal;
      *  @param moduleFactory  The moduleFactory to set in the primary and 
      *  failover rsls.
      */
+	COMPILE::LATER
     private static function updateRSLModuleFactory(rsl:Array, moduleFactory:IFlexModuleFactory):void
     {
         var n:int = rsl.length;


[2/6] git commit: [flex-asjs] [refs/heads/spark] - get rid of noDispatchEvent parameter on addChild and friends

Posted by ah...@apache.org.
get rid of noDispatchEvent parameter on addChild and friends


Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/dca97977
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/dca97977
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/dca97977

Branch: refs/heads/spark
Commit: dca97977d29a5bdc33fa103af711c573244a9e10
Parents: ea5f249
Author: Alex Harui <ah...@apache.org>
Authored: Tue May 31 23:28:36 2016 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Tue May 31 23:28:36 2016 -0700

----------------------------------------------------------------------
 .../org/apache/flex/charts/beads/ChartView.as   |  6 +-
 .../flex/charts/optimized/SVGChartDataGroup.as  |  8 +-
 .../flex/org/apache/flex/core/Application.as    |  9 ++-
 .../flex/org/apache/flex/core/ContainerBase.as  | 82 +++++++++++++++-----
 .../flex/core/ContainerBaseStrandChildren.as    | 15 ++--
 .../flex/org/apache/flex/core/IContainer.as     | 42 ++++++++++
 .../flex/org/apache/flex/core/IContentView.as   |  2 +-
 .../main/flex/org/apache/flex/core/IParent.as   |  9 ++-
 .../flex/org/apache/flex/core/IPopUpHost.as     |  2 +-
 .../apache/flex/core/ListBaseStrandChildren.as  | 15 ++--
 .../main/flex/org/apache/flex/core/UIBase.as    |  9 ++-
 .../apache/flex/utils/MXMLDataInterpreter.as    | 17 ++--
 .../org/apache/flex/createjs/Application.as     |  9 ++-
 .../flex/org/apache/flex/createjs/Container.as  | 26 +++++++
 .../org/apache/flex/createjs/core/UIBase.as     |  9 ++-
 .../flex/org/apache/flex/createjs/core/View.as  | 26 +++++++
 .../apache/flex/html/accessories/ToolTipBead.as |  3 +-
 .../org/apache/flex/html/beads/ContainerView.as | 15 ++--
 .../apache/flex/html/beads/DateChooserView.as   |  6 +-
 .../flex/html/beads/PanelWithControlBarView.as  |  8 +-
 .../flex/html/supportClasses/DataGroup.as       |  8 +-
 .../flex/org/apache/flex/mobile/ManagerBase.as  | 21 ++---
 .../org/apache/flex/mobile/ViewManagerBase.as   |  2 +-
 .../flex/mobile/beads/StackedViewManagerView.as |  3 +-
 .../flex/mobile/beads/TabbedViewManagerView.as  |  3 +-
 .../flex/mobile/beads/ToggleSwitchView.as       |  6 +-
 .../apache/flex/mobile/beads/ViewManagerView.as |  3 +-
 .../apache/flex/mobile/chrome/NavigationBar.as  |  2 +-
 .../org/apache/flex/mobile/chrome/ToolBar.as    |  2 +-
 29 files changed, 271 insertions(+), 97 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/dca97977/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/ChartView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/ChartView.as b/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/ChartView.as
index 393f3b0..b29f4cb 100644
--- a/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/ChartView.as
+++ b/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/ChartView.as
@@ -69,7 +69,8 @@ package org.apache.flex.charts.beads
 				var m1:Class = ValuesManager.valuesImpl.getValue(_strand, "iHorizontalAxisGroup");
 				_horizontalAxisGroup = new m1();
 				haxis.axisGroup = _horizontalAxisGroup;
-				IParent(_strand).addElement(_horizontalAxisGroup, false);
+				// should not dispatch change event
+				IParent(_strand).addElement(_horizontalAxisGroup);
 			}
 			
 			var vaxis:IVerticalAxisBead = _strand.getBeadByType(IVerticalAxisBead) as IVerticalAxisBead;
@@ -77,7 +78,8 @@ package org.apache.flex.charts.beads
 				var m2:Class = ValuesManager.valuesImpl.getValue(_strand, "iVerticalAxisGroup");
 				_verticalAxisGroup = new m2();
 				vaxis.axisGroup = _verticalAxisGroup;
-				IParent(_strand).addElement(_verticalAxisGroup, false);
+				// should not dispatch change event
+				IParent(_strand).addElement(_verticalAxisGroup);
 			}
 			
 			super.strand = value;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/dca97977/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/optimized/SVGChartDataGroup.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/optimized/SVGChartDataGroup.as b/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/optimized/SVGChartDataGroup.as
index d7fc8af..cbad23d 100644
--- a/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/optimized/SVGChartDataGroup.as
+++ b/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/optimized/SVGChartDataGroup.as
@@ -142,14 +142,14 @@ package org.apache.flex.charts.optimized
 		 *  @playerversion AIR 2.6
 		 *  @productversion FlexJS 0.0
 		 */
-		override public function addElement(value:IVisualElement, dispatchEvent:Boolean = true):void
+		override public function addElement(value:IVisualElement):IVisualElement
 		{
 			_children.push(value);
 			
 			var base:UIBase = value as UIBase;
 			base.addedToParent();
 			
-			super.addElement(value, dispatchEvent);
+			return super.addElement(value);
 		}
 		
 		/**
@@ -161,7 +161,7 @@ package org.apache.flex.charts.optimized
 		 *  @playerversion AIR 2.6
 		 *  @productversion FlexJS 0.0
 		 */
-		override public function addElementAt(value:IVisualElement, index:int, dispatchEvent:Boolean = true):void
+		override public function addElementAt(value:IVisualElement, index:int):IVisualElement
 		{
 			if (index >= _children.length) _children.push(value);
 			else _children.splice(index, 0, value);
@@ -169,7 +169,7 @@ package org.apache.flex.charts.optimized
 			var base:UIBase = value as UIBase;
 			base.addedToParent();
 			
-			super.addElementAt(value, index, dispatchEvent);
+			return super.addElementAt(value, index);
 		}
 		
 		/**

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/dca97977/frameworks/projects/Core/src/main/flex/org/apache/flex/core/Application.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/Application.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/Application.as
index 697f893..49b85eb 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/Application.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/Application.as
@@ -416,7 +416,7 @@ package org.apache.flex.core
          *  @productversion FlexJS 0.0
 		 *  @flexjsignorecoercion org.apache.flex.core.IUIBase
          */
-        public function addElement(c:IVisualElement, dispatchEvent:Boolean = true):void
+        public function addElement(c:IVisualElement):IVisualElement
         {
             COMPILE::AS3 {
                 if (c is IUIBase)
@@ -432,6 +432,7 @@ package org.apache.flex.core
                 this.element.appendChild(ui.element);
                 ui.addedToParent();
             }
+			return c;
         }
 
         /**
@@ -443,7 +444,7 @@ package org.apache.flex.core
          *  @productversion FlexJS 0.0
 		 *  @flexjsignorecoercion org.apache.flex.core.IUIBase
          */
-        public function addElementAt(c:IVisualElement, index:int, dispatchEvent:Boolean = true):void
+        public function addElementAt(c:IVisualElement, index:int):IVisualElement
         {
             COMPILE::AS3 {
                 if (c is IUIBase)
@@ -467,6 +468,7 @@ package org.apache.flex.core
                 }
 
             }
+			return c;
         }
 
         /**
@@ -527,7 +529,7 @@ package org.apache.flex.core
          *  @productversion FlexJS 0.0
 		 *  @flexjsignorecoercion org.apache.flex.core.IUIBase
          */
-        public function removeElement(c:IVisualElement, dispatchEvent:Boolean = true):void
+        public function removeElement(c:IVisualElement):IVisualElement
         {
             COMPILE::AS3 {
                 if (c is IUIBase)
@@ -541,6 +543,7 @@ package org.apache.flex.core
 				var ui:IUIBase = c as IUIBase;
                 element.removeChild(ui.element);
             }
+			return c;
         }
 
         /**

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/dca97977/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ContainerBase.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ContainerBase.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ContainerBase.as
index 1609c2a..919fd7f 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ContainerBase.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ContainerBase.as
@@ -132,49 +132,95 @@ package org.apache.flex.core
         /**
          *  @private
          */
-        override public function addElement(c:IVisualElement, dispatchEvent:Boolean = true):void
+        override public function addElement(c:IVisualElement):IVisualElement
         {
 			var contentView:IParent = view as IParent;
 			if (contentView != null) {
-				contentView.addElement(c, dispatchEvent);
-                if (dispatchEvent)
-                    this.dispatchEvent(new Event("childrenAdded"));
+				contentView.addElement(c);
+                this.dispatchEvent(new Event("childrenAdded"));
 			}
 			else {
 				super.addElement(c);
 			}
+			return c;
         }
         
         /**
          *  @private
          */
-        override public function addElementAt(c:IVisualElement, index:int, dispatchEvent:Boolean = true):void
+        public function addElementNoChangeEvent(c:IVisualElement):IVisualElement
         {
 			var contentView:IParent = view as IParent;
 			if (contentView != null) {
-				contentView.addElementAt(c, index, dispatchEvent);
-                if (dispatchEvent)
-                    this.dispatchEvent(new Event("childrenAdded"));
+				contentView.addElement(c);
+			}
+			else {
+				super.addElement(c);
+			}
+			return c;
+        }
+		
+        /**
+         *  @private
+         */
+        override public function addElementAt(c:IVisualElement, index:int):IVisualElement
+        {
+			var contentView:IParent = view as IParent;
+			if (contentView != null) {
+				contentView.addElementAt(c, index);
+                this.dispatchEvent(new Event("childrenAdded"));
 			}
 			else {
 				super.addElementAt(c, index);
 			}
+			return c;
+        }
+
+
+        /**
+         *  @private
+         */
+        public function addElementAtNoChangeEvent(c:IVisualElement, index:int):IVisualElement
+        {
+			var contentView:IParent = view as IParent;
+			if (contentView != null) {
+				contentView.addElementAt(c, index);
+			}
+			else {
+				super.addElementAt(c, index);
+			}
+			return c;
+        }
+        
+        /**
+         *  @private
+         */
+        override public function removeElement(c:IVisualElement):IVisualElement
+        {
+			var contentView:IParent = view as IParent;
+			if (contentView != null) {
+				contentView.removeElement(c);
+                this.dispatchEvent(new Event("childrenRemoved"));
+			}
+			else {
+				super.removeElement(c);
+			}
+			return c;
         }
         
         /**
          *  @private
          */
-        override public function removeElement(c:IVisualElement, dispatchEvent:Boolean = true):void
+        public function removeElementNoChangeEvent(c:IVisualElement):IVisualElement
         {
 			var contentView:IParent = view as IParent;
 			if (contentView != null) {
-				contentView.removeElement(c, dispatchEvent);
-                if (dispatchEvent)
-                    this.dispatchEvent(new Event("childrenRemoved"));
+				contentView.removeElement(c);
 			}
 			else {
 				super.removeElement(c);
 			}
+			return c;
         }
         
         /**
@@ -229,9 +275,9 @@ package org.apache.flex.core
          * @suppress {undefinedNames}
 		 * Support strandChildren.
 		 */
-		public function $addElement(c:IVisualElement, dispatchEvent:Boolean = true):void
+		public function $addElement(c:IVisualElement):void
 		{
-			super.addElement(c, dispatchEvent);
+			super.addElement(c);
 		}
 		
 		/**
@@ -239,9 +285,9 @@ package org.apache.flex.core
          * @suppress {undefinedNames}
 		 * Support strandChildren.
 		 */
-		public function $addElementAt(c:IVisualElement, index:int, dispatchEvent:Boolean = true):void
+		public function $addElementAt(c:IVisualElement, index:int):void
 		{
-			super.addElementAt(c, index, dispatchEvent);
+			super.addElementAt(c, index);
 		}
 		
 		/**
@@ -249,9 +295,9 @@ package org.apache.flex.core
          * @suppress {undefinedNames}
 		 * Support strandChildren.
 		 */
-		public function $removeElement(c:IVisualElement, dispatchEvent:Boolean = true):void
+		public function $removeElement(c:IVisualElement):void
 		{
-			super.removeElement(c, dispatchEvent);
+			super.removeElement(c);
 		}
 		
 		/**

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/dca97977/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ContainerBaseStrandChildren.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ContainerBaseStrandChildren.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ContainerBaseStrandChildren.as
index a5afbee..df392ef 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ContainerBaseStrandChildren.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ContainerBaseStrandChildren.as
@@ -59,25 +59,28 @@ package org.apache.flex.core
 		/**
 		 *  @private
 		 */
-		public function addElement(c:IVisualElement, dispatchEvent:Boolean = true):void
+		public function addElement(c:IVisualElement):IVisualElement
 		{
-			owner.$addElement(c, dispatchEvent);
+			owner.$addElement(c);
+			return c;
 		}
 		
 		/**
 		 *  @private
 		 */
-		public function addElementAt(c:IVisualElement, index:int, dispatchEvent:Boolean = true):void
+		public function addElementAt(c:IVisualElement, index:int):IVisualElement
 		{
-			owner.$addElementAt(c, index, dispatchEvent);
+			owner.$addElementAt(c, index);
+			return c;
 		}
 		
 		/**
 		 *  @private
 		 */
-		public function removeElement(c:IVisualElement, dispatchEvent:Boolean = true):void
+		public function removeElement(c:IVisualElement):IVisualElement
 		{
-			owner.$removeElement(c, dispatchEvent);
+			owner.$removeElement(c);
+			return c;
 		}
 		
 		/**

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/dca97977/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IContainer.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IContainer.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IContainer.as
index e3b6c9d..9bfd462 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IContainer.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IContainer.as
@@ -33,6 +33,48 @@ package org.apache.flex.core
     public interface IContainer extends IParent
 	{
         /**
+         *  Containers have an arbitrary and dynamic set of
+		 *  of children and usually dispatch notifications
+		 *  and do other work when the set changes.  These
+		 *  APIs allow the set to be changed without notification
+		 *  which can be beneficial for performance.
+         *
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.0
+         */
+		function addElementNoChangeEvent(element:IVisualElement):IVisualElement;
+		
+        /**
+         *  Containers have an arbitrary and dynamic set of
+		 *  of children and usually dispatch notifications
+		 *  and do other work when the set changes.  These
+		 *  APIs allow the set to be changed without notification
+		 *  which can be beneficial for performance.
+         *
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.0
+         */
+		function addElementAtNoChangeEvent(element:IVisualElement, index:int):IVisualElement;
+		
+        /**
+         *  Containers have an arbitrary and dynamic set of
+		 *  of children and usually dispatch notifications
+		 *  and do other work when the set changes.  These
+		 *  APIs allow the set to be changed without notification
+		 *  which can be beneficial for performance.
+         *
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.0
+         */
+		function removeElementNoChangeEvent(element:IVisualElement):IVisualElement;
+		
+        /**
          *  This method is called after children have been
          *  added to the container so the container doesn't
          *  have to re-layout as each child is added.

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/dca97977/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IContentView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IContentView.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IContentView.as
index a6b64eb..c6ecb78 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IContentView.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IContentView.as
@@ -32,7 +32,7 @@ package org.apache.flex.core
 		function get height():Number;
 		function set height(value:Number):void;
 
-		function addElement(value:IVisualElement, dispatchEvent:Boolean = true):void;
+		function addElement(value:IVisualElement):IVisualElement;
 		function removeAllElements():void;
 	}
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/dca97977/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IParent.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IParent.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IParent.as
index 26620e3..4ec9650 100755
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IParent.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IParent.as
@@ -35,13 +35,14 @@ package org.apache.flex.core
          * 
          *  @param c The subcomponent to add.
          *  @param dispatchEvent Whether to dispatch an event after adding the child.
+         *  @return The subcomponent to add.
          * 
          *  @langversion 3.0
          *  @playerversion Flash 10.2
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.0
          */
-        function addElement(c:IVisualElement, dispatchEvent:Boolean = true):void;
+        function addElement(c:IVisualElement):IVisualElement;
 
         /**
          *  Add a component to the parent.
@@ -49,13 +50,14 @@ package org.apache.flex.core
          *  @param c The subcomponent to add.
          *  @param c The index where the subcomponent should be added.
          *  @param dispatchEvent Whether to dispatch an event after adding the child.
+         *  @return The subcomponent to add.
          * 
          *  @langversion 3.0
          *  @playerversion Flash 10.2
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.0
          */
-        function addElementAt(c:IVisualElement, index:int, dispatchEvent:Boolean = true):void;
+        function addElementAt(c:IVisualElement, index:int):IVisualElement;
         
         /**
          *  Gets the index of this subcomponent.
@@ -75,13 +77,14 @@ package org.apache.flex.core
          * 
          *  @param c The subcomponent to remove.
          *  @param dispatchEvent Whether to dispatch an event after removing the child.
+         *  @return The subcomponent to remove.
          * 
          *  @langversion 3.0
          *  @playerversion Flash 10.2
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.0
          */
-       function removeElement(c:IVisualElement, dispatchEvent:Boolean = true):void;
+       function removeElement(c:IVisualElement):IVisualElement;
        
        /**
         *  The number of elements in the parent.

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/dca97977/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IPopUpHost.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IPopUpHost.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IPopUpHost.as
index 65f1334..acc91b7 100755
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IPopUpHost.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IPopUpHost.as
@@ -27,7 +27,7 @@ package org.apache.flex.core
      *  @playerversion AIR 2.6
      *  @productversion FlexJS 0.0
      */
-    public interface IPopUpHost extends IParent
+    public interface IPopUpHost extends IContainer
 	{
 	}
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/dca97977/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ListBaseStrandChildren.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ListBaseStrandChildren.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ListBaseStrandChildren.as
index 642817d..08ae8ed 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ListBaseStrandChildren.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ListBaseStrandChildren.as
@@ -60,25 +60,28 @@ package org.apache.flex.core
 		/**
 		 *  @private
 		 */
-		public function addElement(c:IVisualElement, dispatchEvent:Boolean = true):void
+		public function addElement(c:IVisualElement):IVisualElement
 		{
-			owner.$addElement(c, dispatchEvent);
+			owner.$addElement(c);
+			return c;
 		}
 		
 		/**
 		 *  @private
 		 */
-		public function addElementAt(c:IVisualElement, index:int, dispatchEvent:Boolean = true):void
+		public function addElementAt(c:IVisualElement, index:int):IVisualElement
 		{
-			owner.$addElementAt(c, index, dispatchEvent);
+			owner.$addElementAt(c, index);
+			return c;
 		}
 		
 		/**
 		 *  @private
 		 */
-		public function removeElement(c:IVisualElement, dispatchEvent:Boolean = true):void
+		public function removeElement(c:IVisualElement):IVisualElement
 		{
-			owner.$removeElement(c, dispatchEvent);
+			owner.$removeElement(c);
+			return c;
 		}
 		
 		/**

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/dca97977/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIBase.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIBase.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIBase.as
index d71e35f..32b1d71 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIBase.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIBase.as
@@ -1114,7 +1114,7 @@ package org.apache.flex.core
          *  @productversion FlexJS 0.0
 		 *  @flexjsignorecoercion org.apache.flex.core.IUIBase
          */
-		public function addElement(c:IVisualElement, dispatchEvent:Boolean = true):void
+		public function addElement(c:IVisualElement):IVisualElement
 		{
             COMPILE::AS3
             {
@@ -1132,6 +1132,7 @@ package org.apache.flex.core
                 element.appendChild(ui.positioner);
                 ui.addedToParent();
             }
+			return c;
 		}
         
         /**
@@ -1143,7 +1144,7 @@ package org.apache.flex.core
          *  @productversion FlexJS 0.0
 		 *  @flexjsignorecoercion org.apache.flex.core.IUIBase
          */
-        public function addElementAt(c:IVisualElement, index:int, dispatchEvent:Boolean = true):void
+        public function addElementAt(c:IVisualElement, index:int):IVisualElement
         {
             COMPILE::AS3
             {
@@ -1168,6 +1169,7 @@ package org.apache.flex.core
                     ui.addedToParent();
                 }
             }
+			return c;
         }
         
         /**
@@ -1232,7 +1234,7 @@ package org.apache.flex.core
          *  @productversion FlexJS 0.0
 		 *  @flexjsignorecoercion org.apache.flex.core.IUIBase
          */
-        public function removeElement(c:IVisualElement, dispatchEvent:Boolean = true):void
+        public function removeElement(c:IVisualElement):IVisualElement
         {
             COMPILE::AS3
             {
@@ -1246,6 +1248,7 @@ package org.apache.flex.core
 				var ui:IUIBase = c as IUIBase;
                 element.removeChild(ui.element);
             }
+			return c;
         }
 		
         /**

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/dca97977/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/MXMLDataInterpreter.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/MXMLDataInterpreter.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/MXMLDataInterpreter.as
index 946b17a..d444c93 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/MXMLDataInterpreter.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/MXMLDataInterpreter.as
@@ -295,16 +295,13 @@ public class MXMLDataInterpreter
         {
             comp.setMXMLDescriptor(document, children);                
         }
-        COMPILE::AS3
-        {
-            if (parent && comp is IVisualElement)
-                parent.addElement(comp as IVisualElement, !(parent is IContainer));
-        }
-        COMPILE::JS
-        {
-            if (parent && comp is IUIBase)
-                parent.addElement(comp as IUIBase, !(parent is IContainer));
-        }
+		if (parent && comp is IVisualElement)
+		{
+			if (parent is IContainer)
+				(parent as IContainer).addElementNoChangeEvent(comp as IVisualElement);
+			else
+				parent.addElement(comp as IVisualElement);
+		}
         
         if (children)
         {

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/dca97977/frameworks/projects/CreateJS/src/main/flex/org/apache/flex/createjs/Application.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/CreateJS/src/main/flex/org/apache/flex/createjs/Application.as b/frameworks/projects/CreateJS/src/main/flex/org/apache/flex/createjs/Application.as
index 3e67071..284f66c 100644
--- a/frameworks/projects/CreateJS/src/main/flex/org/apache/flex/createjs/Application.as
+++ b/frameworks/projects/CreateJS/src/main/flex/org/apache/flex/createjs/Application.as
@@ -322,11 +322,12 @@ package org.apache.flex.createjs
          *  @flexjsignorecoercion createjs.DisplayObject
          *  @flexjsignorecoercion org.apache.flex.core.IUIBase
 		 */
-		public function addElement(c:IVisualElement, dispatchEvent:Boolean = true):void
+		public function addElement(c:IVisualElement):IVisualElement
 		{
 			var ui:IUIBase = c as IUIBase;
 			stage.addChild(ui.element as DisplayObject);
 			ui.addedToParent();
+			return c;
 		}
 		
 		/**
@@ -339,11 +340,12 @@ package org.apache.flex.createjs
          *  @flexjsignorecoercion createjs.DisplayObject
          *  @flexjsignorecoercion org.apache.flex.core.IUIBase
 		 */
-		public function addElementAt(c:IVisualElement, index:int, dispatchEvent:Boolean = true):void
+		public function addElementAt(c:IVisualElement, index:int):IVisualElement
 		{
 			var ui:IUIBase = c as IUIBase;
 			stage.addChildAt(ui.element as DisplayObject, index);
 			ui.addedToParent();
+			return c;
 		}
 		
 		/**
@@ -386,9 +388,10 @@ package org.apache.flex.createjs
 		 *  @productversion FlexJS 0.0
          *  @flexjsignorecoercion org.apache.flex.core.IUIBase
 		 */
-		public function removeElement(c:IVisualElement, dispatchEvent:Boolean = true):void
+		public function removeElement(c:IVisualElement):IVisualElement
 		{
 			stage.removeChild((c as IUIBase).element as DisplayObject);
+			return c;
 		}
 		
 		/**

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/dca97977/frameworks/projects/CreateJS/src/main/flex/org/apache/flex/createjs/Container.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/CreateJS/src/main/flex/org/apache/flex/createjs/Container.as b/frameworks/projects/CreateJS/src/main/flex/org/apache/flex/createjs/Container.as
index 697c41e..55ccdaf 100644
--- a/frameworks/projects/CreateJS/src/main/flex/org/apache/flex/createjs/Container.as
+++ b/frameworks/projects/CreateJS/src/main/flex/org/apache/flex/createjs/Container.as
@@ -26,6 +26,7 @@ package org.apache.flex.createjs
 	import org.apache.flex.core.IStatesObject;
 	import org.apache.flex.core.IStatesImpl;
 	import org.apache.flex.core.IContainer;
+	import org.apache.flex.core.IVisualElement;
 	import org.apache.flex.core.ValuesManager;
 	import org.apache.flex.events.Event;
 	import org.apache.flex.events.ValueChangeEvent;
@@ -297,5 +298,30 @@ package org.apache.flex.createjs
 		{
 			_transitions = value;   
 		}
+		
+		/**
+		 *  @private
+		 */
+		public function addElementNoChangeEvent(c:IVisualElement):IVisualElement
+		{
+			return addElement(c);
+		}
+		
+		/**
+		 *  @private
+		 */
+		public function addElementAtNoChangeEvent(c:IVisualElement, index:int):IVisualElement
+		{
+			return addElementAt(c, index);
+		}
+
+		/**
+		 *  @private
+		 */
+		public function removeElementNoChangeEvent(c:IVisualElement):IVisualElement
+		{
+			return removeElement(c);
+		}
+
 	}
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/dca97977/frameworks/projects/CreateJS/src/main/flex/org/apache/flex/createjs/core/UIBase.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/CreateJS/src/main/flex/org/apache/flex/createjs/core/UIBase.as b/frameworks/projects/CreateJS/src/main/flex/org/apache/flex/createjs/core/UIBase.as
index a33ca13..c8c4f35 100644
--- a/frameworks/projects/CreateJS/src/main/flex/org/apache/flex/createjs/core/UIBase.as
+++ b/frameworks/projects/CreateJS/src/main/flex/org/apache/flex/createjs/core/UIBase.as
@@ -337,9 +337,10 @@ package org.apache.flex.createjs.core
          * @flexjsignorecoercion createjs.DisplayObject
          * @flexjsignorecoercion org.apache.flex.core.IUIBase
          */
-        public function addElement(c:IVisualElement, dispatchEvent:Boolean = true):void
+        public function addElement(c:IVisualElement):IVisualElement
         {
             (element as Container).addChild((c as IUIBase).element as DisplayObject);
+			return c;
         }
         
         /**
@@ -347,9 +348,10 @@ package org.apache.flex.createjs.core
          * @flexjsignorecoercion createjs.DisplayObject
          * @flexjsignorecoercion org.apache.flex.core.IVisualElement
          */
-        public function addElementAt(c:IVisualElement, index:int, dispatchEvent:Boolean = true):void
+        public function addElementAt(c:IVisualElement, index:int):IVisualElement
         {
             (element as Container).addChildAt((c as IUIBase).element as DisplayObject, index);
+			return c;
         }
         
         
@@ -369,9 +371,10 @@ package org.apache.flex.createjs.core
          * @flexjsignorecoercion createjs.DisplayObject
          * @flexjsignorecoercion org.apache.flex.core.IVisualElement
          */
-        public function removeElement(c:IVisualElement, dispatchEvent:Boolean = true):void
+        public function removeElement(c:IVisualElement):IVisualElement
         {
             (element as Container).removeChild((c as IUIBase).element as DisplayObject);
+			return c;
         }
         
 

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/dca97977/frameworks/projects/CreateJS/src/main/flex/org/apache/flex/createjs/core/View.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/CreateJS/src/main/flex/org/apache/flex/createjs/core/View.as b/frameworks/projects/CreateJS/src/main/flex/org/apache/flex/createjs/core/View.as
index 81cf83d..339ad0b 100644
--- a/frameworks/projects/CreateJS/src/main/flex/org/apache/flex/createjs/core/View.as
+++ b/frameworks/projects/CreateJS/src/main/flex/org/apache/flex/createjs/core/View.as
@@ -24,6 +24,7 @@ package org.apache.flex.createjs.core
 	import org.apache.flex.core.IPopUpHost;
 	import org.apache.flex.core.IMXMLDocument;
 	import org.apache.flex.core.IStatesImpl;
+	import org.apache.flex.core.IVisualElement;
 	import org.apache.flex.core.ValuesManager;
 	import org.apache.flex.events.Event;
 	import org.apache.flex.events.ValueChangeEvent;
@@ -321,5 +322,30 @@ package org.apache.flex.createjs.core
 		{
 			_transitions = value;   
 		}
+		
+		/**
+		 *  @private
+		 */
+		public function addElementNoChangeEvent(c:IVisualElement):IVisualElement
+		{
+			return addElement(c);
+		}
+		
+		/**
+		 *  @private
+		 */
+		public function addElementAtNoChangeEvent(c:IVisualElement, index:int):IVisualElement
+		{
+			return addElementAt(c, index);
+		}
+
+		/**
+		 *  @private
+		 */
+		public function removeElementNoChangeEvent(c:IVisualElement):IVisualElement
+		{
+			return removeElement(c);
+		}
+
 	}
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/dca97977/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/accessories/ToolTipBead.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/accessories/ToolTipBead.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/accessories/ToolTipBead.as
index 64d04bf..063abcd 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/accessories/ToolTipBead.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/accessories/ToolTipBead.as
@@ -112,7 +112,8 @@ package org.apache.flex.html.accessories
             var pt:Point = determinePosition(event, event.target);
             tt.x = pt.x;
             tt.y = pt.y;
-            host.addElement(tt, false); // don't trigger a layout
+			
+            host.addElementNoChangeEvent(tt); // don't trigger a layout
 		}
 		
 		/**

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/dca97977/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ContainerView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ContainerView.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ContainerView.as
index 3813c5b..7c9d0c3 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ContainerView.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ContainerView.as
@@ -144,17 +144,17 @@ package org.apache.flex.html.beads
 		/**
 		 * @private
 		 */
-		public function addElement(c:IVisualElement, dispatchEvent:Boolean = true):void
+		public function addElement(c:IVisualElement):IVisualElement
 		{
-			contentView.addElement(c, dispatchEvent);
+			return contentView.addElement(c);
 		}
 		
 		/**
 		 * @private
 		 */
-		public function addElementAt(c:IVisualElement, index:int, dispatchEvent:Boolean = true):void
+		public function addElementAt(c:IVisualElement, index:int):IVisualElement
 		{
-			contentView.addElementAt(c, index, dispatchEvent);
+			return contentView.addElementAt(c, index);
 		}
 		
 		/**
@@ -168,9 +168,9 @@ package org.apache.flex.html.beads
 		/**
 		 * @private
 		 */
-		public function removeElement(c:IVisualElement, dispatchEvent:Boolean = true):void
+		public function removeElement(c:IVisualElement):IVisualElement
 		{
-			contentView.removeElement(c, dispatchEvent);
+			return contentView.removeElement(c);
 		}
 		
 		/**
@@ -204,7 +204,8 @@ package org.apache.flex.html.beads
 			
             createViewport();
 			
-			(host as IContentViewHost).strandChildren.addElement(viewport.contentView, false);
+			// this should not trigger a childAdded event
+			(host as IContentViewHost).strandChildren.addElement(viewport.contentView);
 			
 			displayBackgroundAndBorder(host as UIBase);
 			

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/dca97977/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/DateChooserView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/DateChooserView.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/DateChooserView.as
index 5abf4c4..db09068 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/DateChooserView.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/DateChooserView.as
@@ -150,7 +150,7 @@ package org.apache.flex.html.beads
 			dayContainer = new Container();
 			var tileLayout:TileLayout = new TileLayout();
 			dayContainer.addBead(tileLayout);
-            UIBase(_strand).addElement(dayContainer, false);
+            UIBase(_strand).addElement(dayContainer);
             
 			tileLayout.numColumns = 7;
 			dayContainer.x = 0;
@@ -167,7 +167,7 @@ package org.apache.flex.html.beads
 				var dayName:DateChooserButton = new DateChooserButton();
 				dayName.text = model.dayNames[i];
 				dayName.dayOfMonth = 0;
-				dayContainer.addElement(dayName, false);
+				dayContainer.addElementNoChangeEvent(dayName);
 			}
 			
 			_dayButtons = new Array();
@@ -175,7 +175,7 @@ package org.apache.flex.html.beads
 			for(i=0; i < 42; i++) {
 				var date:DateChooserButton = new DateChooserButton();
 				date.text = String(i+1);
-				dayContainer.addElement(date, false);
+				dayContainer.addElementNoChangeEvent(date);
 				dayButtons.push(date);
 			}
 			

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/dca97977/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/PanelWithControlBarView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/PanelWithControlBarView.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/PanelWithControlBarView.as
index 8dfcd42..1494df0 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/PanelWithControlBarView.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/PanelWithControlBarView.as
@@ -123,7 +123,7 @@ package org.apache.flex.html.beads
 				_controlBar.height = 30;
 				
 				for each(var comp:IUIBase in controlBarItems) {
-					_controlBar.addElement(comp, false);
+					_controlBar.addElementNoChangeEvent(comp);
 				}
 			}
 			
@@ -134,10 +134,12 @@ package org.apache.flex.html.beads
 		{
 			super.completeSetup();
 			
-			(_strand as IContentViewHost).strandChildren.addElement(titleBar, false);
+			// should not generate change event
+			(_strand as IContentViewHost).strandChildren.addElement(titleBar);
 			
 			if (controlBar) {
-				(_strand as IContentViewHost).strandChildren.addElement(_controlBar, false);
+				// should not generate change event
+				(_strand as IContentViewHost).strandChildren.addElement(_controlBar);
 			}
 		}
 		

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/dca97977/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/DataGroup.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/DataGroup.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/DataGroup.as
index 8fe8b22..50e3682 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/DataGroup.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/DataGroup.as
@@ -59,21 +59,22 @@ package org.apache.flex.html.supportClasses
 		/**
 		 * @private
 		 */
-		override public function addElement(c:IVisualElement, dispatchEvent:Boolean = true):void
+		override public function addElement(c:IVisualElement):IVisualElement
 		{
-			super.addElement(c, dispatchEvent);
+			super.addElement(c);
 			
 			var newEvent:ItemAddedEvent = new ItemAddedEvent("itemAdded");
 			newEvent.item = c;
 			
 			var strand:IEventDispatcher = parent as IEventDispatcher;
 			strand.dispatchEvent(newEvent);
+			return c;
 		}
 		
 		/**
 		 * @private
 		 */
-		override public function removeElement(c:IVisualElement, dispatchEvent:Boolean = true):void
+		override public function removeElement(c:IVisualElement):IVisualElement
 		{	
 			super.removeElement(c, dispatchEvent);
 			
@@ -82,6 +83,7 @@ package org.apache.flex.html.supportClasses
 			
 			var strand:IEventDispatcher = parent as IEventDispatcher;
 			strand.dispatchEvent(newEvent);
+			return c;
 		}
 
         /**

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/dca97977/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/ManagerBase.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/ManagerBase.as b/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/ManagerBase.as
index 8861131..87f2fa9 100644
--- a/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/ManagerBase.as
+++ b/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/ManagerBase.as
@@ -119,43 +119,46 @@ package org.apache.flex.mobile
 		 *  @playerversion AIR 2.6
 		 *  @productversion FlexJS 0.0
 		 */
-		override public function addElement(c:IVisualElement, dispatchEvent:Boolean=true):void
+		override public function addElement(c:IVisualElement):IVisualElement
 		{
 			if (c is IChrome) {
-				super.addElementAt(c,0,dispatchEvent);
+				super.addElementAt(c, 0);
 			}
 			else {
-				_contentArea.addElement(c, dispatchEvent);
+				_contentArea.addElement(c);
 //				(c as UIBase).setWidthAndHeight(_contentArea.width, _contentArea.height, false);
 //				(c as UIBase).width = _contentArea.width;
 //				(c as UIBase).height = _contentArea.height;
 			}
+			return c;
 		}
 		
 		/**
 		 * @private.
 		 */
-		override public function addElementAt(c:IVisualElement, index:int, dispatchEvent:Boolean=true):void
+		override public function addElementAt(c:IVisualElement, index:int):IVisualElement
 		{
 			if (c is IChrome) {
-				super.addElementAt(c, index, dispatchEvent);
+				super.addElementAt(c, index);
 			}
 			else {
-				_contentArea.addElement(c, dispatchEvent);
+				_contentArea.addElement(c);
 			}
+			return c;
 		}
 		
 		/**
 		 * @private
 		 */
-		override public function removeElement(c:IVisualElement, dispatchEvent:Boolean=true):void
+		override public function removeElement(c:IVisualElement):IVisualElement
 		{
 			if (c is IChrome) {
-				super.removeElement(c, dispatchEvent);
+				super.removeElement(c);
 			}
 			else {
-				_contentArea.removeElement(c, dispatchEvent);
+				_contentArea.removeElement(c);
 			}
+			return c;
 		}
 		
 		/**

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/dca97977/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/ViewManagerBase.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/ViewManagerBase.as b/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/ViewManagerBase.as
index 0da3f4d..b4d8be6 100644
--- a/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/ViewManagerBase.as
+++ b/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/ViewManagerBase.as
@@ -173,7 +173,7 @@ package org.apache.flex.mobile
 					var view:IView = ViewManagerModel(model).views[i] as IView;
 					view.viewManager = this;
 					if (i == 0) {
-						addElement(view, true);
+						addElement(view);
 					}
 				}
 				ViewManagerModel(model).selectedIndex = 0;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/dca97977/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/beads/StackedViewManagerView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/beads/StackedViewManagerView.as b/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/beads/StackedViewManagerView.as
index fd1a58b..3ce8af4 100644
--- a/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/beads/StackedViewManagerView.as
+++ b/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/beads/StackedViewManagerView.as
@@ -65,7 +65,8 @@ package org.apache.flex.mobile.beads
 				_toolBar = new ToolBar();
 				_toolBar.controls = model.toolBarItems;
 				_toolBar.addBead(new HorizontalLayout());
-				UIBase(value).addElement(_toolBar,false);
+				// no event is expected
+				UIBase(value).addElement(_toolBar);
 			}
 			
 			super.strand = value;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/dca97977/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/beads/TabbedViewManagerView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/beads/TabbedViewManagerView.as b/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/beads/TabbedViewManagerView.as
index be20d2c..b88ef40 100644
--- a/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/beads/TabbedViewManagerView.as
+++ b/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/beads/TabbedViewManagerView.as
@@ -72,7 +72,8 @@ package org.apache.flex.mobile.beads
 			_tabBar.dataProvider = model.views;
 			_tabBar.labelField = "title";
 			_tabBar.addEventListener("change",handleButtonBarChange);
-			UIBase(_strand).addElement(_tabBar, false);
+			// no event is expected
+			UIBase(_strand).addElement(_tabBar);
 			
 			super.strand = value;
 		}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/dca97977/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/beads/ToggleSwitchView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/beads/ToggleSwitchView.as b/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/beads/ToggleSwitchView.as
index fe35d45..aa6fc51 100644
--- a/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/beads/ToggleSwitchView.as
+++ b/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/beads/ToggleSwitchView.as
@@ -94,10 +94,12 @@ package org.apache.flex.mobile.beads
 			model.addEventListener("selectedChange", toggleChangedHandler);
 			
 			boundingBox = new Rect();
-			UIBase(host).addElement(boundingBox, false);
+			// no event is expected
+			UIBase(host).addElement(boundingBox);
 			
 			actualSwitch = new Rect();
-			UIBase(host).addElement(actualSwitch, false);
+			// no event is expected
+			UIBase(host).addElement(actualSwitch);
 			
 			layoutChromeElements();
 		}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/dca97977/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/beads/ViewManagerView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/beads/ViewManagerView.as b/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/beads/ViewManagerView.as
index 59baf94..99f379d 100644
--- a/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/beads/ViewManagerView.as
+++ b/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/beads/ViewManagerView.as
@@ -95,7 +95,8 @@ package org.apache.flex.mobile.beads
 				_navigationBar = new NavigationBar();
 				_navigationBar.controls = model.navigationBarItems;
 				_navigationBar.addBead(new HorizontalLayout());
-				UIBase(_strand).addElement(_navigationBar, false);
+				// no event is expected
+				UIBase(_strand).addElement(_navigationBar);
 			}
 		}
 		

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/dca97977/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/chrome/NavigationBar.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/chrome/NavigationBar.as b/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/chrome/NavigationBar.as
index 5e7873e..4b6509f 100644
--- a/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/chrome/NavigationBar.as
+++ b/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/chrome/NavigationBar.as
@@ -82,7 +82,7 @@ package org.apache.flex.mobile.chrome
 			
 			for (var i:int=0; i < _controls.length; i++)
 			{
-				addElement( _controls[i], false );
+				addElementNoChangeEvent( _controls[i] );
 				
 				var ctrl:IEventDispatcher = _controls[i] as IEventDispatcher;
 				ctrl.addEventListener("show", handleVisibilityChange);

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/dca97977/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/chrome/ToolBar.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/chrome/ToolBar.as b/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/chrome/ToolBar.as
index af63d49..fc84556 100644
--- a/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/chrome/ToolBar.as
+++ b/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/chrome/ToolBar.as
@@ -71,7 +71,7 @@ package org.apache.flex.mobile.chrome
 			
 			for (var i:int=0; i < _controls.length; i++)
 			{
-				addElement( _controls[i], false );
+				addElementNoChangeEvent( _controls[i] );
 			}
 			
 			dispatchEvent(new Event("layoutNeeded"));


[4/6] git commit: [flex-asjs] [refs/heads/spark] - clean compile of MX for swf

Posted by ah...@apache.org.
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/4f3802ef/frameworks/projects/MX/src/main/flex/mx/managers/FocusManager.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/managers/FocusManager.as b/frameworks/projects/MX/src/main/flex/mx/managers/FocusManager.as
new file mode 100644
index 0000000..105c979
--- /dev/null
+++ b/frameworks/projects/MX/src/main/flex/mx/managers/FocusManager.as
@@ -0,0 +1,2359 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package mx.managers
+{
+
+COMPILE::AS3
+{
+import flash.display.DisplayObject;
+import flash.display.DisplayObjectContainer;
+import flash.display.InteractiveObject;
+import flash.display.Stage;
+import flash.events.Event;
+import flash.events.EventDispatcher;
+import flash.events.FocusEvent;
+import flash.events.KeyboardEvent;
+import flash.events.MouseEvent;
+import flash.system.Capabilities;
+import flash.system.IME;
+import flash.text.TextField;
+import flash.ui.Keyboard;
+}
+
+COMPILE::LATER
+{
+import mx.core.FlexSprite;
+import mx.core.ISWFLoader;
+import mx.core.IVisualElement;
+}
+import mx.core.IButton;
+import mx.core.IChildList;
+import mx.core.IIMESupport;
+import mx.core.IRawChildrenContainer;
+import mx.core.IToggleButton;
+import mx.core.IUIComponent;
+import mx.core.mx_internal;
+import mx.events.FlexEvent;
+import mx.utils.Platform;
+
+import flex.display.Sprite;
+
+import org.apache.flex.core.IUIBase;
+
+use namespace mx_internal;
+
+/**
+ *  The FocusManager class manages the focus on components in response to mouse
+ *  activity or keyboard activity (Tab key).  There can be several FocusManager
+ *  instances in an application.  Each FocusManager instance 
+ *  is responsible for a set of components that comprise a "tab loop".  If you
+ *  hit Tab enough times, focus traverses through a set of components and
+ *  eventually get back to the first component that had focus.  That is a "tab loop"
+ *  and a FocusManager instance manages that loop.  If there are popup windows
+ *  with their own set of components in a "tab loop" those popup windows will have
+ *  their own FocusManager instances.  The main application always has a
+ *  FocusManager instance.
+ *
+ *  <p>The FocusManager manages focus from the "component level".
+ *  In Flex, a UITextField in a component is the only way to allow keyboard entry
+ *  of text. To the Flash Player or AIR, that UITextField has focus. However, from the 
+ *  FocusManager's perspective the component that parents the UITextField has focus.
+ *  Thus there is a distinction between component-level focus and player-level focus.
+ *  Application developers generally only have to deal with component-level focus while
+ *  component developers must understand player-level focus.</p>
+ *
+ *  <p>All components that can be managed by the FocusManager must implement
+ *  mx.managers.IFocusManagerComponent, whereas objects managed by player-level focus do not.</p>  
+ *
+ *  <p>The FocusManager also managers the concept of a defaultButton, which is
+ *  the Button on a form that dispatches a click event when the Enter key is pressed
+ *  depending on where focus is at that time.</p>
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+public class FocusManager extends EventDispatcher implements IFocusManager
+{
+    include "../core/Version.as";
+
+	//--------------------------------------------------------------------------
+	//
+	//  Class constants
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 * @private
+	 * 
+	 * Default value of parameter, ignore. 
+	 */
+	private static const FROM_INDEX_UNSPECIFIED:int = -2;
+	
+	//--------------------------------------------------------------------------
+	//
+	//  Class variables
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 * @private
+	 * 
+	 * Place to hook in additional classes
+	 */
+	public static var mixins:Array;
+
+    // flag to turn on/off some ie specific behavior
+    mx_internal static var ieshifttab:Boolean = true;
+
+    //--------------------------------------------------------------------------
+    //
+    //  Constructor
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  Constructor.
+     *
+     *  <p>A FocusManager manages the focus within the children of an IFocusManagerContainer.
+     *  It installs itself in the IFocusManagerContainer during execution
+     *  of the constructor.</p>
+     *
+     *  @param container An IFocusManagerContainer that hosts the FocusManager.
+     *
+     *  @param popup If <code>true</code>, indicates that the container
+     *  is a popup component and not the main application.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public function FocusManager(container:IFocusManagerContainer, popup:Boolean = false)
+    {
+        super();
+
+		this.popup = popup;
+
+        IMEEnabled = true;
+		// Only <= IE8 supported focus cycling out of the SWF
+        browserMode = Capabilities.playerType == "ActiveX" && !popup;
+        desktopMode = Platform.isAir && !popup;
+        // Flash main windows come up activated, AIR main windows don't
+        windowActivated = !desktopMode;
+    
+        container.focusManager = this; // this property name is reserved in the parent
+
+        // trace("FocusManager constructor " + container + ".focusManager");
+        
+        _form = container;
+        
+        focusableObjects = [];
+
+        focusPane = new Sprite();
+        focusPane.name = "focusPane";
+
+        addFocusables(DisplayObject(container));
+        
+        // Listen to the stage so we know when the root application is loaded.
+        container.addEventListener(Event.ADDED, addedHandler);
+        container.addEventListener(Event.REMOVED, removedHandler);
+        container.addEventListener(FlexEvent.SHOW, showHandler);
+        container.addEventListener(FlexEvent.HIDE, hideHandler);
+        container.addEventListener(FlexEvent.HIDE, childHideHandler, true);
+        container.addEventListener("_navigationChange_",viewHideHandler, true);
+        
+        //special case application and window
+        if (container.systemManager is SystemManager)
+        {
+            // special case application.  It shouldn't need to be made
+            // active and because we defer appCreationComplete, this 
+            // would steal focus back from any popups created during
+            // instantiation
+            if (container != SystemManager(container.systemManager).application)
+                container.addEventListener(FlexEvent.CREATION_COMPLETE,
+                                       creationCompleteHandler);
+        }
+        
+		if (mixins)
+		{
+			var n:int = mixins.length;
+			for (var i:int = 0; i < n; i++)
+			{
+				new mixins[i](this);
+			}
+		}
+
+        // Make sure the SystemManager is running so it can tell us about
+        // mouse clicks and stage size changes.
+		try
+		{
+			var awm:IActiveWindowManager = 
+				IActiveWindowManager(container.systemManager.getImplementation("mx.managers::IActiveWindowManager"));
+			if (awm)
+        		awm.addFocusManager(container); // build a message that does the equal
+
+            if (hasEventListener("initialize"))
+		    	dispatchEvent(new Event("initialize"));
+
+		}
+		catch (e:Error)
+		{
+			// ignore null pointer errors caused by container using a 
+			// systemManager from another sandbox.
+		}
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Variables
+    //
+    //--------------------------------------------------------------------------
+
+    private var LARGE_TAB_INDEX:int = 99999;
+
+    mx_internal var calculateCandidates:Boolean = true;
+
+	/**
+	 * @private
+	 * 
+	 * True if this focus manager is a popup, false if it is a main application.
+	 * 
+	 */
+	mx_internal var popup:Boolean;
+
+    /**
+     * @private
+     * 
+     * True if this focus manager will try to enable/disable the IME based on
+     * whether the focused control uses IME.  Leaving this as a backdoor just in case.
+     * 
+     */
+    mx_internal var IMEEnabled:Boolean;
+
+    /**
+     *  @private
+     *  We track whether we've been last activated or saw a TAB
+     *  This is used in browser tab management
+     */
+    mx_internal var lastAction:String;
+
+    /**
+     *  @private
+     *  Tab management changes based on whether were in a browser or not
+     *  This value is also affected by whether you are a modal dialog or not
+     */
+    public var browserMode:Boolean;
+
+    /**
+     *  @private
+     *  Activation changes depending on whether we're running in AIR or not
+     */
+    public var desktopMode:Boolean;
+
+    /**
+     *  @private
+     *  Tab management changes based on whether were in a browser or not
+     *  If non-null, this is the object that will
+     *  lose focus to the browser
+     */
+    private var browserFocusComponent:InteractiveObject;
+
+    /**
+     *  @private
+     *  Total set of all objects that can receive focus
+     *  but might be disabled or invisible.
+     */
+    mx_internal var focusableObjects:Array;
+    
+    /**
+     *  @private
+     *  Filtered set of objects that can receive focus right now.
+     */
+    private var focusableCandidates:Array;
+
+    /**
+     *  @private
+     */
+    private var activated:Boolean;
+    /**
+     *  @private
+     */
+    private var windowActivated:Boolean;
+    
+    /**
+     * 	@private
+     * 
+     * 	true if focus was changed to one of focusable objects. False if focus passed to 
+     * 	the browser.
+     */
+	mx_internal var focusChanged:Boolean;
+
+    /**
+	 * 	@private
+	 * 
+	 * 	if non-null, the location to move focus from instead of the object 
+	 *  that has focus in the stage.
+	 */
+	mx_internal var fauxFocus:DisplayObject;
+	 
+	 
+	//--------------------------------------------------------------------------
+    //
+    //  Properties
+    //
+    //--------------------------------------------------------------------------
+
+    //----------------------------------
+    //  showFocusIndicator
+    //----------------------------------
+
+    /**
+     *  @private
+     *  Storage for the showFocusIndicator property.
+     */
+    mx_internal var _showFocusIndicator:Boolean = false;
+    
+    /**
+     *  @inheritDoc
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public function get showFocusIndicator():Boolean
+    {
+        return _showFocusIndicator;
+    }
+    
+    /**
+     *  @private
+     */
+    public function set showFocusIndicator(value:Boolean):void
+    {
+        var changed:Boolean = _showFocusIndicator != value;
+        // trace("FM " + this + " showFocusIndicator = " + value);
+        _showFocusIndicator = value;
+
+        if (hasEventListener("showFocusIndicator"))
+            dispatchEvent(new Event("showFocusIndicator"));
+    }
+
+    //----------------------------------
+    //  defaultButton
+    //----------------------------------
+
+    /**
+     *  @private
+     *  The current default button.
+     */
+    private var defButton:IButton;
+
+    /**
+     *  @private
+     */
+    private var _defaultButton:IButton;
+
+    /**
+     *  @inheritDoc
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public function get defaultButton():IButton
+    {
+		return _defaultButton;
+    }
+
+    /**
+     *  @private
+     *  We don't type the value as Button for dependency reasons
+     */
+    public function set defaultButton(value:IButton):void
+    {
+		var button:IButton = value ? IButton(value) : null;
+
+        if (button != _defaultButton)
+        {
+            if (_defaultButton)
+                _defaultButton.emphasized = false;
+            
+            if (defButton)  
+                defButton.emphasized = false;
+            
+            _defaultButton = button;
+            
+            if (defButton != _lastFocus || _lastFocus == _defaultButton)
+            {
+            	defButton = button;
+            
+           		if (button)
+                	button.emphasized = true;
+        	}
+    	}
+    }
+
+    //----------------------------------
+    //  defaultButtonEnabled
+    //----------------------------------
+
+    /**
+     *  @private
+     *  Storage for the defaultButtonEnabled property.
+     */
+    private var _defaultButtonEnabled:Boolean = true;
+
+    /**
+     *  @inheritDoc
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public function get defaultButtonEnabled():Boolean
+    {
+        return _defaultButtonEnabled;
+    }
+    
+    /**
+     *  @private
+     */
+    public function set defaultButtonEnabled(value:Boolean):void
+    {
+        _defaultButtonEnabled = value;
+        
+        // Synchronize with the new value. We ensure that our 
+        // default button is de-emphasized if defaultButtonEnabled
+        // is false.
+        if (defButton)
+            defButton.emphasized = value;
+    }
+    
+    //----------------------------------
+    //  focusPane
+    //----------------------------------
+
+    /**
+     *  @private
+     *  Storage for the focusPane property.
+     */
+    private var _focusPane:Sprite;
+
+    /**
+     *  @inheritDoc
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public function get focusPane():Sprite
+    {
+        return _focusPane;
+    }
+
+    /**
+     *  @private
+     */
+    public function set focusPane(value:Sprite):void
+    {
+        _focusPane = value;
+    }
+
+    //----------------------------------
+    //  form
+    //----------------------------------
+
+    /**
+     *  @private
+     *  Storage for the form property.
+     */
+    private var _form:IFocusManagerContainer;
+    
+    /**
+     *  @private
+     *  The form is the property where we store the IFocusManagerContainer
+     *  that hosts this FocusManager.
+     */
+    mx_internal function get form():IFocusManagerContainer
+    {
+        return _form;
+    }
+    
+    /**
+     *  @private
+     */
+    mx_internal function set form (value:IFocusManagerContainer):void
+    {
+        _form = value;
+    }
+
+
+    //----------------------------------
+    //  _lastFocus
+    //----------------------------------
+    
+    /**
+     *  @private
+     *  the object that last had focus
+     */
+    private var _lastFocus:IFocusManagerComponent;
+
+
+	/**
+	 * 	@private
+	 */
+	mx_internal function get lastFocus():IFocusManagerComponent
+	{
+		return _lastFocus;
+	}
+	 
+	/**
+	 * 	@private
+	 */
+	mx_internal function set lastFocus(value:IFocusManagerComponent):void
+	{
+		_lastFocus = value;
+	}
+
+    //----------------------------------
+    //  nextTabIndex
+    //----------------------------------
+
+    /**
+     *  @inheritDoc
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public function get nextTabIndex():int
+    {
+        return getMaxTabIndex() + 1;
+    }
+
+    /**
+     *  Gets the highest tab index currently used in this Focus Manager's form or subform.
+     *
+     *  @return Highest tab index currently used.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    private function getMaxTabIndex():int
+    {
+        var z:Number = 0;
+
+        var n:int = focusableObjects.length;
+        for (var i:int = 0; i < n; i++)
+        {
+            var t:Number = focusableObjects[i].tabIndex;
+            if (!isNaN(t))
+                z = Math.max(z, t);
+        }
+        
+        return z;
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Methods
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @inheritDoc
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public function getFocus():IFocusManagerComponent
+    {
+        var stage:Stage = form.systemManager.stage;
+        
+        if (!stage)
+            return null;
+            
+        var o:InteractiveObject = stage.focus;
+		var i:IUIBase;
+		while (o != null)
+		{
+			if (o is IUIBase)
+			{
+				i = o as IUIBase;
+				break;
+			}
+			o = o.parent;
+		}
+        
+        // If a Stage* object (such as StageText or StageWebView) has focus,
+        // stage.focus will be set to null. Much of the focus framework is not
+        // set up to handle this. So, if stage.focus is null, we return the last
+        // IFocusManagerComponent that had focus.  In ADL, focus works slightly
+        // different than it does on device when using StageText.  In ADL, when
+        // the focus is a StageText component, a TextField whose parent is the 
+        // stage is assigned focus.  
+        if ((!o && _lastFocus) || (o is TextField && o.parent == stage))
+            return _lastFocus;
+        
+        return findFocusManagerComponent(i);
+    }
+
+    /**
+     *  @inheritDoc
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public function setFocus(o:IFocusManagerComponent):void
+    {
+        // trace("FM " + this + " setting focus to " + o);
+
+        o.setFocus();
+        
+        if (hasEventListener("setFocus"))
+    		dispatchEvent(new Event("setFocus"));
+        // trace("FM set focus");
+    }
+
+    /**
+     *  @private
+     */
+    private function focusInHandler(event:FocusEvent):void
+    {
+        var target:InteractiveObject = InteractiveObject(event.target);
+        // trace("FocusManager focusInHandler in  = " + this._form.systemManager.loaderInfo.url);
+        // trace("FM " + this + " focusInHandler " + target);
+
+		// dispatch cancelable FocusIn to see if Marshal Plan mixin wants it
+        if (hasEventListener(FocusEvent.FOCUS_IN))
+    		if (!dispatchEvent(new FocusEvent(FocusEvent.FOCUS_IN, false, true, target)))
+    			return;
+
+        if (isParent(DisplayObjectContainer(form), target))
+        {
+            if (_defaultButton)
+            {
+                if (target is IButton && target != _defaultButton 
+                    && !(target is IToggleButton))
+                    _defaultButton.emphasized = false;
+                else if (_defaultButtonEnabled)
+                    _defaultButton.emphasized = true;
+            }
+ 
+			var o:InteractiveObject = target;
+			var i:IUIBase;
+			while (o != null)
+			{
+				if (o is IUIBase)
+				{
+					i = o as IUIBase;
+					break;
+				}
+				o = o.parent;
+			}
+            // trace("FM " + this + " setting last focus " + target);
+            _lastFocus = findFocusManagerComponent(i);
+            
+			if (Capabilities.hasIME)
+            {
+                var usesIME:Boolean;
+                if (_lastFocus is IIMESupport)
+                {
+                    var imeFocus:IIMESupport = IIMESupport(_lastFocus);
+                    if (imeFocus.enableIME)
+                        usesIME = true;
+                }
+                if (IMEEnabled)
+                    IME.enabled = usesIME;
+            }
+            
+			// handle default button here
+			// we can't check for Button because of cross-versioning so
+			// for now we just check for an emphasized property
+            if (_lastFocus is IButton && !(_lastFocus is IToggleButton))
+			{
+                defButton = _lastFocus as IButton;
+			}
+			else
+			{
+				// restore the default button to be the original one
+				if (defButton && defButton != _defaultButton)
+					defButton = _defaultButton;
+			}
+		}
+	}
+
+    /**
+     *  @private  Useful for debugging
+     */
+    private function focusOutHandler(event:FocusEvent):void
+    {
+        var target:InteractiveObject = InteractiveObject(event.target);
+        // trace("FocusManager focusOutHandler in  = " + this._form.systemManager.loaderInfo.url);
+        // trace("FM " + this + " focusOutHandler " + target);
+    }
+
+    /**
+     *  @private
+     *  restore focus to whoever had it last
+     */
+    private function activateHandler(event:Event):void
+    {
+//        var target:InteractiveObject = InteractiveObject(event.target);
+        // trace("FM " + this + " activateHandler ", _lastFocus);
+		
+        // if we were the active FM when we were deactivated
+        // and we're not running in AIR, then dispatch the event now
+        // otherwise wait for the AIR events to fire
+        if (activated && !desktopMode)
+        {
+            dispatchEvent(new FlexEvent(FlexEvent.FLEX_WINDOW_ACTIVATE));
+		    // restore focus if this focus manager had last focus
+            if (_lastFocus && (!browserMode || ieshifttab))
+	    	    _lastFocus.setFocus();
+	        lastAction = "ACTIVATE";
+        }
+    }
+
+    /**
+     *  @private  
+     *  Dispatch event if we're not running in AIR.  AIR will
+     *  dispatch windowDeactivate that we respond to instead
+     */
+    private function deactivateHandler(event:Event):void
+    {
+        // var target:InteractiveObject = InteractiveObject(event.target);
+        // trace("FM " + this + " deactivateHandler ", _lastFocus);
+
+        // if we are the active FM when we were deactivated
+        // and we're not running in AIR, then dispatch the event now
+        // otherwise wait for the AIR events to fire
+        if (activated && !desktopMode)
+        {
+            dispatchEvent(new FlexEvent(FlexEvent.FLEX_WINDOW_DEACTIVATE));
+        }
+    }
+
+    /**
+     *  @private
+     *  restore focus to whoever had it last
+     */
+    private function activateWindowHandler(event:Event):void
+    {
+//        var target:InteractiveObject = InteractiveObject(event.target);
+        // trace("FM " + this + " activateWindowHandler ", _lastFocus);
+		
+        windowActivated = true;
+
+        if (activated)
+        {
+            dispatchEvent(new FlexEvent(FlexEvent.FLEX_WINDOW_ACTIVATE));
+		    // restore focus if this focus manager had last focus
+	        if (_lastFocus && !browserMode)
+	    	    _lastFocus.setFocus();
+	        lastAction = "ACTIVATE";
+        }
+    }
+
+    /**
+     *  @private  
+     *  If we're responsible for the focused control, remove focus from it
+     *  so it gets the same events as it would if the whole app lost focus
+     */
+    private function deactivateWindowHandler(event:Event):void
+    {
+        // var target:InteractiveObject = InteractiveObject(event.target);
+        // trace("FM " + this + " deactivateWindowHandler ", _lastFocus);
+
+        windowActivated = false;
+
+        if (activated)
+        {
+            dispatchEvent(new FlexEvent(FlexEvent.FLEX_WINDOW_DEACTIVATE));
+            if (form.systemManager.stage)
+                form.systemManager.stage.focus = null;
+        }
+    }   
+
+    /**
+     *  @inheritDoc
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public function showFocus():void
+    {
+        if (!showFocusIndicator)
+        {
+            showFocusIndicator = true;
+            if (_lastFocus)
+                _lastFocus.drawFocus(true);
+        }
+    }
+
+    /**
+     *  @inheritDoc
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public function hideFocus():void
+    {
+        // trace("FOcusManger " + this + " Hide Focus");
+        if (showFocusIndicator)
+        {
+            showFocusIndicator = false;
+            if (_lastFocus)
+                _lastFocus.drawFocus(false);
+        }
+        // trace("END FOcusManger Hide Focus");
+    }
+    
+    /**
+     *  The SystemManager activates and deactivates a FocusManager
+     *  if more than one IFocusManagerContainer is visible at the same time.
+     *  If the mouse is clicked in an IFocusManagerContainer with a deactivated
+     *  FocusManager, the SystemManager will call 
+     *  the <code>activate()</code> method on that FocusManager.
+     *  The FocusManager that was activated will have its <code>deactivate()</code> method
+     *  called prior to the activation of another FocusManager.
+     *
+     *  <p>The FocusManager adds event handlers that allow it to monitor
+     *  focus related keyboard and mouse activity.</p>
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public function activate():void
+    {
+        // we can get a double activation if we're popping up and becoming visible
+        // like the second time a menu appears
+        if (activated)
+        {
+        	// trace("FocusManager is already active " + this);
+            return;
+        }
+
+        // trace("FocusManager activating = " + this._form.systemManager.loaderInfo.url);
+        // trace("FocusManager activating " + this);
+
+        // listen for focus changes, use weak references for the stage
+		// form.systemManager can be null if the form is created in a sandbox and 
+		// added as a child to the root system manager.
+		var sm:ISystemManager = form.systemManager;
+		if (sm)
+		{
+			if (sm.isTopLevelRoot())
+			{
+		        sm.stage.addEventListener(FocusEvent.MOUSE_FOCUS_CHANGE, mouseFocusChangeHandler, false, 0, true);
+		        sm.stage.addEventListener(FocusEvent.KEY_FOCUS_CHANGE, keyFocusChangeHandler, false, 0, true);
+	    	    sm.stage.addEventListener(Event.ACTIVATE, activateHandler, false, 0, true);
+	        	sm.stage.addEventListener(Event.DEACTIVATE, deactivateHandler, false, 0, true);
+	  		}
+	  		else
+	  		{
+		        sm.addEventListener(FocusEvent.MOUSE_FOCUS_CHANGE, mouseFocusChangeHandler, false, 0, true);
+		        sm.addEventListener(FocusEvent.KEY_FOCUS_CHANGE, keyFocusChangeHandler, false, 0, true);
+	    	    sm.addEventListener(Event.ACTIVATE, activateHandler, false, 0, true);
+	        	sm.addEventListener(Event.DEACTIVATE, deactivateHandler, false, 0, true);	  			
+	  		}
+		}      
+	        
+        form.addEventListener(FocusEvent.FOCUS_IN, focusInHandler, true);
+        form.addEventListener(FocusEvent.FOCUS_OUT, focusOutHandler, true);
+        form.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); 
+        form.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownCaptureHandler, true); 
+        form.addEventListener(KeyboardEvent.KEY_DOWN, defaultButtonKeyHandler);
+        form.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler, true);
+        if (sm)
+        {
+            // AIR Window events, but don't want to link in AIREvent
+            // use capture phase because these get sent by the main Window
+            // and we might be managing a popup in that window
+            sm.addEventListener("windowActivate", activateWindowHandler, true, 0, true);
+            sm.addEventListener("windowDeactivate", deactivateWindowHandler, true, 0, true);
+        }
+
+        activated = true;
+        dispatchEvent(new FlexEvent(FlexEvent.FLEX_WINDOW_ACTIVATE));
+        
+        // Restore focus to the last control that had it if there was one.
+        if (_lastFocus)
+            setFocus(_lastFocus);
+
+        if (hasEventListener("activateFM"))
+    		dispatchEvent(new Event("activateFM"));
+
+    }
+
+    /**
+     *  The SystemManager activates and deactivates a FocusManager
+     *  if more than one IFocusManagerContainer is visible at the same time.
+     *  If the mouse is clicked in an IFocusManagerContainer with a deactivated
+     *  FocusManager, the SystemManager will call 
+     *  the <code>activate()</code> method on that FocusManager.
+     *  The FocusManager that was activated will have its <code>deactivate()</code> method
+     *  called prior to the activation of another FocusManager.
+     *
+     *  <p>The FocusManager removes event handlers that allow it to monitor
+     *  focus related keyboard and mouse activity.</p>
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public function deactivate():void
+    {
+        // trace("FocusManager deactivating " + this);
+        // trace("FocusManager deactivating = " + this._form.systemManager.loaderInfo.url);
+         
+        // listen for focus changes
+		var sm:ISystemManager = form.systemManager;
+        if (sm)
+        {
+			if (sm.isTopLevelRoot())
+			{
+		        sm.stage.removeEventListener(FocusEvent.MOUSE_FOCUS_CHANGE, mouseFocusChangeHandler);
+		        sm.stage.removeEventListener(FocusEvent.KEY_FOCUS_CHANGE, keyFocusChangeHandler);
+	    	    sm.stage.removeEventListener(Event.ACTIVATE, activateHandler);
+	        	sm.stage.removeEventListener(Event.DEACTIVATE, deactivateHandler);
+	  		}
+	  		else
+	  		{
+		        sm.removeEventListener(FocusEvent.MOUSE_FOCUS_CHANGE, mouseFocusChangeHandler);
+		        sm.removeEventListener(FocusEvent.KEY_FOCUS_CHANGE, keyFocusChangeHandler);
+	    	    sm.removeEventListener(Event.ACTIVATE, activateHandler);
+	        	sm.removeEventListener(Event.DEACTIVATE, deactivateHandler);	  			
+	  		}
+        }
+
+        form.removeEventListener(FocusEvent.FOCUS_IN, focusInHandler, true);
+        form.removeEventListener(FocusEvent.FOCUS_OUT, focusOutHandler, true);
+        form.removeEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); 
+        form.removeEventListener(MouseEvent.MOUSE_DOWN, mouseDownCaptureHandler, true); 
+        form.removeEventListener(KeyboardEvent.KEY_DOWN, defaultButtonKeyHandler);
+        // stop listening for default button in Capture phase
+        form.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler, true);
+
+        activated = false;
+        dispatchEvent(new FlexEvent(FlexEvent.FLEX_WINDOW_DEACTIVATE));
+
+        if (hasEventListener("deactivateFM"))
+    		dispatchEvent(new Event("deactivateFM"));
+    }
+
+    /**
+     *  @inheritDoc
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public function findFocusManagerComponent(
+                            o:IUIBase):IFocusManagerComponent
+    {
+    	return findFocusManagerComponent2(o as InteractiveObject) as IFocusManagerComponent;
+    }
+    
+    
+    /**
+    * @private
+    * 
+    * This version of the method differs from the old one to support SWFLoader
+    * being in the focusableObjects list but not being a component that
+    * gets focus. SWFLoader is in the list of focusable objects so
+    * focus may be passed over a bridge to the components on the other
+    * side of the bridge.
+    */
+    private function findFocusManagerComponent2(
+                            o:InteractiveObject):DisplayObject
+
+    {
+    	try
+    	{
+	        while (o)
+	        {
+				COMPILE::LATER
+				{
+	            if ((o is IFocusManagerComponent && IFocusManagerComponent(o).focusEnabled) ||
+	            	 o is ISWFLoader)
+	                return o;
+				}
+				if (o is IFocusManagerComponent && IFocusManagerComponent(o).focusEnabled)
+					return o as DisplayObject;
+				
+	            o = o.parent;
+	        }
+	    }
+	    catch (error:SecurityError)
+	    {
+	    	// can happen in a loaded child swf
+	    	// trace("findFocusManagerComponent: handling security error");
+	    }
+
+        // tab was set somewhere else
+        return null;
+    }
+
+    /**
+     *  @private
+     *  Returns true if p is a parent of o.
+     */
+    private function isParent(p:DisplayObjectContainer, o:DisplayObject):Boolean
+    {
+        if (p == o)
+            return false;
+        
+        if (p is IRawChildrenContainer)
+            return IRawChildrenContainer(p).rawChildren.contains(o);
+        
+        return p.contains(o);
+    }
+    
+    private function isEnabledAndVisible(o:DisplayObject):Boolean
+    {
+        var formParent:DisplayObjectContainer = DisplayObjectContainer(form);
+        
+        while (o != formParent)
+        {
+            if (o is IUIComponent)
+                if (!IUIComponent(o).enabled)
+                    return false;
+            
+			COMPILE::LATER
+			{
+            if (o is IVisualElement)
+                if (IVisualElement(o).designLayer && !IVisualElement(o).designLayer.effectiveVisibility)
+                    return false;
+			}
+			
+            if (!o.visible) 
+                return false;
+            o = o.parent;
+
+            // if no parent, then not on display list
+            if (!o)
+                return false;
+        }
+        return true;
+    }
+
+    /**
+     *  @private
+     */
+    private function sortByTabIndex(a:InteractiveObject, b:InteractiveObject):int
+    {
+        var aa:int = a.tabIndex;
+        var bb:int = b.tabIndex;
+
+        if (aa == -1)
+            aa = int.MAX_VALUE;
+        if (bb == -1)
+            bb = int.MAX_VALUE;
+
+        return (aa > bb ? 1 :
+                aa < bb ? -1 : sortByDepth(DisplayObject(a), DisplayObject(b)));
+    }
+
+    /**
+     *  @private
+     */
+    private function sortFocusableObjectsTabIndex():void
+    {
+        // trace("FocusableObjectsTabIndex");
+        
+        focusableCandidates = [];
+        
+        var n:int = focusableObjects.length;
+        for (var i:int = 0; i < n; i++)
+        {
+            var c:IFocusManagerComponent = focusableObjects[i] as IFocusManagerComponent;
+			COMPILE::LATER
+			{
+				if ((c && c.tabIndex && !isNaN(Number(c.tabIndex))) ||
+					focusableObjects[i] is ISWFLoader)
+				{
+					// if we get here, it is a candidate
+					focusableCandidates.push(focusableObjects[i]);
+				}
+			}
+			if (c && c.tabIndex && !isNaN(Number(c.tabIndex)))
+			{
+				// if we get here, it is a candidate
+				focusableCandidates.push(focusableObjects[i]);
+			}
+        }
+        
+        focusableCandidates.sort(sortByTabIndex);
+    }
+
+    /**
+     *  @private
+     */
+    private function sortByDepth(aa:DisplayObject, bb:DisplayObject):Number
+    {
+        var val1:String = "";
+        var val2:String = "";
+        var index:int;
+        var tmp:String;
+        var tmp2:String;
+        var zeros:String = "0000";
+
+        var a:DisplayObject = DisplayObject(aa);
+        var b:DisplayObject = DisplayObject(bb);
+
+		// TODO (egreenfi):  If a component lives inside of a group, we care about not its display object index, but
+		// its index within the group. See SDK-25144
+		
+        while (a != DisplayObject(form) && a.parent)
+        {
+            index = getChildIndex(a.parent, a);
+            tmp = index.toString(16);
+            if (tmp.length < 4)
+            {
+                tmp2 = zeros.substring(0, 4 - tmp.length) + tmp;
+            }
+            val1 = tmp2 + val1;
+            a = a.parent;
+        }
+        
+        while (b != DisplayObject(form) && b.parent)
+        {
+            index = getChildIndex(b.parent, b);
+            tmp = index.toString(16);
+            if (tmp.length < 4)
+            {
+                tmp2 = zeros.substring(0, 4 - tmp.length) + tmp;
+            }
+            val2 = tmp2 + val2;
+            b = b.parent;
+        }
+
+        return val1 > val2 ? 1 : val1 < val2 ? -1 : 0;
+    }
+
+    private function getChildIndex(parent:DisplayObjectContainer, child:DisplayObject):int
+    {
+        try 
+        {
+            return parent.getChildIndex(child);
+        }
+        catch(e:Error)
+        {
+            if (parent is IRawChildrenContainer)
+                return IRawChildrenContainer(parent).rawChildren.getChildIndex(child);
+            throw e;
+        }
+        throw new Error("FocusManager.getChildIndex failed");   // shouldn't ever get here
+    }
+
+    /**
+     *  @private
+     *  Calculate what focusableObjects are valid tab candidates.
+     */
+    private function sortFocusableObjects():void
+    {
+        // trace("FocusableObjects " + focusableObjects.length.toString());
+        focusableCandidates = [];
+        
+        var n:int = focusableObjects.length;
+        for (var i:int = 0; i < n; i++)
+        {
+            var c:InteractiveObject = focusableObjects[i];
+            // trace("  " + c);
+            if (c.tabIndex && !isNaN(Number(c.tabIndex)) && c.tabIndex > 0)
+            {
+                sortFocusableObjectsTabIndex();
+                return;
+            }
+            focusableCandidates.push(c);
+        }
+        
+        focusableCandidates.sort(sortByDepth);
+    }
+
+    /**
+     *  Call this method to make the system
+     *  think the Enter key was pressed and the defaultButton was clicked
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    mx_internal function sendDefaultButtonEvent():void
+    {
+        // trace("FocusManager.sendDefaultButtonEvent " + defButton);
+        defButton.dispatchEvent(new MouseEvent("click"));
+    }
+
+    /**
+     *  @private
+     *  Do a tree walk and add all children you can find.
+     */
+    mx_internal function addFocusables(o:DisplayObject, skipTopLevel:Boolean = false):void
+    {
+        // trace(">>addFocusables " + o);
+        if ((o is IFocusManagerComponent) && !skipTopLevel)
+        {
+			
+			var addToFocusables:Boolean = false;
+        	if (o is IFocusManagerComponent)
+        	{
+	            var focusable:IFocusManagerComponent = IFocusManagerComponent(o);
+	            if (focusable.focusEnabled)
+	            {
+	                if (focusable.tabFocusEnabled && isTabVisible(o))
+	                {
+						addToFocusables = true;	                	
+	                }
+                }
+            }
+
+			if (addToFocusables)
+			{            
+               	if (focusableObjects.indexOf(o) == -1)
+            	{
+                    focusableObjects.push(o);
+	                calculateCandidates = true;
+    	            // trace("FM added " + o);
+    	        }
+   			}
+            o.addEventListener("tabFocusEnabledChange", tabFocusEnabledChangeHandler);
+            o.addEventListener("tabIndexChange", tabIndexChangeHandler);
+
+        }
+        
+        if (o is DisplayObjectContainer)
+        {
+            var doc:DisplayObjectContainer = DisplayObjectContainer(o);
+            // Even if they aren't focusable now,
+            // listen in case they become later.
+            var checkChildren:Boolean;
+
+            if (o is IFocusManagerComponent)
+            {
+                o.addEventListener("hasFocusableChildrenChange", hasFocusableChildrenChangeHandler);
+                checkChildren = IFocusManagerComponent(o).hasFocusableChildren;
+            }
+            else
+            {
+                o.addEventListener("tabChildrenChange", tabChildrenChangeHandler);
+                checkChildren = doc.tabChildren;
+            }
+
+            if (checkChildren)
+            {
+                if (o is IRawChildrenContainer)
+                {
+                    // trace("using view rawChildren");
+                    var rawChildren:IChildList = IRawChildrenContainer(o).rawChildren;
+                    // recursively visit and add children of components
+                    // we don't do this for containers because we get individual
+                    // adds for the individual children
+                    var i:int;
+                    for (i = 0; i < rawChildren.numChildren; i++)
+                    {
+                        try
+                        {
+                            addFocusables(rawChildren.getChildAt(i));
+                        }
+                        catch(error:SecurityError)
+                        {
+                            // Ignore this child if we can't access it
+                            // trace("addFocusables: ignoring security error getting child from rawChildren: " + error);
+                        }
+                    }
+
+                }
+                else
+                {
+                    // trace("using container's children");
+                    // recursively visit and add children of components
+                    // we don't do this for containers because we get individual
+                    // adds for the individual children
+                    for (i = 0; i < doc.numChildren; i++)
+                    {
+                        try
+                        {
+                            addFocusables(doc.getChildAt(i));
+                        }
+                        catch(error:SecurityError)
+                        {
+                            // Ignore this child if we can't access it
+                            // trace("addFocusables: ignoring security error getting child at document." + error);
+                        }
+                    }
+                }
+            }
+        }
+        // trace("<<addFocusables " + o);
+    }
+
+    /**
+     *  @private
+     *  is it really tabbable?
+     */
+    private function isTabVisible(o:DisplayObject):Boolean
+    {
+        var s:DisplayObject = DisplayObject(form.systemManager);
+        if (!s) return false;
+
+        var p:DisplayObjectContainer = o.parent;
+        while (p && p != s)
+        {
+            if (!p.tabChildren)
+                return false;
+            if (p is IFocusManagerComponent && !(IFocusManagerComponent(p).hasFocusableChildren))
+                return false;
+            p = p.parent;
+        }
+        return true;
+    }
+
+    private function isValidFocusCandidate(o:DisplayObject, g:String):Boolean
+    {
+        if (o is IFocusManagerComponent)
+            if (!IFocusManagerComponent(o).focusEnabled)
+                return false;
+
+        if (!isEnabledAndVisible(o))
+            return false;
+
+        if (o is IFocusManagerGroup)
+        {
+            // reject if it is in the same tabgroup
+            var tg:IFocusManagerGroup = IFocusManagerGroup(o);
+            if (g == tg.groupName) return false;
+        }
+        return true;
+    }
+    
+    private function getIndexOfFocusedObject(o:DisplayObject):int
+    {
+        if (!o)
+            return -1;
+
+        var n:int = focusableCandidates.length;
+        // trace(" focusableCandidates " + n);
+        var i:int = 0;
+        for (i = 0; i < n; i++)
+        {
+            // trace(" comparing " + focusableCandidates[i]);
+            if (focusableCandidates[i] == o)
+                return i;
+        }
+
+        // no match?  try again with a slower match for certain
+        // cases like DG editors
+        for (i = 0; i < n; i++)
+        {
+            var iui:IUIComponent = focusableCandidates[i] as IUIComponent;
+            if (iui && iui.owns(o))
+                return i;
+        }
+
+        return -1;
+    }
+
+
+    private function getIndexOfNextObject(i:int, shiftKey:Boolean, bSearchAll:Boolean, groupName:String):int
+    {
+        var n:int = focusableCandidates.length;
+        var start:int = i;
+
+        while (true)
+        {
+            if (shiftKey)
+                i--;
+            else
+                i++;
+            if (bSearchAll)
+            {
+                if (shiftKey && i < 0)
+                    break;
+                if (!shiftKey && i == n)
+                    break;
+            }
+            else
+            {
+                i = (i + n) % n;
+                // came around and found the original
+                if (start == i)
+                    break;
+                // if start is -1, set start to first valid value of i
+                if (start == -1)
+                    start = i;
+            }
+            // trace("testing " + focusableCandidates[i]);
+            if (isValidFocusCandidate(focusableCandidates[i], groupName))
+            {
+                // trace(" stopped at " + i);
+                var o:DisplayObject = DisplayObject(findFocusManagerComponent2(focusableCandidates[i]));     
+                if (o is IFocusManagerGroup)
+                {
+                    
+                    // when landing on an element that is part of group, try to
+                    // advance selection to the selected group element
+                    var j:int;
+                    var obj:DisplayObject;
+                    var tg1:IFocusManagerGroup = IFocusManagerGroup(o);
+                    var tg2:IFocusManagerGroup;
+                    
+                    // normalize the "no selected group element" case
+                    // to the "first group element selected" case
+                    // (respecting the tab direction)
+                    var groupElementToFocus:IFocusManagerGroup = null;
+                    for (j = 0; j < focusableCandidates.length; j++)
+                    {
+                        obj = focusableCandidates[j];
+                        if (obj is IFocusManagerGroup)
+                        {
+                            tg2 = IFocusManagerGroup(obj);
+                            if (tg2.groupName == tg1.groupName && isEnabledAndVisible(obj) &&
+                                tg2["document"] == tg1["document"])
+                            {
+                                if (tg2.selected) 
+                                {
+                                    groupElementToFocus = tg2;
+                                    break;
+                                }
+                                if ((!shiftKey && groupElementToFocus == null) || shiftKey)
+                                    groupElementToFocus = tg2;
+                            }
+                        }
+                    }
+                    
+                    if (tg1 != groupElementToFocus)
+                    {
+                        var foundAnotherGroup:Boolean = false;
+                        // cycle the entire focusable candidates array forward or backward,
+                        // wrapping around boundaries, searching for our focus candidate
+                        j = i;
+                        for (var k:int = 0; k < focusableCandidates.length - 1; k++)
+                        {
+                            
+                            if (!shiftKey) 
+                            {
+                                j++;
+                                if (j == focusableCandidates.length)
+                                    j = 0;
+                            }
+                            else
+                            {
+                                j--;
+                                if (j == -1)
+                                    j = focusableCandidates.length - 1;
+                            }
+                            
+                            obj = focusableCandidates[j];
+                            if (isEnabledAndVisible(obj))
+                            {
+                                if (foundAnotherGroup)
+                                {
+                                    // we're now just trying to find a selected member of this group
+                                    if (obj is IFocusManagerGroup)
+                                    {
+                                        tg2 = IFocusManagerGroup(obj);
+                                        if (tg2.groupName == tg1.groupName && tg2["document"] == tg1["document"])
+                                        {
+                                            if (tg2.selected)
+                                            {
+                                                i = j;
+                                                break;
+                                            }
+                                        }
+                                    }
+                                }
+                                else if (obj is IFocusManagerGroup)
+                                {
+                                    tg2 = IFocusManagerGroup(obj);
+                                    if (tg2.groupName == tg1.groupName && tg2["document"] == tg1["document"])
+                                    {
+                                        if (tg2 == groupElementToFocus)
+                                        {
+                                            // if objects of same group have different tab index
+                                            // skip you aren't selected.
+                                            if (InteractiveObject(obj).tabIndex != InteractiveObject(o).tabIndex && !tg1.selected)
+                                                return getIndexOfNextObject(i, shiftKey, bSearchAll, groupName);
+                                            i = j;
+                                            break;
+                                        }
+                                    }
+                                    else
+                                    {
+                                        // switch to new group and hunt for selected item
+                                        tg1 = tg2;
+                                        i = j;
+                                        // element is part of another group, stop if selected
+                                        if (tg2.selected)
+                                            break;
+                                        else
+                                            foundAnotherGroup = true;
+                                    }
+                                }
+                                else
+                                {
+                                    // element isn't part of any group, stop
+                                    i = j;
+                                    break;
+                                }
+                            }
+                        }
+                    }
+                }
+                return i;
+            }
+        }
+        return i;
+    }
+
+    /**
+     *  @private
+     */
+    private function setFocusToNextObject(event:FocusEvent):void
+    {
+     	focusChanged = false;
+        if (focusableObjects.length == 0)
+            return;
+
+		var focusInfo:FocusInfo = getNextFocusManagerComponent2(event.shiftKey, fauxFocus);
+		// trace("winner = ", focusInfo.displayObject);
+
+		// If we are about to wrap focus around, send focus back to the parent.
+		if (!popup && (focusInfo.wrapped || !focusInfo.displayObject))
+		{
+            if (hasEventListener("focusWrapping"))
+	    		if (!dispatchEvent(new FocusEvent("focusWrapping", false, true, null, event.shiftKey)))
+		    		return;
+		}
+		
+		if (!focusInfo.displayObject)
+		{
+			event.preventDefault();
+			return;
+		}
+
+		setFocusToComponent(focusInfo.displayObject, event.shiftKey);		
+	}
+
+	private function setFocusToComponent(o:Object, shiftKey:Boolean):void
+	{
+		focusChanged = false;
+		if (o)
+		{
+            if (hasEventListener("setFocusToComponent"))
+    			if (!dispatchEvent(new FocusEvent("setFocusToComponent", false, true, InteractiveObject(o), shiftKey)))
+	    			return;
+
+			if (o is IFocusManagerComplexComponent)
+			{
+				IFocusManagerComplexComponent(o).assignFocus(shiftKey ? "bottom" : "top");
+				focusChanged = true;
+			}
+			else if (o is IFocusManagerComponent)
+			{
+				setFocus(IFocusManagerComponent(o));
+				focusChanged = true;
+			}
+				
+		}
+		
+	}
+
+	/**
+	 *  @private
+	 */
+	mx_internal function setFocusToNextIndex(index:int, shiftKey:Boolean):void
+	{
+		if (focusableObjects.length == 0)
+			return;
+			
+        // I think we'll have time to do this here instead of at creation time
+        // this makes and orders the focusableCandidates array
+        if (calculateCandidates)
+        {
+            sortFocusableObjects();
+            calculateCandidates = false;
+        }
+
+		var focusInfo:FocusInfo = getNextFocusManagerComponent2(shiftKey, null, index);			
+
+		// If we are about to wrap focus around, send focus back to the parent.
+		if (!popup && focusInfo.wrapped)
+		{
+            if (hasEventListener("setFocusToNextIndex"))
+    			if (!dispatchEvent(new FocusEvent("setFocusToNextIndex", false, true, null, shiftKey)))
+	    			return;
+		}
+		
+		setFocusToComponent(focusInfo.displayObject, shiftKey);
+	}
+	
+    /**
+     *  @inheritDoc
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public function getNextFocusManagerComponent(
+                            backward:Boolean = false):IFocusManagerComponent
+	{
+        const focusInfo:FocusInfo = getNextFocusManagerComponent2(backward, fauxFocus); 
+        return focusInfo ? focusInfo.displayObject as IFocusManagerComponent : null; 
+	}
+	
+	/**
+	 * Find the next object to set focus to.
+	 * 
+	 * @param backward true if moving in the backwards in the tab order, false if moving forward.
+	 * @param fromObject object to move focus from, if null move from the current focus.
+	 * @param formIndex index to move focus from, if specified use fromIndex to find the 
+	 * 		   			object, not fromObject.
+	 *  
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
+	 */
+	private function getNextFocusManagerComponent2(
+                            backward:Boolean = false, 
+                            fromObject:DisplayObject = null,
+                            fromIndex:int = FROM_INDEX_UNSPECIFIED):FocusInfo
+                            
+    {
+        if (focusableObjects.length == 0)
+            return null;
+
+        // I think we'll have time to do this here instead of at creation time
+        // this makes and orders the focusableCandidates array
+        if (calculateCandidates)
+        {
+            sortFocusableObjects();
+            calculateCandidates = false;
+        }
+
+        // trace("focus was at " + fromObject);
+        // trace("focusableObjects " + focusableObjects.length);
+        var i:int = fromIndex;
+        if (fromIndex == FROM_INDEX_UNSPECIFIED)
+        {
+	        // if there is no passed in object, then get the object that has the focus
+    	    var o:DisplayObject = fromObject; 
+        	if (!o)
+        		o = form.systemManager.stage.focus;
+            else if (o == form.systemManager.stage)
+                o == null;
+        
+	        o = DisplayObject(findFocusManagerComponent2(InteractiveObject(o)));
+	
+	        var g:String = "";
+	        if (o is IFocusManagerGroup)
+	        {
+	            var tg:IFocusManagerGroup = IFocusManagerGroup(o);
+	            g = tg.groupName;
+	        }
+	        i = getIndexOfFocusedObject(o);
+        }
+        
+        // trace(" starting at " + i);
+        var bSearchAll:Boolean = false;
+        var start:int = i;
+        if (i == -1) // we didn't find it
+        {
+            if (backward)
+                i = focusableCandidates.length;
+            bSearchAll = true;
+            // trace("search all " + i);
+        }
+
+        var j:int = getIndexOfNextObject(i, backward, bSearchAll, g);
+
+        // if we wrapped around, get if we have a parent we should pass
+        // focus to.
+        var wrapped:Boolean = false;
+        if (backward)
+        {
+        	if (j >= i)
+        		wrapped = true;
+        }
+        else if (j <= i)
+      		wrapped = true;
+
+		var focusInfo:FocusInfo = new FocusInfo();
+		
+		focusInfo.displayObject = findFocusManagerComponent2(focusableCandidates[j]);
+		focusInfo.wrapped = wrapped;
+		
+        return focusInfo;
+    }
+
+
+    /**
+     *  @private
+     */
+    private function getTopLevelFocusTarget(o:InteractiveObject):InteractiveObject
+    {
+        while (o != InteractiveObject(form))
+        {
+            if (o is IFocusManagerComponent &&
+                IFocusManagerComponent(o).focusEnabled &&
+                IFocusManagerComponent(o).mouseFocusEnabled &&
+                (o is IUIComponent ? IUIComponent(o).enabled : true))
+                return o;
+
+            if (hasEventListener("getTopLevelFocusTarget"))
+    			if (!dispatchEvent(new FocusEvent("getTopLevelFocusTarget", false, true, o.parent)))
+			    	return null;
+
+            o = o.parent;
+
+            if (o == null)
+                break;
+        }
+
+        return null;
+    }
+
+    /**
+     *  Returns a String representation of the component hosting the FocusManager object, 
+     *  with the String <code>".focusManager"</code> appended to the end of the String.
+     *
+     *  @return Returns a String representation of the component hosting the FocusManager object, 
+     *  with the String <code>".focusManager"</code> appended to the end of the String.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    override public function toString():String
+    {
+        return Object(form).toString() + ".focusManager";
+    }
+    
+    /**
+     *  @private
+     * 
+     *  Clear the browser focus component and undo any tab index we may have set.
+     */
+    private function clearBrowserFocusComponent():void
+    {
+        if (browserFocusComponent)
+        {
+            if (browserFocusComponent.tabIndex == LARGE_TAB_INDEX)
+                browserFocusComponent.tabIndex = -1;
+            
+            browserFocusComponent = null;
+        }
+    }
+    
+    //--------------------------------------------------------------------------
+    //
+    //  Event handlers
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     *  Listen for children being added
+     *  and see if they are focus candidates.
+     */
+    private function addedHandler(event:Event):void
+    {
+        var target:DisplayObject = DisplayObject(event.target);
+        
+        // trace("FM: addedHandler: got added for " + target);
+        
+        // if it is truly parented, add it, otherwise it will get added when the top of the tree
+        // gets parented.
+        if (target.stage)
+        {
+            // trace("FM: addedHandler: adding focusables");
+            addFocusables(DisplayObject(event.target));
+        }
+    }
+
+    /**
+     *  @private
+     *  Listen for children being removed.
+     */
+    private function removedHandler(event:Event):void
+    {
+        var i:int;
+        var o:DisplayObject = DisplayObject(event.target);
+        var focusPaneParent:DisplayObject = focusPane ? focusPane.parent : null;
+
+        // Remove the focusPane to allow the focusOwner to be garbage collected.
+        // Avoid recursion by not processing the removal of the focusPane itself.        
+        if (focusPaneParent && o != focusPane)
+        {
+            if (o is DisplayObjectContainer && 
+                isParent(DisplayObjectContainer(o), focusPane))
+            {
+                if (focusPaneParent is ISystemManager)
+                    ISystemManager(focusPaneParent).focusPane = null;
+                else
+                    IUIComponent(focusPaneParent).focusPane = null;
+            }
+        }
+            
+        // trace("FM got added for " + event.target);
+
+        if (o is IFocusManagerComponent)
+        {
+            for (i = 0; i < focusableObjects.length; i++)
+            {
+                if (o == focusableObjects[i])
+                {
+                    if (o == _lastFocus)
+                    {
+                        _lastFocus.drawFocus(false);
+                        _lastFocus = null;
+                    }
+                    // trace("FM removed " + o);
+                    focusableObjects.splice(i, 1);
+                    focusableCandidates = [];
+                    calculateCandidates = true;                 
+                    break;
+                }
+            }
+            o.removeEventListener("tabFocusEnabledChange", tabFocusEnabledChangeHandler);
+            o.removeEventListener("tabIndexChange", tabIndexChangeHandler);
+        }
+        removeFocusables(o, false);
+    }
+
+    /**
+     *  @private
+     */
+    private function removeFocusables(o:DisplayObject, dontRemoveTabChildrenHandler:Boolean):void
+    {
+        var i:int;
+        if (o is DisplayObjectContainer)
+        {
+            if (!dontRemoveTabChildrenHandler)
+            {
+                o.removeEventListener("tabChildrenChange", tabChildrenChangeHandler);
+                o.removeEventListener("hasFocusableChildrenChange", hasFocusableChildrenChangeHandler);
+            }
+
+            for (i = 0; i < focusableObjects.length; i++)
+            {
+                if (isParent(DisplayObjectContainer(o), focusableObjects[i]))
+                {
+                    if (focusableObjects[i] == _lastFocus)
+                    {
+                        _lastFocus.drawFocus(false);
+                        _lastFocus = null;
+                    }
+                    // trace("FM removed " + focusableObjects[i]);
+                    focusableObjects[i].removeEventListener(
+                        "tabFocusEnabledChange", tabFocusEnabledChangeHandler);
+                    focusableObjects[i].removeEventListener(
+                        "tabIndexChange", tabIndexChangeHandler);
+                    focusableObjects.splice(i, 1);
+                    i = i - 1;  // because increment would skip one
+                    
+                    focusableCandidates = [];
+                    calculateCandidates = true;                 
+                }
+            }
+        }
+    }
+
+    /**
+     *  @private
+     */
+    private function showHandler(event:Event):void
+    {
+		var awm:IActiveWindowManager = 
+			IActiveWindowManager(form.systemManager.getImplementation("mx.managers::IActiveWindowManager"));
+		if (awm)
+        	awm.activate(form); // build a message that does the equal
+    }
+
+    /**
+     *  @private
+     */
+    private function hideHandler(event:Event):void
+    {
+		var awm:IActiveWindowManager = 
+			IActiveWindowManager(form.systemManager.getImplementation("mx.managers::IActiveWindowManager"));
+		if (awm)
+        	awm.deactivate(form); // build a message that does the equal
+    }
+
+    /**
+     *  @private
+     */
+    private function childHideHandler(event:Event):void
+    {
+        var target:DisplayObject = DisplayObject(event.target);
+        // trace("FocusManager focusInHandler in  = " + this._form.systemManager.loaderInfo.url);
+        // trace("FM " + this + " focusInHandler " + target);
+
+        if (lastFocus && !isEnabledAndVisible(DisplayObject(lastFocus)) && DisplayObject(form).stage)
+        {
+            DisplayObject(form).stage.focus = null;
+            lastFocus = null;
+        }
+    }
+    
+    /**
+     *  @private
+     */
+    private function viewHideHandler(event:Event):void
+    {
+        // Target is the active view that is about to be hidden
+        var target:DisplayObjectContainer = event.target as DisplayObjectContainer;
+        var lastFocusDO:DisplayObject = lastFocus as DisplayObject;
+       
+        // If the lastFocus is in the view about to be hidden, clear focus
+        if (target && lastFocusDO && target.contains(lastFocusDO))
+            lastFocus = null;
+    }
+
+    /**
+     *  @private
+     */
+    private function creationCompleteHandler(event:FlexEvent):void
+    {
+        var o:DisplayObject = DisplayObject(form);
+        if (o.parent && o.visible && !activated)
+		{
+			var awm:IActiveWindowManager = 
+				IActiveWindowManager(form.systemManager.getImplementation("mx.managers::IActiveWindowManager"));
+			if (awm)
+	        	awm.activate(form); // build a message that does the equal
+		}
+    }
+
+    /**
+     *  @private
+     *  Add or remove if tabbing properties change.
+     */
+    private function tabIndexChangeHandler(event:Event):void
+    {
+        calculateCandidates = true;
+    }
+
+    /**
+     *  @private
+     *  Add or remove if tabbing properties change.
+     */
+    private function tabFocusEnabledChangeHandler(event:Event):void
+    {
+        calculateCandidates = true;
+
+        var o:IFocusManagerComponent = IFocusManagerComponent(event.target);
+        var n:int = focusableObjects.length;
+        for (var i:int = 0; i < n; i++)
+        {
+            if (focusableObjects[i] == o)
+                break;
+        }
+        if (o.tabFocusEnabled)
+        {
+            if (i == n && isTabVisible(DisplayObject(o)))
+            {
+                // trace("FM tpc added " + o);
+                // add it if were not already
+               	if (focusableObjects.indexOf(o) == -1)
+	                focusableObjects.push(o);
+            }
+        }
+        else
+        {
+            // remove it
+            if (i < n)
+            {
+                // trace("FM tpc removed " + o);
+                focusableObjects.splice(i, 1);
+            }
+        }
+    }
+
+    /**
+     *  @private
+     *  Add or remove if tabbing properties change.
+     */
+    private function tabChildrenChangeHandler(event:Event):void
+    {
+        if (event.target != event.currentTarget)
+            return;
+
+        calculateCandidates = true;
+
+        var o:DisplayObjectContainer = DisplayObjectContainer(event.target);
+        if (o.tabChildren)
+        {
+            addFocusables(o, true);
+        }
+        else
+        {
+            removeFocusables(o, true);
+        }
+    }
+
+    /**
+     *  @private
+     *  Add or remove if tabbing properties change.
+     */
+    private function hasFocusableChildrenChangeHandler(event:Event):void
+    {
+        if (event.target != event.currentTarget)
+            return;
+
+        calculateCandidates = true;
+
+        var o:IFocusManagerComponent = IFocusManagerComponent(event.target);
+        if (o.hasFocusableChildren)
+        {
+            addFocusables(DisplayObject(o), true);
+        }
+        else
+        {
+            removeFocusables(DisplayObject(o), true);
+        }
+    }
+
+    /**
+     *  @private
+     *  This gets called when mouse clicks on a focusable object.
+     *  We block player behavior
+     */
+    private function mouseFocusChangeHandler(event:FocusEvent):void
+    {
+        // trace("FocusManager: mouseFocusChangeHandler  in  = " + this._form.systemManager.loaderInfo.url);
+    	// trace("FocusManager: mouseFocusChangeHandler " + event);
+        
+        if (event.isDefaultPrevented())
+            return;
+
+        // If relatedObject is null because we don't have access to the 
+        // object getting focus then allow the Player to set focus
+        // to the object. The isRelatedObjectInaccessible property is 
+        // Player 10 only so we have to test if it is available. We
+        // will only see isRelatedObjectInaccessible if we are a version "10" swf
+        // (-target-player=10). Version "9" swfs will not see the property
+        // even if running in Player 10.
+        if (event.relatedObject == null && 
+            "isRelatedObjectInaccessible" in event &&
+            event["isRelatedObjectInaccessible"] == true)
+        {
+            // lost focus to a control in different sandbox.
+            return;
+        }
+        
+        if (event.relatedObject is TextField)
+        {
+            var tf:TextField = event.relatedObject as TextField;
+            if (tf.type == "input" || tf.selectable)
+            {
+                return; // pass it on
+            }
+        }
+
+        event.preventDefault();
+    }
+
+    /**
+     *  @private
+     *  This gets called when the tab key is hit.
+     */
+    mx_internal function keyFocusChangeHandler(event:FocusEvent):void
+    {
+        // trace("keyFocusChangeHandler handled by " + this);
+    	// trace("keyFocusChangeHandler event = " + event);
+    	
+    	var sm:ISystemManager = form.systemManager;
+
+        if (hasEventListener("keyFocusChange"))
+    		if (!dispatchEvent(new FocusEvent("keyFocusChange", false, true, InteractiveObject(event.target))))
+	    		return;
+
+        showFocusIndicator = true;
+		focusChanged = false;
+
+        var haveBrowserFocusComponent:Boolean = (browserFocusComponent != null);
+        if (browserFocusComponent)
+            clearBrowserFocusComponent();
+        
+        // see if we got here from a tab.  We also need to check for 
+        // keyCode == 0 because in IE sometimes the first time you tab 
+        // in to the flash player, you get keyCode == 0 instead of TAB.
+        // Flash Player bug #2295688.
+        if ((event.keyCode == Keyboard.TAB || (browserMode && event.keyCode == 0)) 
+                && !event.isDefaultPrevented())
+        {
+            if (haveBrowserFocusComponent)
+            {
+                if (hasEventListener("browserFocusComponent"))
+	    			dispatchEvent(new FocusEvent("browserFocusComponent", false, false, InteractiveObject(event.target)));
+				
+                return;
+            }
+
+            if (ieshifttab && lastAction == "ACTIVATE")
+            {
+                // IE seems to now require that we set focus to something during activate
+                // but then we get this keyFocusChange event.  I think we used to not
+                // need to set focus on activate and we still got the keyFocusChange
+                // and then stage.focus was null and we'd use the keyFocusChange event
+                // to determine which control (first or last) got focus based on
+                // the shift key.
+                // If we set focus on activate, then we get this keyFocusChange which moves
+                // the focus somewhere else, so we set fauxFocus to the stage as a signal
+                // to the setFocusToNextObject logic that it shouldn't use the stage.focus
+                // as the starting point.
+                fauxFocus = sm.stage;
+            }
+            // trace("tabHandled by " + this);
+            setFocusToNextObject(event);
+            if (ieshifttab && lastAction == "ACTIVATE")
+            {
+                fauxFocus = null;
+            }
+
+            // if we changed focus or if we're the main app
+            // eat the event
+			if (focusChanged || sm == sm.getTopLevelRoot())
+            	event.preventDefault();
+        }
+    }
+
+    /**
+     *  @private
+     *  Watch for TAB keys.
+     */
+    mx_internal function keyDownHandler(event:KeyboardEvent):void
+    {
+        // trace("onKeyDown handled by " + this);
+    	// trace("onKeyDown event = " + event);
+		// if the target is in a bridged application, let it handle the click.
+		var sm:ISystemManager = form.systemManager;
+
+        if (hasEventListener("keyDownFM"))
+    		if (!dispatchEvent(new FocusEvent("keyDownFM", false, true, InteractiveObject(event.target))))
+   	    		return;
+
+        if (sm is SystemManager)
+            SystemManager(sm).idleCounter = 0;
+
+        if (event.keyCode == Keyboard.TAB)
+        {
+            lastAction = "KEY";
+
+            // I think we'll have time to do this here instead of at creation time
+            // this makes and orders the focusableCandidates array
+            if (calculateCandidates)
+            {
+                sortFocusableObjects();
+                calculateCandidates = false;
+            }
+        }
+
+        if (browserMode)
+        {
+            if (browserFocusComponent)
+                clearBrowserFocusComponent();
+            
+            if (event.keyCode == Keyboard.TAB && focusableCandidates.length > 0)
+            {
+                // get the object that has the focus
+                var o:DisplayObject = fauxFocus;
+				if (!o)
+				{
+					o = form.systemManager.stage.focus;
+				}
+				
+                // trace("focus was at " + o);
+                // trace("focusableObjects " + focusableObjects.length);
+                o = DisplayObject(findFocusManagerComponent2(InteractiveObject(o)));
+                var g:String = "";
+                if (o is IFocusManagerGroup)
+                {
+                    var tg:IFocusManagerGroup = IFocusManagerGroup(o);
+                    g = tg.groupName;
+                }
+
+                var i:int = getIndexOfFocusedObject(o);
+                var j:int = getIndexOfNextObject(i, event.shiftKey, false, g);
+                if (event.shiftKey)
+                {
+                    if (j >= i)
+                    {
+                        // we wrapped so let browser have it
+                        browserFocusComponent = getBrowserFocusComponent(event.shiftKey);
+                        if (browserFocusComponent.tabIndex == -1)
+                            browserFocusComponent.tabIndex = 0;
+                    }
+                }
+                else
+                {
+                    if (j <= i)
+                    {
+                        // we wrapped so let browser have it
+                        browserFocusComponent = getBrowserFocusComponent(event.shiftKey);
+                        if (browserFocusComponent.tabIndex == -1)
+                            browserFocusComponent.tabIndex = LARGE_TAB_INDEX;
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     *  @private
+     *  Watch for ENTER key.
+     */
+    private function defaultButtonKeyHandler(event:KeyboardEvent):void
+    {        
+        var sm:ISystemManager = form.systemManager;
+        if (hasEventListener("defaultButtonKeyHandler"))
+    		if (!dispatchEvent(new FocusEvent("defaultButtonKeyHandler", false, true)))
+	    		return;
+            
+        if (defaultButtonEnabled && event.keyCode == Keyboard.ENTER &&
+			defButton && defButton.enabled)
+        {
+            sendDefaultButtonEvent();
+    	}
+    }
+
+    /**
+     *  @private
+     *  This gets called when the focus changes due to a mouse click.
+     *
+     *  Note: If the focus is changing to a TextField, we don't call
+     *  setFocus() on it because the player handles it;
+     *  calling setFocus() on a TextField which has scrollable text
+     *  causes the text to autoscroll to the end, making the
+     *  mouse click set the insertion point in the wrong place.
+     */
+    private function mouseDownCaptureHandler(event:MouseEvent):void
+    {
+        // trace("FocusManager mouseDownCaptureHandler in  = " + this._form.systemManager.loaderInfo.url);
+        // trace("FocusManager mouseDownCaptureHandler target " + event.target);
+        showFocusIndicator = false;
+    }
+
+    /**
+     *  @private
+     *  This gets called when the focus changes due to a mouse click.
+     *
+     *  Note: If the focus is changing to a TextField, we don't call
+     *  setFocus() on it because the player handles it;
+     *  calling setFocus() on a TextField which has scrollable text
+     *  causes the text to autoscroll to the end, making the
+     *  mouse click set the insertion point in the wrong place.
+     */
+    private function mouseDownHandler(event:MouseEvent):void
+    {
+        // trace("FocusManager mouseDownHandler in  = " + this._form.systemManager.loaderInfo.url);
+        // trace("FocusManager mouseDownHandler target " + event.target);
+        
+		// if the target is in a bridged application, let it handle the click.
+		var sm:ISystemManager = form.systemManager;
+        var o:DisplayObject = getTopLevelFocusTarget(
+            InteractiveObject(event.target));
+
+        if (!o)
+            return;
+
+        // trace("FocusManager mouseDownHandler on " + o);
+        
+        // Make sure the containing component gets notified.
+        // As the note above says, we don't set focus to a TextField ever
+        // because the player already did and took care of where
+        // the insertion point is, and we also don't call setfocus
+        // on a component that last the last focused object unless
+        // the last action was just to activate the player and didn't
+        // involve tabbing or clicking on a component
+        if ((o != _lastFocus || lastAction == "ACTIVATE") && !(o is TextField))
+            setFocus(IFocusManagerComponent(o));
+		else if (_lastFocus)
+		{
+			// trace("FM: skipped setting focus to " + _lastFocus);
+		}
+		
+        if (hasEventListener("mouseDownFM"))
+    		dispatchEvent(new FocusEvent("mouseDownFM", false, false, InteractiveObject(o)));
+
+        lastAction = "MOUSEDOWN";
+	
+    }
+	
+	private function getBrowserFocusComponent(shiftKey:Boolean):InteractiveObject
+	{
+    	var focusComponent:InteractiveObject = form.systemManager.stage.focus;
+		
+		// if the focus is null it means focus is in an application we
+		// don't have access to. Use either the last object or the first
+		// object in this focus manager's list.
+		if (!focusComponent)
+		{
+			var index:int = shiftKey ? 0 : focusableCandidates.length - 1;
+			focusComponent = focusableCandidates[index];
+		}
+		
+		return focusComponent;
+	}	
+}
+
+}
+
+import flash.display.DisplayObject;
+
+/** 
+ * @private
+ * 
+ *  Plain old class to return multiple items of info about the potential
+ *  change in focus.
+ */
+class FocusInfo
+{
+	public var displayObject:DisplayObject;	// object to get focus
+	public var wrapped:Boolean;				// true if focus wrapped around
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/4f3802ef/frameworks/projects/MX/src/main/flex/mx/managers/IFocusManagerComplexComponent.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/managers/IFocusManagerComplexComponent.as b/frameworks/projects/MX/src/main/flex/mx/managers/IFocusManagerComplexComponent.as
new file mode 100644
index 0000000..c6400ee
--- /dev/null
+++ b/frameworks/projects/MX/src/main/flex/mx/managers/IFocusManagerComplexComponent.as
@@ -0,0 +1,82 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package mx.managers
+{
+
+/**
+ *  The IFocusManagerComplexComponent interface defines the interface 
+ *  that components that can have more than one internal focus target
+ *  should implement in order to
+ *  receive focus from the FocusManager.
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+public interface IFocusManagerComplexComponent extends IFocusManagerComponent
+{
+	//--------------------------------------------------------------------------
+	//
+	//  Properties
+	//
+	//--------------------------------------------------------------------------
+
+	//----------------------------------
+	//  hasFocusableContent
+	//----------------------------------
+
+	/**
+	 *  A flag that indicates whether the component currently has internal
+	 *  focusable targets
+	 * 
+	 *  
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
+	 */
+	function get hasFocusableContent():Boolean;
+	
+	//--------------------------------------------------------------------------
+	//
+	//  Methods
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  Called by the FocusManager when the component receives focus.
+	 *  The component may in turn set focus to an internal component.
+	 *  The components setFocus() method will still be called when focused by
+	 *  the mouse, but this method will be used when focus changes via the
+	 *  keyboard
+	 *
+	 *  @param direction "bottom" if TAB used with SHIFT key, "top" otherwise
+	 *  
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
+	 */
+	function assignFocus(direction:String):void;
+
+}
+
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/4f3802ef/frameworks/projects/MX/src/main/flex/mx/managers/IFocusManagerGroup.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/managers/IFocusManagerGroup.as b/frameworks/projects/MX/src/main/flex/mx/managers/IFocusManagerGroup.as
new file mode 100644
index 0000000..97192bd
--- /dev/null
+++ b/frameworks/projects/MX/src/main/flex/mx/managers/IFocusManagerGroup.as
@@ -0,0 +1,85 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package mx.managers
+{
+
+/**
+ *  The IFocusManagerGroup interface defines the interface that 
+ *  any component must implement if it is grouped in sets,
+ *  where only one member of the set can be selected at any given time.
+ *  For example, a RadioButton implements IFocusManagerGroup
+ *  because a set of RadioButtons in the same group 
+ *  can only have one RadioButton selected at any one time,
+ *  and the FocusManager will make sure not to give focus to the RadioButtons
+ *  that are not selected in response to moving focus via the Tab key.
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+public interface IFocusManagerGroup
+{
+	//--------------------------------------------------------------------------
+	//
+	//  Properties
+	//
+	//--------------------------------------------------------------------------
+
+	//----------------------------------
+	//  groupName
+	//----------------------------------
+
+	/**
+	 *	The name of the group of controls to which the control belongs.
+	 *  
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
+	 */
+	function get groupName():String;
+
+	/**
+	 *  @private
+	 */
+	function set groupName(value:String):void;
+
+	//----------------------------------
+	//  selected
+	//----------------------------------
+
+	/**
+	 *	A flag that indicates whether this control is selected.
+	 *  
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
+	 */
+	function get selected():Boolean;
+
+	/**
+	 *  @private
+	 */
+	function set selected(value:Boolean):void;
+}
+
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/4f3802ef/frameworks/projects/MX/src/main/flex/mx/managers/ISystemManager.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/managers/ISystemManager.as b/frameworks/projects/MX/src/main/flex/mx/managers/ISystemManager.as
index 072c0cc..35e5800 100644
--- a/frameworks/projects/MX/src/main/flex/mx/managers/ISystemManager.as
+++ b/frameworks/projects/MX/src/main/flex/mx/managers/ISystemManager.as
@@ -24,6 +24,7 @@ COMPILE::AS3
 {
 	import flash.display.DisplayObject;
 	import flash.display.Sprite;		
+	import flash.display.Stage;		
 }
 COMPILE::JS
 {
@@ -506,6 +507,23 @@ public interface ISystemManager extends IEventDispatcher, IChildList, IFlexModul
      */
     function invalidateParentSizeAndDisplayList():void;
 
+	
+	//----------------------------------
+	//  stage
+	//----------------------------------
+	
+	/**
+	 *  The flash.display.Stage that represents the application window
+	 *  mapped to this SystemManager
+	 *  
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
+	 */
+	COMPILE::AS3
+	function get stage():Stage
+
 }
 
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/4f3802ef/frameworks/projects/MX/src/main/flex/mx/states/AddItems.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/states/AddItems.as b/frameworks/projects/MX/src/main/flex/mx/states/AddItems.as
index 68be25a..3254346 100644
--- a/frameworks/projects/MX/src/main/flex/mx/states/AddItems.as
+++ b/frameworks/projects/MX/src/main/flex/mx/states/AddItems.as
@@ -38,7 +38,7 @@ import mx.core.IDeferredContentOwner;
 import mx.core.IMXMLObject;
 import mx.core.ITransientDeferredInstance;
 import mx.core.IUIComponent;
-import mx.core.IVisualElement;
+import org.apache.flex.core.IVisualElement;
 import mx.core.IVisualElementContainer;
 import mx.core.UIComponent;
 


[3/6] git commit: [flex-asjs] [refs/heads/spark] - clean compile of MX for swf

Posted by ah...@apache.org.
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/4f3802ef/frameworks/projects/MX/src/main/flex/mx/styles/metadata/AlignStyles.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/styles/metadata/AlignStyles.as b/frameworks/projects/MX/src/main/flex/mx/styles/metadata/AlignStyles.as
new file mode 100644
index 0000000..0d1b6da
--- /dev/null
+++ b/frameworks/projects/MX/src/main/flex/mx/styles/metadata/AlignStyles.as
@@ -0,0 +1,49 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+/**
+ *  Horizontal alignment of children in the container.
+ *  Possible values are <code>"left"</code>, <code>"center"</code>,
+ *  and <code>"right"</code>.
+ *  The default value is <code>"left"</code>, but some containers,
+ *  such as ButtonBar and ToggleButtonBar,
+ *  have different default values.
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="horizontalAlign", type="String", enumeration="left,center,right", inherit="no")]
+
+/**
+ *  Vertical alignment of children in the container.
+ *  Possible values are <code>"top"</code>, <code>"middle"</code>,
+ *  and <code>"bottom"</code>.
+ *  The default value is <code>"top"</code>, but some containers,
+ *  such as ButtonBar, ControlBar, LinkBar,
+ *  and ToggleButtonBar, have different default values.
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="verticalAlign", type="String", enumeration="bottom,middle,top", inherit="no")]
+

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/4f3802ef/frameworks/projects/MX/src/main/flex/mx/utils/LoaderUtil.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/utils/LoaderUtil.as b/frameworks/projects/MX/src/main/flex/mx/utils/LoaderUtil.as
index 9984514..7f76b6d 100644
--- a/frameworks/projects/MX/src/main/flex/mx/utils/LoaderUtil.as
+++ b/frameworks/projects/MX/src/main/flex/mx/utils/LoaderUtil.as
@@ -26,10 +26,13 @@ import flash.events.IEventDispatcher;
 import flash.system.Capabilities;
 import flash.utils.Dictionary;
 
+COMPILE::LATER
+{
 import mx.core.ApplicationDomainTarget;
+import mx.core.RSLData;
+}
 import mx.core.IFlexModuleFactory;
 import mx.core.mx_internal;
-import mx.core.RSLData;
 import mx.events.Request;
 import mx.managers.SystemManagerGlobals;
 import mx.utils.Platform;


[5/6] git commit: [flex-asjs] [refs/heads/spark] - clean compile of MX for swf

Posted by ah...@apache.org.
clean compile of MX for swf


Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/4f3802ef
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/4f3802ef
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/4f3802ef

Branch: refs/heads/spark
Commit: 4f3802ef8a89bb02ba75e475d1cfc19ae35a1f3c
Parents: dca9797
Author: Alex Harui <ah...@apache.org>
Authored: Wed Jun 1 22:31:22 2016 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Wed Jun 1 22:31:22 2016 -0700

----------------------------------------------------------------------
 .../mx/containers/utilityClasses/BoxLayout.as   |    7 +-
 .../containers/utilityClasses/CanvasLayout.as   |    3 +
 .../MX/src/main/flex/mx/controls/Label.png      |  Bin 0 -> 401 bytes
 .../MX/src/main/flex/mx/core/Container.as       |   38 +-
 .../flex/mx/core/ContainerRawChildrenList.as    |    1 +
 .../MX/src/main/flex/mx/core/IToggleButton.as   |   39 +
 .../flex/mx/core/IVisualElementContainer.as     |   17 +-
 .../MX/src/main/flex/mx/core/LayoutContainer.as |    3 +
 .../MX/src/main/flex/mx/core/UIComponent.as     |    2 +-
 .../src/main/flex/mx/effects/EffectManager.as   |    2 +-
 .../src/main/flex/mx/managers/FocusManager.as   | 2359 ++++++++++++++++++
 .../managers/IFocusManagerComplexComponent.as   |   82 +
 .../main/flex/mx/managers/IFocusManagerGroup.as |   85 +
 .../src/main/flex/mx/managers/ISystemManager.as |   18 +
 .../MX/src/main/flex/mx/states/AddItems.as      |    2 +-
 .../main/flex/mx/styles/metadata/AlignStyles.as |   49 +
 .../MX/src/main/flex/mx/utils/LoaderUtil.as     |    5 +-
 17 files changed, 2681 insertions(+), 31 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/4f3802ef/frameworks/projects/MX/src/main/flex/mx/containers/utilityClasses/BoxLayout.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/containers/utilityClasses/BoxLayout.as b/frameworks/projects/MX/src/main/flex/mx/containers/utilityClasses/BoxLayout.as
index 60eefd6..691af3c 100644
--- a/frameworks/projects/MX/src/main/flex/mx/containers/utilityClasses/BoxLayout.as
+++ b/frameworks/projects/MX/src/main/flex/mx/containers/utilityClasses/BoxLayout.as
@@ -20,13 +20,16 @@
 package mx.containers.utilityClasses
 {
 
+COMPILE::LATER
+{
+	import mx.controls.scrollClasses.ScrollBar;
+	import mx.core.ScrollPolicy;
+}
 import mx.containers.BoxDirection;
-import mx.controls.scrollClasses.ScrollBar;
 import mx.core.Container;
 import mx.core.EdgeMetrics;
 import mx.core.IUIComponent;
 import mx.core.mx_internal;
-import mx.core.ScrollPolicy;
 
 use namespace mx_internal;
 

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/4f3802ef/frameworks/projects/MX/src/main/flex/mx/containers/utilityClasses/CanvasLayout.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/containers/utilityClasses/CanvasLayout.as b/frameworks/projects/MX/src/main/flex/mx/containers/utilityClasses/CanvasLayout.as
index 79831a5..6ef6dd2 100644
--- a/frameworks/projects/MX/src/main/flex/mx/containers/utilityClasses/CanvasLayout.as
+++ b/frameworks/projects/MX/src/main/flex/mx/containers/utilityClasses/CanvasLayout.as
@@ -22,7 +22,10 @@ package mx.containers.utilityClasses
 
 import flash.display.DisplayObject;
 import flash.geom.Rectangle;
+COMPILE::LATER
+{
 import mx.containers.Canvas;
+}
 import mx.containers.errors.ConstraintError;
 import mx.core.Container;
 import mx.core.EdgeMetrics;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/4f3802ef/frameworks/projects/MX/src/main/flex/mx/controls/Label.png
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/controls/Label.png b/frameworks/projects/MX/src/main/flex/mx/controls/Label.png
new file mode 100644
index 0000000..9269ae3
Binary files /dev/null and b/frameworks/projects/MX/src/main/flex/mx/controls/Label.png differ

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/4f3802ef/frameworks/projects/MX/src/main/flex/mx/core/Container.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/core/Container.as b/frameworks/projects/MX/src/main/flex/mx/core/Container.as
index 86dab78..1ca04ea 100644
--- a/frameworks/projects/MX/src/main/flex/mx/core/Container.as
+++ b/frameworks/projects/MX/src/main/flex/mx/core/Container.as
@@ -56,20 +56,24 @@ import mx.events.KeyboardEvent;
 
 import flex.system.DefinitionManager;
 import org.apache.flex.reflection.getDefinitionByName;
+import org.apache.flex.core.IVisualElement;
 
 import mx.binding.BindingManager;
+COMPILE::LATER
+{
 import mx.containers.utilityClasses.PostScaleAdapter;
 import mx.controls.HScrollBar;
 import mx.controls.VScrollBar;
-import mx.controls.listClasses.IListItemRenderer;
 import mx.controls.scrollClasses.ScrollBar;
+import mx.events.ScrollEvent;
+import mx.events.ScrollEventDetail;
+import mx.events.ScrollEventDirection;
+}
+import mx.controls.listClasses.IListItemRenderer;
 import mx.core.IUITextField;
 import mx.events.ChildExistenceChangedEvent;
 import mx.events.FlexEvent;
 import mx.events.IndexChangedEvent;
-import mx.events.ScrollEvent;
-import mx.events.ScrollEventDetail;
-import mx.events.ScrollEventDirection;
 import mx.geom.RoundedRectangle;
 import mx.managers.IFocusManager;
 import mx.managers.IFocusManagerContainer;
@@ -2994,9 +2998,9 @@ public class Container extends UIComponent
      *  @playerversion AIR 1.5
      *  @productversion Flex 4
      */ 
-    override public function getElementAt(index:int):IVisualElement
+    override public function getElementAt(index:int):org.apache.flex.core.IVisualElement
     {
-        return super.getElementAt(index) as IVisualElement;
+        return super.getElementAt(index) as org.apache.flex.core.IVisualElement;
     }
     
     /**
@@ -3007,7 +3011,7 @@ public class Container extends UIComponent
      *  @playerversion AIR 1.5
      *  @productversion Flex 4
      */
-    override public function getElementIndex(element:IVisualElement):int
+    override public function getElementIndex(element:org.apache.flex.core.IVisualElement):int
     {
         return super.getElementIndex(element);
     }
@@ -3020,12 +3024,12 @@ public class Container extends UIComponent
      *  @playerversion AIR 1.5
      *  @productversion Flex 4
      */ 
-    public function addElement(element:IVisualElement):IVisualElement
+    override public function addElement(element:org.apache.flex.core.IVisualElement):org.apache.flex.core.IVisualElement
     {
         if (! (element is DisplayObject) )
             throw ArgumentError(element + " is not supported in this Container");
         
-        return addChild(element as DisplayObject) as IVisualElement;
+        return addChild(element as DisplayObject) as org.apache.flex.core.IVisualElement;
     }
     
     /**
@@ -3036,12 +3040,12 @@ public class Container extends UIComponent
      *  @playerversion AIR 1.5
      *  @productversion Flex 4
      */
-    public function addElementAt(element:IVisualElement, index:int):IVisualElement
+    override public function addElementAt(element:org.apache.flex.core.IVisualElement, index:int):org.apache.flex.core.IVisualElement
     {
         if (! (element is DisplayObject) )
             throw ArgumentError(element + " is not supported in this Container");
         
-        return addChildAt(element as DisplayObject, index) as IVisualElement;
+        return addChildAt(element as DisplayObject, index) as org.apache.flex.core.IVisualElement;
     }
     
     /**
@@ -3052,12 +3056,12 @@ public class Container extends UIComponent
      *  @playerversion AIR 1.5
      *  @productversion Flex 4
      */
-    public function removeElement(element:IVisualElement):IVisualElement
+    override public function removeElement(element:org.apache.flex.core.IVisualElement):org.apache.flex.core.IVisualElement
     {
         if (! (element is DisplayObject) )
             throw ArgumentError(element + " is not found in this Container");
         
-        return removeChild(element as DisplayObject) as IVisualElement;
+        return removeChild(element as DisplayObject) as org.apache.flex.core.IVisualElement;
     }
     
     /**
@@ -3068,9 +3072,9 @@ public class Container extends UIComponent
      *  @playerversion AIR 1.5
      *  @productversion Flex 4
      */
-    public function removeElementAt(index:int):IVisualElement
+    public function removeElementAt(index:int):org.apache.flex.core.IVisualElement
     {
-        return removeChildAt(index) as IVisualElement;
+        return removeChildAt(index) as org.apache.flex.core.IVisualElement;
     }
     
     /**
@@ -3097,7 +3101,7 @@ public class Container extends UIComponent
      *  @playerversion AIR 1.5
      *  @productversion Flex 4
      */
-    public function setElementIndex(element:IVisualElement, index:int):void
+    public function setElementIndex(element:org.apache.flex.core.IVisualElement, index:int):void
     {
         if (! (element is DisplayObject) )
             throw ArgumentError(element + " is not found in this Container");
@@ -3113,7 +3117,7 @@ public class Container extends UIComponent
      *  @playerversion AIR 1.5
      *  @productversion Flex 4
      */
-    public function swapElements(element1:IVisualElement, element2:IVisualElement):void
+    public function swapElements(element1:org.apache.flex.core.IVisualElement, element2:org.apache.flex.core.IVisualElement):void
     {
         if (! (element1 is DisplayObject) )
             throw ArgumentError(element1 + " is not found in this Container");

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/4f3802ef/frameworks/projects/MX/src/main/flex/mx/core/ContainerRawChildrenList.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/core/ContainerRawChildrenList.as b/frameworks/projects/MX/src/main/flex/mx/core/ContainerRawChildrenList.as
index d668440..2639f74 100644
--- a/frameworks/projects/MX/src/main/flex/mx/core/ContainerRawChildrenList.as
+++ b/frameworks/projects/MX/src/main/flex/mx/core/ContainerRawChildrenList.as
@@ -210,6 +210,7 @@ public class ContainerRawChildrenList implements IChildList
     /**
      *  @private
      */
+	COMPILE::LATER
     public function getObjectsUnderPoint(point:Point):Array
     {
         return owner.rawChildren_getObjectsUnderPoint(point);

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/4f3802ef/frameworks/projects/MX/src/main/flex/mx/core/IToggleButton.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/core/IToggleButton.as b/frameworks/projects/MX/src/main/flex/mx/core/IToggleButton.as
new file mode 100644
index 0000000..9541aa1
--- /dev/null
+++ b/frameworks/projects/MX/src/main/flex/mx/core/IToggleButton.as
@@ -0,0 +1,39 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package mx.core
+{
+
+/**
+ *  The IToggleButton interface is a marker interface that indicates that a 
+ *  component acts as a toggleable button. It is used primarily as a filter
+ *  by the framework's default button logic. This interface is <strong>only</strong> used
+ *  by legacy MX components.
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+public interface IToggleButton
+{
+
+}
+
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/4f3802ef/frameworks/projects/MX/src/main/flex/mx/core/IVisualElementContainer.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/core/IVisualElementContainer.as b/frameworks/projects/MX/src/main/flex/mx/core/IVisualElementContainer.as
index ddfccf1..a185ef4 100644
--- a/frameworks/projects/MX/src/main/flex/mx/core/IVisualElementContainer.as
+++ b/frameworks/projects/MX/src/main/flex/mx/core/IVisualElementContainer.as
@@ -20,6 +20,7 @@
 package mx.core
 {
 
+import org.apache.flex.core.IVisualElement;
 
 /**
  *  The IVisualElementContainer interface defines the minimum properties and methods 
@@ -70,7 +71,7 @@ public interface IVisualElementContainer
      *  @playerversion AIR 1.5
      *  @productversion Flex 4
      */ 
-    function getElementAt(index:int):IVisualElement
+    function getElementAt(index:int):org.apache.flex.core.IVisualElement
     
     //----------------------------------
     //  Visual Element addition
@@ -101,7 +102,7 @@ public interface IVisualElementContainer
      *  @playerversion AIR 1.5
      *  @productversion Flex 4
      */   
-    function addElement(element:IVisualElement):IVisualElement;
+    function addElement(element:org.apache.flex.core.IVisualElement):org.apache.flex.core.IVisualElement;
     
     /**
      *  Adds a visual element to this container. 
@@ -133,7 +134,7 @@ public interface IVisualElementContainer
      *  @playerversion AIR 1.5
      *  @productversion Flex 4
      */
-    function addElementAt(element:IVisualElement, index:int):IVisualElement;
+    function addElementAt(element:org.apache.flex.core.IVisualElement, index:int):org.apache.flex.core.IVisualElement;
     
     //----------------------------------
     //  Visual Element removal
@@ -157,7 +158,7 @@ public interface IVisualElementContainer
      *  @playerversion AIR 1.5
      *  @productversion Flex 4
      */
-    function removeElement(element:IVisualElement):IVisualElement;
+    function removeElement(element:org.apache.flex.core.IVisualElement):org.apache.flex.core.IVisualElement;
     
     /**
      *  Removes a visual element from the specified index position 
@@ -176,7 +177,7 @@ public interface IVisualElementContainer
      *  @playerversion AIR 1.5
      *  @productversion Flex 4
      */
-    function removeElementAt(index:int):IVisualElement;
+    function removeElementAt(index:int):org.apache.flex.core.IVisualElement;
     
     /**
      *  Removes all visual elements from the container.
@@ -206,7 +207,7 @@ public interface IVisualElementContainer
      *  @playerversion AIR 1.5
      *  @productversion Flex 4
      */ 
-    function getElementIndex(element:IVisualElement):int;
+    function getElementIndex(element:org.apache.flex.core.IVisualElement):int;
     
     /**
      *  Changes the position of an existing visual element in the visual container.
@@ -236,7 +237,7 @@ public interface IVisualElementContainer
      *  @playerversion AIR 1.5
      *  @productversion Flex 4
      */
-    function setElementIndex(element:IVisualElement, index:int):void;
+    function setElementIndex(element:org.apache.flex.core.IVisualElement, index:int):void;
     
     //----------------------------------
     //  Visual Element swapping
@@ -255,7 +256,7 @@ public interface IVisualElementContainer
      *  @playerversion AIR 1.5
      *  @productversion Flex 4
      */
-    function swapElements(element1:IVisualElement, element2:IVisualElement):void;
+    function swapElements(element1:org.apache.flex.core.IVisualElement, element2:org.apache.flex.core.IVisualElement):void;
     
     /**
      *  Swaps the visual elements at the two specified index 

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/4f3802ef/frameworks/projects/MX/src/main/flex/mx/core/LayoutContainer.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/core/LayoutContainer.as b/frameworks/projects/MX/src/main/flex/mx/core/LayoutContainer.as
index 850899b..82466a2 100644
--- a/frameworks/projects/MX/src/main/flex/mx/core/LayoutContainer.as
+++ b/frameworks/projects/MX/src/main/flex/mx/core/LayoutContainer.as
@@ -31,7 +31,10 @@ import mx.containers.utilityClasses.Layout;
 import mx.effects.EffectManager;
 import mx.events.FlexEvent;
 import mx.managers.ISystemManager;
+COMPILE::LATER
+{
 import mx.managers.LayoutManager;
+}
 import mx.managers.SystemManager;
 import mx.styles.CSSStyleDeclaration;
 import mx.styles.IStyleClient;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/4f3802ef/frameworks/projects/MX/src/main/flex/mx/core/UIComponent.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/core/UIComponent.as b/frameworks/projects/MX/src/main/flex/mx/core/UIComponent.as
index 5bb3559..f455a5c 100644
--- a/frameworks/projects/MX/src/main/flex/mx/core/UIComponent.as
+++ b/frameworks/projects/MX/src/main/flex/mx/core/UIComponent.as
@@ -8674,7 +8674,7 @@ public class UIComponent extends Sprite
             
                 for (i = 0; i < thisContainerNumElements; i++)
                 {
-                    var elt:IVisualElement = thisContainer.getElementAt(i);
+                    var elt:IVisualElement = thisContainer.getElementAt(i) as IVisualElement;
                     // Can be null if IUITextField or IUIFTETextField.
                     if (elt && !(elt is IStyleClient))
                         elt.invalidateLayoutDirection();

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/4f3802ef/frameworks/projects/MX/src/main/flex/mx/effects/EffectManager.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/effects/EffectManager.as b/frameworks/projects/MX/src/main/flex/mx/effects/EffectManager.as
index 8add486..e322d82 100644
--- a/frameworks/projects/MX/src/main/flex/mx/effects/EffectManager.as
+++ b/frameworks/projects/MX/src/main/flex/mx/effects/EffectManager.as
@@ -56,7 +56,7 @@ import mx.events.ResizeEvent;
 import mx.resources.IResourceManager;
 import mx.resources.ResourceManager;
 import mx.core.IVisualElementContainer;
-import mx.core.IVisualElement;
+import org.apache.flex.core.IVisualElement;
 
 use namespace mx_internal;