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/08/02 19:03:08 UTC

[01/10] git commit: [flex-asjs] [refs/heads/refactor-sprite] - fix assumptions about parent property

Repository: flex-asjs
Updated Branches:
  refs/heads/refactor-sprite dfce43b44 -> 5e60e10c0


fix assumptions about parent property


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

Branch: refs/heads/refactor-sprite
Commit: 1b3d413f38c7309b0d7fafe797f2c5233f35ad4e
Parents: 90d18a9
Author: Alex Harui <ah...@apache.org>
Authored: Fri Jul 29 14:28:43 2016 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Tue Aug 2 10:20:29 2016 -0700

----------------------------------------------------------------------
 .../org/apache/flex/html/supportClasses/ContainerContentArea.as | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/1b3d413f/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/ContainerContentArea.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/ContainerContentArea.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/ContainerContentArea.as
index 00f5a83..481c8e9 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/ContainerContentArea.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/ContainerContentArea.as
@@ -21,6 +21,7 @@ package org.apache.flex.html.supportClasses
 	import org.apache.flex.core.IContentView;
 	import org.apache.flex.core.UIBase;
     import org.apache.flex.events.Event;
+	import org.apache.flex.events.IEventDispatcher;
 	
     /**
      *  The ContainerContentArea class implements the contentView for
@@ -50,8 +51,8 @@ package org.apache.flex.html.supportClasses
         
         private function forwardEventHandler(event:Event):void
         {
-            if (parent)
-                parent.dispatchEvent(event);
+            if (parent is IEventDispatcher)
+                (parent as IEventDispatcher).dispatchEvent(event);
         }
 		
 		/**


[10/10] git commit: [flex-asjs] [refs/heads/refactor-sprite] - get DataBindingExample to show up. Events don't work yet though

Posted by ah...@apache.org.
get DataBindingExample to show up.  Events don't work yet though


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

Branch: refs/heads/refactor-sprite
Commit: 5e60e10c09a665be12b21d1763b024fb4958d712
Parents: 25e9990
Author: Alex Harui <ah...@apache.org>
Authored: Tue Aug 2 12:02:52 2016 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Tue Aug 2 12:02:52 2016 -0700

----------------------------------------------------------------------
 .../flex/org/apache/flex/core/CSSTextField.as   |  2 +-
 .../flex/org/apache/flex/core/UIButtonBase.as   |  1 +
 .../apache/flex/core/UIHTMLElementWrapper.as    |  7 ++++--
 .../org/apache/flex/html/beads/CheckBoxView.as  | 23 +++++++++--------
 .../apache/flex/html/beads/DropDownListView.as  | 26 +++++++++-----------
 .../apache/flex/html/beads/RadioButtonView.as   | 25 ++++++++++---------
 6 files changed, 46 insertions(+), 38 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5e60e10c/frameworks/projects/Core/src/main/flex/org/apache/flex/core/CSSTextField.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/CSSTextField.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/CSSTextField.as
index 87dfafd..f50a2c6 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/CSSTextField.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/CSSTextField.as
@@ -147,7 +147,7 @@ package org.apache.flex.core
                 }
             }
 			defaultTextFormat = tf;
-			text = value;
+			super.text = value;
 		}
 
         private function updateStyles(event:Event):void

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5e60e10c/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIButtonBase.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIButtonBase.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIButtonBase.as
index c37ee77..bd38d7f 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIButtonBase.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIButtonBase.as
@@ -75,6 +75,7 @@ package org.apache.flex.core
 			// mouseChildren = true;
 			// mouseEnabled = true;
             MouseEventConverter.setupInstanceConverters(this);
+            createElement();
 		}
 
         protected function createElement():IFlexJSElement

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5e60e10c/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIHTMLElementWrapper.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIHTMLElementWrapper.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIHTMLElementWrapper.as
index 5f82f4a..22b90d1 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIHTMLElementWrapper.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIHTMLElementWrapper.as
@@ -101,7 +101,7 @@ COMPILE::SWF
         /**
          * allow access from overrides
          */
-        protected var _model:IBeadModel;
+        protected var _model:Object;
         
         /**
          * @flexjsignorecoercion Class 
@@ -125,7 +125,10 @@ COMPILE::SWF
         {
             if (_model != value)
             {
-                addBead(value as IBead);
+                if (value is IBead)
+                    addBead(value as IBead);
+                else
+                    _model = value;
                 dispatchEvent(new org.apache.flex.events.Event("modelChanged"));
             }
         }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5e60e10c/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/CheckBoxView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/CheckBoxView.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/CheckBoxView.as
index a04f2bf..6268e0d 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/CheckBoxView.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/CheckBoxView.as
@@ -27,6 +27,7 @@ package org.apache.flex.html.beads
     import org.apache.flex.core.BeadViewBase;
 	import org.apache.flex.core.CSSTextField;
 	import org.apache.flex.core.IBeadView;
+    import org.apache.flex.core.IChild;
 	import org.apache.flex.core.IStrand;
 	import org.apache.flex.core.IToggleButtonModel;
 	import org.apache.flex.events.Event;
@@ -123,10 +124,11 @@ package org.apache.flex.html.beads
 			hitArea.graphics.drawRect(0,0,upSprite.width, upSprite.height);
 			hitArea.graphics.endFill();
 			
-			SimpleButton(value).upState = upSprite;
-			SimpleButton(value).downState = downSprite;
-			SimpleButton(value).overState = overSprite;
-			SimpleButton(value).hitTestState = hitArea;
+            var button:SimpleButton = IChild(value).$displayObject as SimpleButton;
+			button.upState = upSprite;
+            button.downState = downSprite;
+            button.overState = overSprite;
+            button.hitTestState = hitArea;
 			
 			if (toggleButtonModel.text !== null)
 				text = toggleButtonModel.text;
@@ -224,15 +226,16 @@ package org.apache.flex.html.beads
 			
 			layoutControl();
 			
+            var button:SimpleButton = IChild(value).$displayObject as SimpleButton;
 			if( value ) {
-				SimpleButton(_strand).upState = upAndSelectedSprite;
-				SimpleButton(_strand).downState = downAndSelectedSprite;
-				SimpleButton(_strand).overState = overAndSelectedSprite;
+                button.upState = upAndSelectedSprite;
+                button.downState = downAndSelectedSprite;
+                button.overState = overAndSelectedSprite;
 				
 			} else {
-				SimpleButton(_strand).upState = upSprite;
-				SimpleButton(_strand).downState = downSprite;
-				SimpleButton(_strand).overState = overSprite;
+                button.upState = upSprite;
+                button.downState = downSprite;
+                button.overState = overSprite;
 			}
 		}
 		

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5e60e10c/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 198e787..22938b9 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
@@ -18,7 +18,6 @@
 ////////////////////////////////////////////////////////////////////////////////
 package org.apache.flex.html.beads
 {
-	import flash.display.DisplayObject;
 	import flash.display.DisplayObjectContainer;
 	import flash.display.Graphics;
 	import flash.display.Shape;
@@ -29,16 +28,16 @@ package org.apache.flex.html.beads
 	import org.apache.flex.core.BeadViewBase;
 	import org.apache.flex.core.CSSTextField;
 	import org.apache.flex.core.IBeadView;
-    import org.apache.flex.core.IChild;
+	import org.apache.flex.core.IChild;
 	import org.apache.flex.core.IPopUpHost;
 	import org.apache.flex.core.ISelectionModel;
 	import org.apache.flex.core.IStrand;
-    import org.apache.flex.core.IUIBase;
+	import org.apache.flex.core.IUIBase;
 	import org.apache.flex.core.ValuesManager;
 	import org.apache.flex.events.Event;
 	import org.apache.flex.events.IEventDispatcher;
-    import org.apache.flex.utils.SolidBorderUtil;
-    import org.apache.flex.utils.UIUtils;
+	import org.apache.flex.utils.SolidBorderUtil;
+	import org.apache.flex.utils.UIUtils;
     
     /**
      *  The DropDownListView class is the default view for
@@ -114,7 +113,7 @@ package org.apache.flex.html.beads
          */
 		override public function set strand(value:IStrand):void
 		{
-			super.strand = value;;
+			super.strand = value;
             selectionModel = value.getBeadByType(ISelectionModel) as ISelectionModel;
             selectionModel.addEventListener("selectedIndexChanged", selectionChangeHandler);
             selectionModel.addEventListener("dataProviderChanged", selectionChangeHandler);
@@ -122,10 +121,11 @@ package org.apache.flex.html.beads
 			shape.graphics.beginFill(0xCCCCCC);
 			shape.graphics.drawRect(0, 0, 10, 10);
 			shape.graphics.endFill();
-			SimpleButton(value).upState = upSprite;
-			SimpleButton(value).downState = downSprite;
-			SimpleButton(value).overState = overSprite;
-			SimpleButton(value).hitTestState = shape;
+            var button:SimpleButton = IChild(value).$displayObject as SimpleButton;
+			button.upState = upSprite;
+            button.downState = downSprite;
+            button.overState = overSprite;
+            button.hitTestState = shape;
 			if (selectionModel.selectedIndex !== -1)
 				text = selectionModel.selectedItem.toString();
             else
@@ -153,8 +153,8 @@ package org.apache.flex.html.beads
 		
         private function changeHandler(event:Event):void
         {
-            var ww:Number = DisplayObject(_strand).width;
-            var hh:Number = DisplayObject(_strand).height;
+            var ww:Number = IUIBase(_strand).width;
+            var hh:Number = IUIBase(_strand).height;
             
             upArrows.x = ww - upArrows.width - 6;            
             overArrows.x = ww - overArrows.width - 6;            
@@ -232,8 +232,6 @@ package org.apache.flex.html.beads
          */
 		public function set text(value:String):void
 		{
-            var ww:Number = DisplayObject(_strand).width;
-            var hh:Number = DisplayObject(_strand).height;
 			upTextField.text = value;
 			downTextField.text = value;
 			overTextField.text = value;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5e60e10c/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/RadioButtonView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/RadioButtonView.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/RadioButtonView.as
index 245c3d3..34fcaae 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/RadioButtonView.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/RadioButtonView.as
@@ -24,9 +24,10 @@ package org.apache.flex.html.beads
 	import flash.text.TextFieldAutoSize;
 	import flash.text.TextFieldType;
 	
-    import org.apache.flex.core.BeadViewBase;
+	import org.apache.flex.core.BeadViewBase;
 	import org.apache.flex.core.CSSTextField;
 	import org.apache.flex.core.IBeadView;
+    import org.apache.flex.core.IChild;
 	import org.apache.flex.core.IStrand;
 	import org.apache.flex.core.IValueToggleButtonModel;
 	import org.apache.flex.events.Event;
@@ -123,10 +124,11 @@ package org.apache.flex.html.beads
 			hitArea.graphics.drawRect(0,0,upSprite.width, upSprite.height);
 			hitArea.graphics.endFill();
 			
-			SimpleButton(value).upState = upSprite;
-			SimpleButton(value).downState = downSprite;
-			SimpleButton(value).overState = overSprite;
-			SimpleButton(value).hitTestState = hitArea;
+            var button:SimpleButton = IChild(value).$displayObject as SimpleButton;
+            button.upState = upSprite;
+            button.downState = downSprite;
+            button.overState = overSprite;
+            button.hitTestState = hitArea;
 			
 			if (toggleButtonModel.text !== null)
 				text = toggleButtonModel.text;
@@ -215,15 +217,16 @@ package org.apache.flex.html.beads
 		{
 			_selected = value;
 			
+            var button:SimpleButton = IChild(_strand).$displayObject as SimpleButton;
 			if( value ) {
-				SimpleButton(_strand).upState = upAndSelectedSprite;
-				SimpleButton(_strand).downState = downAndSelectedSprite;
-				SimpleButton(_strand).overState = overAndSelectedSprite;
+				button.upState = upAndSelectedSprite;
+                button.downState = downAndSelectedSprite;
+                button.overState = overAndSelectedSprite;
 				
 			} else {
-				SimpleButton(_strand).upState = upSprite;
-				SimpleButton(_strand).downState = downSprite;
-				SimpleButton(_strand).overState = overSprite;
+                button.upState = upSprite;
+                button.downState = downSprite;
+                button.overState = overSprite;
 			}
 			
 			layoutControl();


[04/10] git commit: [flex-asjs] [refs/heads/refactor-sprite] - changes required to get Application to use a factoryclass so it doesn't have to extend from Sprite

Posted by ah...@apache.org.
changes required to get Application to use a factoryclass so it doesn't have to extend from Sprite


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

Branch: refs/heads/refactor-sprite
Commit: 5184111d01d340abe189eeb721a244468df89660
Parents: dfce43b
Author: Alex Harui <ah...@apache.org>
Authored: Fri Jul 29 10:42:27 2016 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Tue Aug 2 10:20:29 2016 -0700

----------------------------------------------------------------------
 .../projects/Core/src/main/flex/CoreClasses.as  |   1 +
 .../flex/org/apache/flex/core/Application.as    | 258 +++++--------------
 .../org/apache/flex/core/ApplicationBase.as     |   3 +-
 .../org/apache/flex/core/ApplicationFactory.as  | 133 ++++++++++
 .../apache/flex/core/BrowserResizeListener.as   |  10 +-
 .../main/flex/org/apache/flex/core/CSSShape.as  |   6 +-
 .../flex/org/apache/flex/core/CSSTextField.as   |   6 +-
 .../org/apache/flex/core/HTMLElementWrapper.as  |   6 +-
 .../main/flex/org/apache/flex/core/IChild.as    |   2 +-
 .../org/apache/flex/core/ISWFApplication.as     |  48 ++++
 .../org/apache/flex/core/SimpleApplication.as   |  28 +-
 .../apache/flex/core/StyleableCSSTextField.as   |   4 +-
 .../main/flex/org/apache/flex/core/UIBase.as    |   6 +-
 .../flex/org/apache/flex/core/UIButtonBase.as   |   6 +-
 .../flex/utils/ViewSourceContextMenuOption.as   |   3 +-
 15 files changed, 283 insertions(+), 237 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5184111d/frameworks/projects/Core/src/main/flex/CoreClasses.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/CoreClasses.as b/frameworks/projects/Core/src/main/flex/CoreClasses.as
index cf97c27..6433f36 100644
--- a/frameworks/projects/Core/src/main/flex/CoreClasses.as
+++ b/frameworks/projects/Core/src/main/flex/CoreClasses.as
@@ -30,6 +30,7 @@ internal class CoreClasses
     import org.apache.flex.core.BrowserWindow; BrowserWindow;
 	COMPILE::SWF
 	{
+		import org.apache.flex.core.ApplicationFactory; ApplicationFactory;
 		import org.apache.flex.core.CSSShape; CSSShape;
 		import org.apache.flex.core.CSSSprite; CSSSprite;
 		import org.apache.flex.core.CSSTextField; CSSTextField;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5184111d/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 7d47e9c..43f8494 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
@@ -28,10 +28,7 @@ package org.apache.flex.core
     COMPILE::SWF {
         import flash.display.DisplayObject;
         import flash.display.Sprite;
-        import flash.display.StageAlign;
-        import flash.display.StageQuality;
-        import flash.display.StageScaleMode;
-        import flash.events.Event;
+		import flash.events.Event;
         import flash.system.ApplicationDomain;
         import flash.utils.getQualifiedClassName;
     }
@@ -89,6 +86,18 @@ package org.apache.flex.core
      *  @productversion FlexJS 0.0
      */
     [Event(name="applicationComplete", type="org.apache.flex.events.Event")]
+	
+	/**
+	 *  A SWF application must be bootstrapped by a Flash Sprite.
+	 *  The factory class is the default bootstrap.
+	 *  
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
+	 */
+	[Frame(factoryClass="org.apache.flex.core.ApplicationFactory")]
+
     /**
      *  The Application class is the main class and entry point for a FlexJS
      *  application.  This Application class is different than the
@@ -103,7 +112,7 @@ package org.apache.flex.core
      *  @playerversion AIR 2.6
      *  @productversion FlexJS 0.0
      */
-    public class Application extends ApplicationBase implements IStrand, IParent, IEventDispatcher, IUIBase
+    public class Application extends ApplicationBase implements IStrand, IParent, IEventDispatcher, ISWFApplication
     {
         /**
          *  Constructor.
@@ -116,28 +125,30 @@ package org.apache.flex.core
         public function Application()
         {
             super();
-
-            COMPILE::SWF {
-    			if (stage)
-    			{
-    				stage.align = StageAlign.TOP_LEFT;
-    				stage.scaleMode = StageScaleMode.NO_SCALE;
-                    // should be opt-in
-    				//stage.quality = StageQuality.HIGH_16X16_LINEAR;
-    			}
-
-                loaderInfo.addEventListener(flash.events.Event.INIT, initHandler);
-            }
         }
 
+		/**
+		 *  Application wraps the root object.
+		 *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion FlexJS 0.0
+		 */
+		COMPILE::SWF
+		public function setRoot(r:Sprite):void
+		{
+			$sprite = r;	
+			MouseEventConverter.setupAllConverters(r.stage);
+			initHandler();
+		}
+		
         COMPILE::SWF
-        private function initHandler(event:flash.events.Event):void
+        private function initHandler():void
         {
 			if (model is IBead) addBead(model as IBead);
 			if (controller is IBead) addBead(controller as IBead);
 
-            MouseEventConverter.setupAllConverters(stage);
-
             for each (var bead:IBead in beads)
                 addBead(bead);
 
@@ -168,11 +179,10 @@ package org.apache.flex.core
          *  @playerversion Flash 10.2
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.0
+		 *  @flexjsignorecoercion org.apache.flex.core.IBead
          */
-        COMPILE::SWF
         protected function initialize():void
         {
-
             MXMLDataInterpreter.generateMXMLInstances(this, null, MXMLDescriptor);
 
             dispatchEvent(new org.apache.flex.events.Event("initialize"));
@@ -181,28 +191,44 @@ package org.apache.flex.core
             {
                 initialView.applicationModel =  model;
         	    this.addElement(initialView);
+				
+				COMPILE::SWF
+				{	
                 // if someone has installed a resize listener, fake an event to run it now
-                if (stage.hasEventListener("resize"))
-                    stage.dispatchEvent(new flash.events.Event("resize"));
+                if ($sprite.stage.hasEventListener("resize"))
+					$sprite.stage.dispatchEvent(new flash.events.Event("resize"));
                 else if (initialView is ILayoutChild)
                 {
                     var ilc:ILayoutChild = initialView as ILayoutChild;
                     // otherwise, size once like this
                     if (!isNaN(ilc.percentWidth) && !isNaN(ilc.percentHeight))
-                        ilc.setWidthAndHeight(stage.stageWidth, stage.stageHeight, true);
+                        ilc.setWidthAndHeight($sprite.stage.stageWidth, $sprite.stage.stageHeight, true);
                     else if (!isNaN(ilc.percentWidth))
-                        ilc.setWidth(stage.stageWidth);
+                        ilc.setWidth($sprite.stage.stageWidth);
                     else if (!isNaN(ilc.percentHeight))
-                        ilc.setHeight(stage.stageHeight);
+                        ilc.setHeight($sprite.stage.stageHeight);
                 }
+				}
+				COMPILE::JS
+				{	
+				var baseView:UIBase = initialView as UIBase;
+				if (!isNaN(baseView.percentWidth) || !isNaN(baseView.percentHeight)) {
+					this.element.style.height = window.innerHeight.toString() + 'px';
+					this.element.style.width = window.innerWidth.toString() + 'px';
+					this.initialView.dispatchEvent('sizeChanged'); // kick off layout if % sizes
+				}
+				}
+				COMPILE::SWF
+				{
                 var bgColor:Object = ValuesManager.valuesImpl.getValue(this, "background-color");
                 if (bgColor != null)
                 {
                     var backgroundColor:uint = ValuesManager.valuesImpl.convertColor(bgColor);
-                    graphics.beginFill(backgroundColor);
-                    graphics.drawRect(0, 0, initialView.width, initialView.height);
-                    graphics.endFill();
+					$sprite.graphics.beginFill(backgroundColor);
+					$sprite.graphics.drawRect(0, 0, initialView.width, initialView.height);
+					$sprite.graphics.endFill();
                 }
+				}
                 dispatchEvent(new org.apache.flex.events.Event("viewChanged"));
             }
             dispatchEvent(new org.apache.flex.events.Event("applicationComplete"));
@@ -356,7 +382,7 @@ package org.apache.flex.core
          *  @productversion FlexJS 0.0
          */
         COMPILE::SWF
-        public function addBead(bead:IBead):void
+        override public function addBead(bead:IBead):void
         {
             if (!_beads)
                 _beads = new Vector.<IBead>;
@@ -424,7 +450,7 @@ package org.apache.flex.core
                 if(_elements == null)
                     _elements = [];
                 _elements[_elements.length] = c;
-                this.addChild(c.$sprite);
+				$sprite.addChild(c.$sprite);
                 c.parent = this;
                 if (c is IUIBase)
                 {
@@ -453,7 +479,7 @@ package org.apache.flex.core
                     _elements = [];
                 _elements.splice(index,0,c);
 
-                this.addChildAt(c.$sprite,index);
+				$sprite.addChildAt(c.$sprite,index);
                 c.parent = this;
 
                 if (c is IUIBase)
@@ -545,7 +571,7 @@ package org.apache.flex.core
                         _elements.splice(idx,1);
                     c.parent = null;
                 }
-                this.removeChild(c.$sprite as DisplayObject);
+				$sprite.removeChild(c.$sprite as DisplayObject);
             }
             COMPILE::JS
             {
@@ -627,167 +653,5 @@ package org.apache.flex.core
 			}
 		}
 		
-		/**
-		 * @flexjsignorecoercion org.apache.flex.core.IBead
-		 */
-		COMPILE::JS
-		protected function initialize():void
-		{
-			MXMLDataInterpreter.generateMXMLInstances(this, null, MXMLDescriptor);
-			
-			dispatchEvent('initialize');
-			
-			initialView.applicationModel = model;
-			addElement(initialView);
-			
-			if (initialView)
-			{
-				var baseView:UIBase = initialView as UIBase;
-				if (!isNaN(baseView.percentWidth) || !isNaN(baseView.percentHeight)) {
-					this.element.style.height = window.innerHeight.toString() + 'px';
-					this.element.style.width = window.innerWidth.toString() + 'px';
-					this.initialView.dispatchEvent('sizeChanged'); // kick off layout if % sizes
-				}
-				
-				dispatchEvent(new org.apache.flex.events.Event("viewChanged"));
-			}
-			dispatchEvent(new org.apache.flex.events.Event("applicationComplete"));
-		}
-		
-		COMPILE::SWF
-		public function get $displayObject():DisplayObject
-		{
-			return this;
-		}
-		
-		public function addedToParent():void
-		{
-			// Nothing to do now
-		}
-		COMPILE::SWF
-		public function get element():IFlexJSElement
-		{
-			// for now until this is refactored return null so it compiles
-			return null;
-		}
-		
-		COMPILE::SWF
-		private var _stageProxy:StageProxy;
-		
-		/**
-		 *  @copy org.apache.flex.core.IUIBase#topMostEventDispatcher
-		 * 
-		 *  @langversion 3.0
-		 *  @playerversion Flash 10.2
-		 *  @playerversion AIR 2.6
-		 *  @productversion FlexJS 0.0
-		 *  @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement
-		 *  @flexjsignorecoercion org.apache.flex.events.IEventDispatcher
-		 */
-		public function get topMostEventDispatcher():IEventDispatcher
-		{
-			COMPILE::SWF
-			{
-				if (!_stageProxy)
-				{
-					_stageProxy = new StageProxy(stage);
-					_stageProxy.addEventListener("removedFromStage", stageProxy_removedFromStageHandler);
-				}
-				
-				return _stageProxy;
-			}
-			COMPILE::JS
-			{
-				var e:WrappedHTMLElement = document.body as WrappedHTMLElement;
-				return e.flexjs_wrapper as IEventDispatcher;
-			}
-		}
-		COMPILE::SWF
-		private function stageProxy_removedFromStageHandler(event:flash.events.Event):void
-		{
-			_stageProxy = null;
-		}
-		COMPILE::JS
-		public function get alpha():Number
-		{
-			// TODO Auto Generated method stub
-			return 0;
-		}
-		COMPILE::JS
-		public function set alpha(value:Number):void
-		{
-			// TODO Auto Generated method stub
-			
-		}
-		COMPILE::JS
-		public function get height():Number
-		{
-			// TODO Auto Generated method stub
-			return 0;
-		}
-		COMPILE::JS
-		public function set height(value:Number):void
-		{
-			// TODO Auto Generated method stub
-			
-		}
-		COMPILE::JS
-		public function get visible():Boolean
-		{
-			// TODO Auto Generated method stub
-			return false;
-		}
-		COMPILE::JS
-		public function set visible(value:Boolean):void
-		{
-			// TODO Auto Generated method stub
-			
-		}
-		COMPILE::JS
-		public function get width():Number
-		{
-			// TODO Auto Generated method stub
-			return 0;
-		}
-		COMPILE::JS
-		public function set width(value:Number):void
-		{
-			// TODO Auto Generated method stub
-			
-		}
-		COMPILE::JS
-		public function get x():Number
-		{
-			// TODO Auto Generated method stub
-			return 0;
-		}
-		COMPILE::JS
-		public function set x(value:Number):void
-		{
-			// TODO Auto Generated method stub
-			
-		}
-		COMPILE::JS
-		public function get y():Number
-		{
-			// TODO Auto Generated method stub
-			return 0;
-		}
-		COMPILE::JS
-		public function set y(value:Number):void
-		{
-			// TODO Auto Generated method stub
-			
-		}
-
-        COMPILE::JS
-        public function get positioner():WrappedHTMLElement
-        {
-            // TODO Auto Generated method stub
-            return null
-        }
-
-		
-		
-	}
+    }
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5184111d/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ApplicationBase.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ApplicationBase.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ApplicationBase.as
index 60111ef..4040395 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ApplicationBase.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ApplicationBase.as
@@ -19,7 +19,6 @@
 package org.apache.flex.core
 {
     COMPILE::SWF {
-        import flash.display.Sprite;
         import flash.system.ApplicationDomain;
         import flash.utils.getQualifiedClassName;
     }
@@ -34,7 +33,7 @@ package org.apache.flex.core
      *  @productversion FlexJS 0.0
      */
     COMPILE::SWF
-	public class ApplicationBase extends Sprite implements IFlexInfo
+	public class ApplicationBase extends HTMLElementWrapper implements IFlexInfo
 	{
         /**
          *  Constructor.

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5184111d/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ApplicationFactory.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ApplicationFactory.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ApplicationFactory.as
new file mode 100644
index 0000000..e3698c1
--- /dev/null
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ApplicationFactory.as
@@ -0,0 +1,133 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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
+{
+    COMPILE::SWF {
+        import flash.display.MovieClip;
+		import flash.display.StageAlign;
+		import flash.display.StageQuality;
+		import flash.display.StageScaleMode;
+		import flash.events.Event;
+		import flash.utils.getDefinitionByName;
+    }
+        
+    /**
+     *  This is a platform-dependent base class
+     *  for Application
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10.2
+     *  @playerversion AIR 2.6
+     *  @productversion FlexJS 0.0
+     */
+    COMPILE::SWF
+	public class ApplicationFactory extends MovieClip
+	{
+        /**
+         *  Constructor.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.0
+         */
+		public function ApplicationFactory()
+		{
+			super();
+			
+			if (stage)
+			{
+				stage.align = StageAlign.TOP_LEFT;
+				stage.scaleMode = StageScaleMode.NO_SCALE;
+				// should be opt-in
+				//stage.quality = StageQuality.HIGH_16X16_LINEAR;
+			}
+			
+			loaderInfo.addEventListener(flash.events.Event.INIT, initHandler);
+		}
+
+		private function initHandler(event:flash.events.Event):void
+		{
+			nextFrame();
+			addEventListener(flash.events.Event.ENTER_FRAME, deferredFrameHandler);
+		}
+		
+		private function deferredFrameHandler(e:flash.events.Event):void
+		{
+			removeEventListener(flash.events.Event.ENTER_FRAME, deferredFrameHandler);
+			
+			var mainClassName:String = info()["mainClassName"];
+			
+			var app:ISWFApplication =  create() as ISWFApplication;
+			if (app)
+				app.setRoot(this);			
+		}
+		
+		/**
+		 *  @private
+		 */
+		public function info():Object
+		{
+			return {};
+		}
+		
+		/**
+		 *  A factory method that requests an instance of a
+		 *  definition known to the module.
+		 * 
+		 *  You can provide an optional set of parameters to let building
+		 *  factories change what they create based on the
+		 *  input. Passing null indicates that the default definition
+		 *  is created, if possible. 
+		 *
+		 *  This method is overridden in the autogenerated subclass.
+		 *
+		 *  @param params An optional list of arguments. You can pass
+		 *  any number of arguments, which are then stored in an Array
+		 *  called <code>parameters</code>. 
+		 *
+		 *  @return An instance of the module, or <code>null</code>.
+		 *  
+		 *  @langversion 3.0
+		 *  @playerversion Flash 9
+		 *  @playerversion AIR 1.1
+		 *  @productversion Flex 3
+		 */
+		public function create(... params):Object
+		{
+			var mainClassName:String = info()["mainClassName"];
+			
+			COMPILE::SWF
+			{
+				if (mainClassName == null)
+				{
+					var url:String = loaderInfo.loaderURL;
+					var dot:int = url.lastIndexOf(".");
+					var slash:int = url.lastIndexOf("/");
+					mainClassName = url.substring(slash + 1, dot);
+				}				
+			}
+			
+			var mainClass:Class = Class(getDefinitionByName(mainClassName));
+			
+			return mainClass ? new mainClass() : null;
+		}
+
+    }
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5184111d/frameworks/projects/Core/src/main/flex/org/apache/flex/core/BrowserResizeListener.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/BrowserResizeListener.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/BrowserResizeListener.as
index 8d946cd..8c3c456 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/BrowserResizeListener.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/BrowserResizeListener.as
@@ -83,7 +83,7 @@ COMPILE::SWF
             app = value as Application;
             COMPILE::SWF
             {
-                app.stage.addEventListener("resize", resizeHandler);
+                app.$sprite.stage.addEventListener("resize", resizeHandler);
                 if (ExternalInterface.available && (!isNaN(minWidth) || !isNaN(minHeight)))
                 {
                     // Get application name.  This assumes that the wrapper is using an
@@ -115,12 +115,12 @@ COMPILE::SWF
             {
                 var initialView:UIBase = app.initialView as UIBase;
                 if (!isNaN(initialView.percentWidth) && !isNaN(initialView.percentHeight))
-                    initialView.setWidthAndHeight(Math.max(minWidth, app.stage.stageWidth), 
-                        Math.max(minHeight, app.stage.stageHeight), true);
+                    initialView.setWidthAndHeight(Math.max(minWidth, app.$sprite.stage.stageWidth), 
+                        Math.max(minHeight, app.$sprite.stage.stageHeight), true);
                 else if (!isNaN(initialView.percentWidth))
-                    initialView.setWidth(Math.max(minWidth, app.stage.stageWidth));
+                    initialView.setWidth(Math.max(minWidth, app.$sprite.stage.stageWidth));
                 else if (!isNaN(initialView.percentHeight))
-                    initialView.setHeight(Math.max(minHeight, app.stage.stageHeight));
+                    initialView.setHeight(Math.max(minHeight, app.$sprite.stage.stageHeight));
             }
             COMPILE::JS
             {

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5184111d/frameworks/projects/Core/src/main/flex/org/apache/flex/core/CSSShape.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/CSSShape.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/CSSShape.as
index c96ba84..c024822 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/CSSShape.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/CSSShape.as
@@ -79,12 +79,12 @@ package org.apache.flex.core
             return _shape;
         }
 
-        private var _parent:IUIBase;
-        public function get parent():IUIBase
+        private var _parent:IParent;
+        public function get parent():IParent
         {
             return _parent;
         }
-        public function set parent(val:IUIBase):void
+        public function set parent(val:IParent):void
         {
             _parent = val;
         }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5184111d/frameworks/projects/Core/src/main/flex/org/apache/flex/core/CSSTextField.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/CSSTextField.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/CSSTextField.as
index 6636d50..effb787 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/CSSTextField.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/CSSTextField.as
@@ -84,12 +84,12 @@ package org.apache.flex.core
             return _textField;
         }
 
-        private var _parent:IUIBase;
-        public function get parent():IUIBase
+        private var _parent:IParent;
+        public function get parent():IParent
         {
             return _parent;
         }
-        public function set parent(val:IUIBase):void
+        public function set parent(val:IParent):void
         {
             _parent = val;
         }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5184111d/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 5a8dfd5..4879f42 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
@@ -79,12 +79,12 @@ package org.apache.flex.core
         {            
         }
 
-        private var _parent:IUIBase;
-        public function get parent():IUIBase
+        private var _parent:IParent;
+        public function get parent():IParent
         {
             return _parent;
         }
-        public function set parent(val:IUIBase):void
+        public function set parent(val:IParent):void
         {
             _parent = val;
         }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5184111d/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 9f67872..f1e893b 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
@@ -39,6 +39,6 @@ package org.apache.flex.core
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.0
          */
-        function get parent():IUIBase;
+        function get parent():IParent;
 	}
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5184111d/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ISWFApplication.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ISWFApplication.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ISWFApplication.as
new file mode 100644
index 0000000..272d6b6
--- /dev/null
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ISWFApplication.as
@@ -0,0 +1,48 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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
+{
+COMPILE::SWF
+{
+	import flash.display.Sprite;
+}
+
+    /**
+     *  Interface for bootstrapping SWF Applications.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10.2
+     *  @playerversion AIR 2.6
+     *  @productversion FlexJS 0.0
+     */
+	public interface ISWFApplication
+	{
+        /**
+         *  Pass in the root of the SWF.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.0
+         */
+		COMPILE::SWF
+		function setRoot(root:Sprite):void;
+        
+    }
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5184111d/frameworks/projects/Core/src/main/flex/org/apache/flex/core/SimpleApplication.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/SimpleApplication.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/SimpleApplication.as
index b824288..93af131 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/SimpleApplication.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/SimpleApplication.as
@@ -36,6 +36,17 @@ package org.apache.flex.core
     import org.apache.flex.events.utils.MouseEventConverter;
     import org.apache.flex.utils.MXMLDataInterpreter;
     
+	/**
+	 *  A SWF application must be bootstrapped by a Flash Sprite.
+	 *  The factory class is the default bootstrap.
+	 *  
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
+	 */
+	[Frame(factoryClass="org.apache.flex.core.ApplicationFactory")]
+	
     /**
      *  The SimpleApplication class can be used as the main class and entry point
      *  for low-level ActionScript-only FlexJS
@@ -61,23 +72,12 @@ package org.apache.flex.core
         public function SimpleApplication()
         {
             super();
-			COMPILE::SWF
-			{
-				if (stage)
-				{
-					stage.align = StageAlign.TOP_LEFT;
-					stage.scaleMode = StageScaleMode.NO_SCALE;
-					// should be opt-in
-					//stage.quality = StageQuality.HIGH_16X16_LINEAR;                
-				}
-				
-				loaderInfo.addEventListener(flash.events.Event.INIT, initHandler);
-			}
-        }
+		}
         
 		COMPILE::SWF
-        private function initHandler(event:flash.events.Event):void
+        public function setRoot(r:Sprite):void
         {
+			$sprite = r;
 			start();
         }
         

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5184111d/frameworks/projects/Core/src/main/flex/org/apache/flex/core/StyleableCSSTextField.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/StyleableCSSTextField.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/StyleableCSSTextField.as
index 874e3a7..0d6841b 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/StyleableCSSTextField.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/StyleableCSSTextField.as
@@ -66,10 +66,10 @@ package org.apache.flex.core
          */
         public var CSSParent:Object;
         
-        override public function get parent():IUIBase
+        override public function get parent():IParent
         {
             if (CSSParent)
-                return CSSParent as IUIBase;
+                return CSSParent as IParent;
             
             return super.parent;
         }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5184111d/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 7a583a1..5e65dfc 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
@@ -1466,13 +1466,13 @@ package org.apache.flex.core
         /**
          * @param value The event containing new style properties.
          * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement
-         * @flexjsignorecoercion org.apache.flex.core.IUIBase
+         * @flexjsignorecoercion org.apache.flex.core.IParent
          */
         COMPILE::JS
-        public function get parent():IUIBase
+        public function get parent():IParent
         {
             var p:WrappedHTMLElement = this.positioner.parentNode as WrappedHTMLElement;
-            var wrapper:IUIBase = p ? p.flexjs_wrapper as IUIBase : null;
+            var wrapper:IParent = p ? p.flexjs_wrapper as IParent : null;
             return wrapper;
         }
 

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5184111d/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIButtonBase.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIButtonBase.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIButtonBase.as
index d2af3ef..081a8be 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIButtonBase.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIButtonBase.as
@@ -105,12 +105,12 @@ package org.apache.flex.core
             return _button;
         }
 
-        private var _parent:IUIBase;
-        public function get parent():IUIBase
+        private var _parent:IParent;
+        public function get parent():IParent
         {
             return _parent;
         }
-        public function set parent(val:IUIBase):void
+        public function set parent(val:IParent):void
         {
             _parent = val;
         }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5184111d/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/ViewSourceContextMenuOption.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/ViewSourceContextMenuOption.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/ViewSourceContextMenuOption.as
index 8b41a7f..4e5cfed 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/ViewSourceContextMenuOption.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/ViewSourceContextMenuOption.as
@@ -29,6 +29,7 @@ COMPILE::SWF
     import flash.ui.ContextMenuItem;
 }
 
+import org.apache.flex.core.HTMLElementWrapper;
 import org.apache.flex.core.IBead;
 import org.apache.flex.core.IStrand;
 
@@ -73,7 +74,7 @@ public class ViewSourceContextMenuOption implements IBead
 		
         COMPILE::SWF
         {
-    		var menuHost:InteractiveObject = InteractiveObject(value);
+    		var menuHost:InteractiveObject = InteractiveObject(HTMLElementWrapper(value).$sprite);
     		var cm:ContextMenu = ContextMenu(menuHost.contextMenu);
     		if (!cm)
     		{


[05/10] git commit: [flex-asjs] [refs/heads/refactor-sprite] - refactor again so UIHTMLElementWrapper is the base for all exposed components, but CSSShape and friend are simple subclasses of Flash display objects and are directly added to the display lis

Posted by ah...@apache.org.
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/HorizontalLayout.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/HorizontalLayout.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/HorizontalLayout.as
index 225e0ac..fd0f118 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/HorizontalLayout.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/HorizontalLayout.as
@@ -73,13 +73,15 @@ package org.apache.flex.html.beads.layouts
          *  @playerversion Flash 10.2
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.0
+         *  @flexjsignorecoercion HTMLElement
+         *  @flexjsignorecoercion org.apache.flex.core.IUIBase
          */
 		public function set strand(value:IStrand):void
 		{
 			host = value as ILayoutChild;
             COMPILE::JS
             {
-                (value as IUIBase).element.style.display = 'block';
+                ((value as IUIBase).element as HTMLElement).style.display = 'block';
             }
 		}
 	

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/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..f7ebf01 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
@@ -18,6 +18,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 package org.apache.flex.html.supportClasses
 {	
+    import org.apache.flex.core.IChild;
     import org.apache.flex.core.IContentView;
     import org.apache.flex.core.IItemRenderer;
     import org.apache.flex.core.IItemRendererParent;
@@ -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:IChild, 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:IChild, dispatchEvent:Boolean = true):void
 		{	
 			super.removeElement(c, dispatchEvent);
 			

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/ScrollingViewport.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/ScrollingViewport.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/ScrollingViewport.as
index c3b7b09..74dd040 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/ScrollingViewport.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/ScrollingViewport.as
@@ -137,11 +137,14 @@ package org.apache.flex.html.supportClasses
             }
         }
 
+        /**
+         * @flexjsignorecoercion HTMLElement 
+         */
         COMPILE::JS
         override public function set strand(value:IStrand):void
         {
             super.strand = value;
-            contentView.element.style.overflow = 'auto';
+            (contentView.element as HTMLElement).style.overflow = 'auto';
         }
 
         private var viewportWidth:Number;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/StringItemRenderer.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/StringItemRenderer.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/StringItemRenderer.as
index 98c0af7..2ff3cbf 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/StringItemRenderer.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/StringItemRenderer.as
@@ -77,7 +77,7 @@ package org.apache.flex.html.supportClasses
 		{
 			super.addedToParent();
 			
-			$sprite.addChild(textField.$textField);
+			$sprite.addChild(textField);
 
 			adjustSize();
 		}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/TextFieldItemRenderer.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/TextFieldItemRenderer.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/TextFieldItemRenderer.as
index fa7d668..05f93cb 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/TextFieldItemRenderer.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/TextFieldItemRenderer.as
@@ -44,7 +44,7 @@ package org.apache.flex.html.supportClasses
 	 *  @playerversion AIR 2.6
 	 *  @productversion FlexJS 0.0
 	 */
-	public class TextFieldItemRenderer extends CSSTextField implements ITextItemRenderer, IStrand, IUIBase, IFlexJSElement
+	public class TextFieldItemRenderer extends CSSTextField implements ITextItemRenderer, IStrand, IUIBase
 	{
 		/**
 		 *  constructor.
@@ -548,5 +548,10 @@ package org.apache.flex.html.supportClasses
             return IUIBase(parent).topMostEventDispatcher;
         }
 
+        public function get $displayObject():DisplayObject
+        {
+            return this;
+        }
+        
     }
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/HTML/src/main/resources/basic-as-manifest.xml
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/resources/basic-as-manifest.xml b/frameworks/projects/HTML/src/main/resources/basic-as-manifest.xml
index 26b7d42..f5e8475 100644
--- a/frameworks/projects/HTML/src/main/resources/basic-as-manifest.xml
+++ b/frameworks/projects/HTML/src/main/resources/basic-as-manifest.xml
@@ -24,7 +24,7 @@
     <!-- component id="ListViewNoSelectionState" class="org.apache.flex.html.beads.ListViewNoSelectionState"/ -->
     <!--<component id="MultilineTextFieldView" class="org.apache.flex.html.beads.MultilineTextFieldView"/>-->
     
-     <component id="TextFieldItemRenderer" class="org.apache.flex.html.supportClasses.TextFieldItemRenderer"/>
+    <!--<component id="TextFieldItemRenderer" class="org.apache.flex.html.supportClasses.TextFieldItemRenderer"/>-->
     <component id="HScrollBar" class="org.apache.flex.html.supportClasses.HScrollBar"/>
     <component id="VScrollBar" class="org.apache.flex.html.supportClasses.VScrollBar"/>
     <!--

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/IViewManagerView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/IViewManagerView.as b/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/IViewManagerView.as
index 6aaa9d3..02a7113 100644
--- a/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/IViewManagerView.as
+++ b/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/IViewManagerView.as
@@ -18,6 +18,8 @@
 ////////////////////////////////////////////////////////////////////////////////
 package org.apache.flex.mobile
 {
+    import org.apache.flex.core.IChild;
+    
 	/**
 	 * The IViewManagerView 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 IViewManagerView
+	public interface IViewManagerView extends IChild
 	{
 		/**
 		 * The parent view manager.

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/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 67c9fd0..0c54891 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
@@ -18,6 +18,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 package org.apache.flex.mobile
 {
+    import org.apache.flex.core.IChild;
 	import org.apache.flex.core.IChrome;
 	import org.apache.flex.core.UIBase;
 	import org.apache.flex.events.Event;
@@ -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:IChild, 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:IChild, 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:IChild, 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):IChild
 		{
 			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:IChild):int
 		{
 			return _contentArea.getElementIndex(c);
 		}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/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 ffa26c5..225b7d4 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
@@ -18,10 +18,11 @@
 ////////////////////////////////////////////////////////////////////////////////
 package org.apache.flex.mobile
 {	
+	import org.apache.flex.core.IChild;
 	import org.apache.flex.events.Event;
 	import org.apache.flex.html.Container;
-	import org.apache.flex.mobile.IViewManagerView;
 	import org.apache.flex.mobile.IViewManager;
+	import org.apache.flex.mobile.IViewManagerView;
 	import org.apache.flex.mobile.chrome.NavigationBar;
 	import org.apache.flex.mobile.chrome.ToolBar;
 	import org.apache.flex.mobile.models.ViewManagerModel;
@@ -148,7 +149,7 @@ package org.apache.flex.mobile
 		public function pop():void
 		{
 			if (ViewManagerModel(model).views.length > 1) {
-				var lastView:Object = ViewManagerModel(model).popView();
+				var lastView:IChild = ViewManagerModel(model).popView() as IChild;
 				removeElement(_topView);
 				addElement(lastView);
 				_topView = lastView as IViewManagerView;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/models/ViewManagerModel.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/models/ViewManagerModel.as b/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/models/ViewManagerModel.as
index 20a55ff..cc20bb6 100644
--- a/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/models/ViewManagerModel.as
+++ b/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/models/ViewManagerModel.as
@@ -19,6 +19,7 @@
 package org.apache.flex.mobile.models
 {
 	import org.apache.flex.core.IBeadModel;
+    import org.apache.flex.core.IChild;
 	import org.apache.flex.core.IStrand;
 	import org.apache.flex.core.UIBase;
 	import org.apache.flex.events.Event;
@@ -98,7 +99,7 @@ package org.apache.flex.mobile.models
 		 *  @playerversion AIR 2.6
 		 *  @productversion FlexJS 0.0
 		 */
-		public function pushView(value:Object):void
+		public function pushView(value:IChild):void
 		{
 			_views.push(value);
 			_selectedIndex = _views.length - 1;
@@ -114,7 +115,7 @@ package org.apache.flex.mobile.models
 		 *  @playerversion AIR 2.6
 		 *  @productversion FlexJS 0.0
 		 */
-		public function popView():Object
+		public function popView():IChild
 		{
 			if (_views.length > 1) {
 				var discard:Object = _views.pop();


[06/10] git commit: [flex-asjs] [refs/heads/refactor-sprite] - refactor again so UIHTMLElementWrapper is the base for all exposed components, but CSSShape and friend are simple subclasses of Flash display objects and are directly added to the display lis

Posted by ah...@apache.org.
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIButtonBase.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIButtonBase.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIButtonBase.as
index 081a8be..c37ee77 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIButtonBase.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIButtonBase.as
@@ -28,9 +28,9 @@ package org.apache.flex.core
 	import org.apache.flex.core.IUIBase;
 	import org.apache.flex.core.ValuesManager;
 	import org.apache.flex.events.Event;
-    import org.apache.flex.events.utils.MouseEventConverter;
 	import org.apache.flex.events.EventDispatcher;
-    import org.apache.flex.events.IEventDispatcher;
+	import org.apache.flex.events.IEventDispatcher;
+	import org.apache.flex.events.utils.MouseEventConverter;
 	
     //--------------------------------------
     //  Events
@@ -49,8 +49,9 @@ package org.apache.flex.core
 	[Event(name="click", type="org.apache.flex.events.MouseEvent")]
 
     /**
-     *  The UIButtonBase class is the base class for most Buttons in a FlexJS
-     *  application.  In Flash, these buttons extend SimpleButton and therefore
+     *  The UIHTMLElementWrapper class is the base class for most Buttons
+     *  and other UI objects in a FlexJS application that do not have children.  
+     *  In Flash, these buttons extend SimpleButton and therefore
      *  do not support all of the Sprite APIs.
      *  
      *  @langversion 3.0
@@ -59,7 +60,7 @@ package org.apache.flex.core
      *  @productversion FlexJS 0.0
      */
 	COMPILE::SWF
-	public class UIButtonBase extends EventDispatcher implements IStrandWithModel, IEventDispatcher, IUIBase, IStyleableObject, ILayoutChild
+	public class UIButtonBase extends UIHTMLElementWrapper implements IStrandWithModel, IEventDispatcher, IUIBase, IStyleableObject, ILayoutChild
 	{
         /**
          *  Constructor.
@@ -69,69 +70,32 @@ package org.apache.flex.core
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.0
          */
-		public function UIButtonBase(upState:DisplayObject=null, overState:DisplayObject=null, downState:DisplayObject=null, hitTestState:DisplayObject=null)
+		public function UIButtonBase()
 		{
-            _button = new WrappedSimpleButton(upState, overState, downState, hitTestState);
-            _button.flexjs_wrapper = this;
-
-
 			// mouseChildren = true;
 			// mouseEnabled = true;
             MouseEventConverter.setupInstanceConverters(this);
 		}
 
-        private var _button:WrappedSimpleButton;
-
-        public function get $button():SimpleButton
+        protected function createElement():IFlexJSElement
         {
-            return _button;
-        }
-
-        public function get $displayObject():DisplayObject
-        {
-            return _button;
+            element = _button = new WrappedSimpleButton();
+            _button.flexjs_wrapper = this;
+            return element;
         }
+        private var _button:WrappedSimpleButton;
 
-        /**
-         *  @copy org.apache.flex.core.HTMLElementWrapper#element
-         *  
-         *  @langversion 3.0
-         *  @playerversion Flash 10.2
-         *  @playerversion AIR 2.6
-         *  @productversion FlexJS 0.0
-         */
-        public function get element():IFlexJSElement
+        public function get $button():SimpleButton
         {
             return _button;
         }
 
-        private var _parent:IParent;
-        public function get parent():IParent
-        {
-            return _parent;
-        }
-        public function set parent(val:IParent):void
-        {
-            _parent = val;
-        }
-
-        public function get alpha():Number
-        {
-            return _button.alpha;
-        }
-
-        public function set alpha(value:Number):void
-        {
-            _button.alpha = value;
-        }
-
-
         private var _x:Number;
         
 		/**
 		 *  @private
 		 */
-		public function set x(value:Number):void
+		override public function set x(value:Number):void
 		{
 			if (_button.x != value) {
 				_button.x = _x = value;
@@ -142,17 +106,13 @@ package org.apache.flex.core
 				dispatchEvent(new Event("xChanged"));
 			}
 		}
-        public function get x():Number
-        {
-            return _x;
-        }
 		
         private var _y:Number;
-
+        
         /**
 		 *  @private
 		 */
-		public function set y(value:Number):void
+		override public function set y(value:Number):void
 		{
 			if (_button.y != value) {
 				_button.y = _y = value;
@@ -164,11 +124,6 @@ package org.apache.flex.core
 			}
 		}
 
-        public function get y():Number
-        {
-            return _y;
-        }
-		
 		/**
 		 *  Retrieve the low-level bounding box y.
 		 *  
@@ -346,7 +301,7 @@ package org.apache.flex.core
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.0
          */
-		public function get width():Number
+		override public function get width():Number
 		{
 			if (isNaN(explicitWidth))
 			{
@@ -361,7 +316,7 @@ package org.apache.flex.core
         /**
          *  @private
          */
-		public function set width(value:Number):void
+		override public function set width(value:Number):void
 		{
 			if (explicitWidth != value)
 			{
@@ -397,7 +352,7 @@ package org.apache.flex.core
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.0
          */
-		public function get height():Number
+		override public function get height():Number
 		{
 			if (isNaN(explicitHeight))
 			{
@@ -412,7 +367,7 @@ package org.apache.flex.core
         /**
          *  @private
          */
-		public function set height(value:Number):void
+		override public function set height(value:Number):void
 		{
 			if (explicitHeight != value)
 			{
@@ -541,14 +496,14 @@ package org.apache.flex.core
 		 * @private
 		 */
         [Bindable("visibleChanged")]
-		public function set visible(value:Boolean):void
+		override public function set visible(value:Boolean):void
 		{
 			_button.visible = value;
 			dispatchEvent(new Event(value?"show":"hide"));
 			dispatchEvent(new Event("visibleChanged"));
 		}
 
-        public function get visible():Boolean
+        override public function get visible():Boolean
         {
             return _button.visible;
         }
@@ -566,38 +521,6 @@ package org.apache.flex.core
             return (isNaN(_explicitHeight) && isNaN(_percentHeight));
         }
         
-        private var _model:IBeadModel;
-
-        /**
-         *  @copy org.apache.flex.core.UIBase#model
-         *  
-         *  @langversion 3.0
-         *  @playerversion Flash 10.2
-         *  @playerversion AIR 2.6
-         *  @productversion FlexJS 0.0
-         */
-        public function get model():Object
-        {
-            if (_model == null)
-            {
-                // addbead will set _model
-                addBead(new (ValuesManager.valuesImpl.getValue(this, "iBeadModel")) as IBead);
-            }
-            return _model;
-        }
-
-        /**
-         *  @private
-         */
-        public function set model(value:Object):void
-        {
-            if (_model != value)
-            {
-                addBead(value as IBead);
-                dispatchEvent(new Event("modelChanged"));
-            }
-        }
-		
         private var _view:IBeadView;
         
         /**
@@ -772,60 +695,15 @@ package org.apache.flex.core
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.0
          */
-		public function addBead(bead:IBead):void
+		override public function addBead(bead:IBead):void
 		{
-			if (!strand)
-				strand = new Vector.<IBead>;
-			strand.push(bead);
-			if (bead is IBeadModel)
-				_model = bead as IBeadModel;
-            else if (bead is IBeadView)
+            super.addBead(bead);
+            if (bead is IBeadView)
                 _view = bead as IBeadView;
 			bead.strand = this;
 		}
 		
         /**
-         *  @copy org.apache.flex.core.UIBase#getBeadByType()
-         *  
-         *  @langversion 3.0
-         *  @playerversion Flash 10.2
-         *  @playerversion AIR 2.6
-         *  @productversion FlexJS 0.0
-         */
-		public function getBeadByType(classOrInterface:Class):IBead
-		{
-			for each (var bead:IBead in strand)
-			{
-				if (bead is classOrInterface)
-					return bead;
-			}
-			return null;
-		}
-		
-        /**
-         *  @copy org.apache.flex.core.UIBase#removeBead()
-         *  
-         *  @langversion 3.0
-         *  @playerversion Flash 10.2
-         *  @playerversion AIR 2.6
-         *  @productversion FlexJS 0.0
-         */
-		public function removeBead(value:IBead):IBead	
-		{
-			var n:int = strand.length;
-			for (var i:int = 0; i < n; i++)
-			{
-				var bead:IBead = strand[i];
-				if (bead == value)
-				{
-					strand.splice(i, 1);
-					return bead;
-				}
-			}
-			return null;
-		}
-		
-        /**
          *  @copy org.apache.flex.core.UIBase#addToParent()
          *  
          *  @langversion 3.0

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIHTMLElementWrapper.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIHTMLElementWrapper.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIHTMLElementWrapper.as
new file mode 100644
index 0000000..5f82f4a
--- /dev/null
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIHTMLElementWrapper.as
@@ -0,0 +1,257 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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
+{
+COMPILE::SWF
+{
+	import flash.display.DisplayObject;
+    import flash.display.DisplayObjectContainer;
+	import flash.display.SimpleButton;
+}
+
+	import org.apache.flex.core.IBead;
+	import org.apache.flex.core.IBeadModel;
+	import org.apache.flex.core.IMeasurementBead;
+	import org.apache.flex.core.IStrand;
+	import org.apache.flex.core.IUIBase;
+	import org.apache.flex.core.ValuesManager;
+	import org.apache.flex.events.Event;
+    import org.apache.flex.events.utils.MouseEventConverter;
+	import org.apache.flex.events.EventDispatcher;
+    import org.apache.flex.events.IEventDispatcher;
+	
+    //--------------------------------------
+    //  Events
+    //--------------------------------------
+    
+    /**
+     *  Set a different class for click events so that
+     *  there aren't dependencies on the flash classes
+     *  on the JS side.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10.2
+     *  @playerversion AIR 2.6
+     *  @productversion FlexJS 0.0
+     */
+	[Event(name="click", type="org.apache.flex.events.MouseEvent")]
+
+    /**
+     *  The UIHTMLElementWrapper class is the base class for most Buttons
+     *  and other UI objects in a FlexJS application that do not have children.  
+     *  In Flash, these buttons extend SimpleButton and therefore
+     *  do not support all of the Sprite APIs.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10.2
+     *  @playerversion AIR 2.6
+     *  @productversion FlexJS 0.0
+     */
+	public class UIHTMLElementWrapper extends HTMLElementWrapper implements IStrandWithModel, IEventDispatcher
+	{
+        /**
+         *  Constructor.
+         *  
+         *  @langversion 3.
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.0
+         */
+		public function UIHTMLElementWrapper()
+		{
+        }
+
+        COMPILE::JS
+        private var _positioner:WrappedHTMLElement;
+        
+        /**
+         * The HTMLElement used to position the component.
+         */
+        COMPILE::JS
+        public function get positioner():WrappedHTMLElement
+        {
+            return _positioner;
+        }
+        
+        /**
+         * @private
+         */
+        COMPILE::JS
+        public function set positioner(value:WrappedHTMLElement):void
+        {
+            _positioner = value;
+        }
+        
+        /**
+         * allow access from overrides
+         */
+        protected var _model:IBeadModel;
+        
+        /**
+         * @flexjsignorecoercion Class 
+         * @flexjsignorecoercion org.apache.flex.core.IBeadModel 
+         */
+        public function get model():Object
+        {
+            if (_model == null) 
+            {
+                // addbead will set _model
+                var m:Class = org.apache.flex.core.ValuesManager.valuesImpl.
+                    getValue(this, 'iBeadModel') as Class;
+                var b:IBeadModel = new m() as IBeadModel;
+                addBead(b);
+            }
+            return _model;
+        }
+        
+        [Bindable("modelChanged")]
+        public function set model(value:Object):void
+        {
+            if (_model != value)
+            {
+                addBead(value as IBead);
+                dispatchEvent(new org.apache.flex.events.Event("modelChanged"));
+            }
+        }
+        
+        /**
+         * @param bead The new bead.
+         */
+        override public function addBead(bead:IBead):void
+        {
+            if (!_beads)
+            {
+                _beads = new Vector.<IBead>();
+            }
+            
+            _beads.push(bead);
+            
+            if (bead is IBeadModel)
+            {
+                _model = bead as IBeadModel;
+            }
+            
+            bead.strand = this;
+        }
+        
+        COMPILE::SWF
+        public function get $displayObjectContainer():DisplayObjectContainer
+        {
+            return _element as DisplayObjectContainer;
+        }
+        
+        COMPILE::SWF
+        public function get $displayObject():DisplayObject
+        {
+            return _element as DisplayObject;
+        }
+                
+        COMPILE::SWF
+        public function get width():Number
+        {
+            return $displayObject.width;
+        }
+        
+        COMPILE::SWF
+        public function set width(value:Number):void
+        {
+            $displayObject.width = value;
+        }
+        
+        COMPILE::SWF
+        public function get height():Number
+        {
+            return $displayObject.height;
+        }
+        
+        COMPILE::SWF
+        public function set height(value:Number):void
+        {
+            $displayObject.height = value;
+        }
+        
+        COMPILE::SWF
+        public function get x():Number
+        {
+            return $displayObject.x;
+        }
+        
+        COMPILE::SWF
+        public function set x(value:Number):void
+        {
+            $displayObject.x = value;
+        }
+        
+        COMPILE::SWF
+        public function get y():Number
+        {
+            return $displayObject.y;
+        }
+        
+        COMPILE::SWF
+        public function set y(value:Number):void
+        {
+            $displayObject.y = value;
+        }        
+        
+        COMPILE::SWF
+        public function get visible():Boolean
+        {
+            return $displayObject.visible;
+        }
+        
+        COMPILE::SWF
+        public function set visible(value:Boolean):void
+        {
+            $displayObject.visible = value;
+        }        
+        
+        COMPILE::SWF
+        public function get alpha():Number
+        {
+            return $displayObject.alpha;
+        }
+        
+        COMPILE::SWF
+        public function set alpha(value:Number):void
+        {
+            $displayObject.alpha = value;
+        }        
+        
+        /**
+         * @param value The event containing new style properties.
+         * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement
+         * @flexjsignorecoercion org.apache.flex.core.IParent
+         */
+        public function get parent():IParent
+        {
+            COMPILE::JS
+            {
+            var p:WrappedHTMLElement = this.positioner.parentNode as WrappedHTMLElement;
+            }
+            COMPILE::SWF
+            {
+                var p:IFlexJSElement = this.$displayObject.parent as IFlexJSElement;
+            }
+            var wrapper:IParent = p ? p.flexjs_wrapper as IParent : null;
+            return wrapper;
+        }
+        
+	}
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedHTMLElement.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedHTMLElement.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedHTMLElement.as
index b5ff7ba..e906cdd 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedHTMLElement.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedHTMLElement.as
@@ -19,7 +19,7 @@
 package org.apache.flex.core
 {
 	COMPILE::JS
-	public class WrappedHTMLElement extends HTMLElement
+	public class WrappedHTMLElement extends HTMLElement implements IFlexJSElement
 	{
 
 		//--------------------------------------

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedMovieClip.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedMovieClip.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedMovieClip.as
new file mode 100644
index 0000000..195e8d9
--- /dev/null
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedMovieClip.as
@@ -0,0 +1,52 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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
+{
+	COMPILE::SWF
+	{
+	    import flash.display.MovieClip;
+	}
+
+	COMPILE::SWF
+	public class WrappedMovieClip extends MovieClip implements IFlexJSElement
+	{
+        private var _flexjs_wrapper:HTMLElementWrapper;
+        
+        //--------------------------------------
+        //   Property
+        //--------------------------------------
+        
+        /**
+         *  A pointer back to the instance that wrapped this element.
+         * 
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.0
+         */
+        public function get flexjs_wrapper():HTMLElementWrapper
+        {
+            return _flexjs_wrapper;
+        }
+        public function set flexjs_wrapper(value:HTMLElementWrapper):void
+        {
+            _flexjs_wrapper = value;
+        }
+	}
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedShape.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedShape.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedShape.as
index 80e3378..eb90a21 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedShape.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedShape.as
@@ -26,11 +26,12 @@ package org.apache.flex.core
 	COMPILE::SWF
 	public class WrappedShape extends Shape implements IFlexJSElement
 	{
-
-		//--------------------------------------
-		//   Property
-		//--------------------------------------
-
+        private var _flexjs_wrapper:HTMLElementWrapper;
+        
+        //--------------------------------------
+        //   Property
+        //--------------------------------------
+        
         /**
          *  A pointer back to the instance that wrapped this element.
          * 
@@ -39,6 +40,13 @@ package org.apache.flex.core
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.0
          */
-		public var flexjs_wrapper:Object;
+        public function get flexjs_wrapper():HTMLElementWrapper
+        {
+            return _flexjs_wrapper;
+        }
+        public function set flexjs_wrapper(value:HTMLElementWrapper):void
+        {
+            _flexjs_wrapper = value;
+        }
 	}
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedSimpleButton.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedSimpleButton.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedSimpleButton.as
index 56bb3d0..00249a0 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedSimpleButton.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedSimpleButton.as
@@ -33,10 +33,12 @@ package org.apache.flex.core
 
         }
 
-		//--------------------------------------
-		//   Property
-		//--------------------------------------
-
+        private var _flexjs_wrapper:HTMLElementWrapper;
+        
+        //--------------------------------------
+        //   Property
+        //--------------------------------------
+        
         /**
          *  A pointer back to the instance that wrapped this element.
          * 
@@ -45,6 +47,13 @@ package org.apache.flex.core
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.0
          */
-		public var flexjs_wrapper:Object;
+        public function get flexjs_wrapper():HTMLElementWrapper
+        {
+            return _flexjs_wrapper;
+        }
+        public function set flexjs_wrapper(value:HTMLElementWrapper):void
+        {
+            _flexjs_wrapper = value;
+        }
 	}
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedSprite.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedSprite.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedSprite.as
index f2919b3..e00e9f8 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedSprite.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedSprite.as
@@ -27,10 +27,12 @@ package org.apache.flex.core
 	public class WrappedSprite extends Sprite implements IFlexJSElement
 	{
 
-		//--------------------------------------
-		//   Property
-		//--------------------------------------
-
+        private var _flexjs_wrapper:HTMLElementWrapper;
+        
+        //--------------------------------------
+        //   Property
+        //--------------------------------------
+        
         /**
          *  A pointer back to the instance that wrapped this element.
          * 
@@ -39,6 +41,13 @@ package org.apache.flex.core
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.0
          */
-		public var flexjs_wrapper:Object;
+        public function get flexjs_wrapper():HTMLElementWrapper
+        {
+            return _flexjs_wrapper;
+        }
+        public function set flexjs_wrapper(value:HTMLElementWrapper):void
+        {
+            _flexjs_wrapper = value;
+        }
 	}
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedTextField.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedTextField.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedTextField.as
index c998ca5..bc36bad 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedTextField.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedTextField.as
@@ -27,6 +27,8 @@ package org.apache.flex.core
 	public class WrappedTextField extends TextField implements IFlexJSElement
 	{
 
+        private var _flexjs_wrapper:HTMLElementWrapper;
+        
 		//--------------------------------------
 		//   Property
 		//--------------------------------------
@@ -39,6 +41,13 @@ package org.apache.flex.core
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.0
          */
-		public var flexjs_wrapper:Object;
+        public function get flexjs_wrapper():HTMLElementWrapper
+        {
+            return _flexjs_wrapper;
+        }
+        public function set flexjs_wrapper(value:HTMLElementWrapper):void
+        {
+            _flexjs_wrapper = value;
+        }
 	}
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/DisplayUtils.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/DisplayUtils.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/DisplayUtils.as
index 3655b5a..54b1f99 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/DisplayUtils.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/DisplayUtils.as
@@ -52,7 +52,7 @@ package org.apache.flex.utils
 
 			COMPILE::JS
 			{
-				var r:Object = obj.element.getBoundingClientRect();
+				var r:Object = (obj.element as HTMLElement).getBoundingClientRect();
 				var bounds:Rectangle = new Rectangle(r.x, r.y, r.width, r.height);
 				bounds.x -= window.pageXOffset;
 				bounds.y -= window.pageYOffset;
@@ -81,8 +81,8 @@ package org.apache.flex.utils
 
 			COMPILE::JS
 			{
-				var r1:Object = obj1.element.getBoundingClientRect();
-				var r2:Object = obj2.element.getBoundingClientRect();
+				var r1:Object = (obj1.element as HTMLElement).getBoundingClientRect();
+				var r2:Object = (obj2.element as HTMLElement).getBoundingClientRect();
 				var bounds1:Rectangle = new Rectangle(r1.x, r1.y, r1.width, r1.height);
 				var bounds2:Rectangle = new Rectangle(r2.x, r2.y, r2.width, r2.height);
 
@@ -115,7 +115,7 @@ package org.apache.flex.utils
 
 			COMPILE::JS
 			{
-				var result:Array = examineElementsUnderPoint(x,y,obj.element);
+				var result:Array = examineElementsUnderPoint(x,y,obj.element as HTMLElement);
 				return result.length > 0;
 			}
 		}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/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 9af7640..058c5b8 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
@@ -168,6 +168,7 @@ public class MXMLDataInterpreter
     
     /**
      * @flexjsignorecoercion Function 
+     * @flexjsignorecoercion org.apache.flex.core.IChild 
      */
     private static function initializeStrandBasedObject(document:Object, parent:IParent, comp:Object, data:Array, i:int):int
     {
@@ -296,12 +297,12 @@ public class MXMLDataInterpreter
         COMPILE::SWF
         {
             if (parent && comp is IChild)
-                parent.addElement(comp, !(parent is IContainer));
+                parent.addElement(comp as IChild, !(parent is IContainer));
         }
         COMPILE::JS
         {
             if (parent && comp is IChild)
-                parent.addElement(comp, !(parent is IContainer));
+                parent.addElement(comp as IChild, !(parent is IContainer));
         }
         
         if (children)

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/ViewSourceContextMenuOption.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/ViewSourceContextMenuOption.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/ViewSourceContextMenuOption.as
index 4e5cfed..5f4382d 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/ViewSourceContextMenuOption.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/ViewSourceContextMenuOption.as
@@ -29,7 +29,7 @@ COMPILE::SWF
     import flash.ui.ContextMenuItem;
 }
 
-import org.apache.flex.core.HTMLElementWrapper;
+import org.apache.flex.core.UIHTMLElementWrapper;
 import org.apache.flex.core.IBead;
 import org.apache.flex.core.IStrand;
 
@@ -74,7 +74,7 @@ public class ViewSourceContextMenuOption implements IBead
 		
         COMPILE::SWF
         {
-    		var menuHost:InteractiveObject = InteractiveObject(HTMLElementWrapper(value).$sprite);
+    		var menuHost:InteractiveObject = InteractiveObject(UIHTMLElementWrapper(value).$displayObject);
     		var cm:ContextMenu = ContextMenu(menuHost.contextMenu);
     		if (!cm)
     		{

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/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 db85a4a..333dae7 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
@@ -20,8 +20,10 @@ package org.apache.flex.createjs
 {	
 	import org.apache.flex.core.ApplicationBase;
 	import org.apache.flex.core.IApplicationView;
-	import org.apache.flex.core.IParent;
+	import org.apache.flex.core.IChild;
+    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.ValuesManager;
 	import org.apache.flex.events.Event;
@@ -318,11 +320,12 @@ 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:IChild, dispatchEvent:Boolean = true):void
 		{
 			stage.addChild(c.element as DisplayObject);
-			c.addedToParent();
+            (c as IUIBase).addedToParent();
 		}
 		
 		/**
@@ -332,12 +335,12 @@ package org.apache.flex.createjs
 		 *  @playerversion Flash 10.2
 		 *  @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:IChild, index:int, dispatchEvent:Boolean = true):void
 		{
 			stage.addChildAt(c.element as DisplayObject, index);
-			c.addedToParent();
+            (c as IUIBase).addedToParent();
 		}
 		
 		/**
@@ -348,11 +351,12 @@ package org.apache.flex.createjs
 		 *  @playerversion AIR 2.6
 		 *  @productversion FlexJS 0.0
          *  @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement
+         *  @flexjsignorecoercion org.apache.flex.core.IChild
 		 */
-		public function getElementAt(index:int):Object
+		public function getElementAt(index:int):IChild
 		{
 			var c:WrappedHTMLElement = stage.getChildAt(index) as WrappedHTMLElement;
-			return c.flexjs_wrapper;
+			return c.flexjs_wrapper as IChild;
 		}
 		
 		/**
@@ -364,7 +368,7 @@ package org.apache.flex.createjs
 		 *  @productversion FlexJS 0.0
          *  @flexjsignorecoercion createjs.DisplayObject
 		 */
-		public function getElementIndex(c:Object):int
+		public function getElementIndex(c:IChild):int
 		{
 			return stage.getChildIndex(c.element as DisplayObject)
 		}
@@ -377,7 +381,7 @@ package org.apache.flex.createjs
 		 *  @playerversion AIR 2.6
 		 *  @productversion FlexJS 0.0
 		 */
-		public function removeElement(c:Object, dispatchEvent:Boolean = true):void
+		public function removeElement(c:IChild, dispatchEvent:Boolean = true):void
 		{
 			stage.removeChild(c.element as DisplayObject);
 		}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/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 10c85c8..d29fa51 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
@@ -18,10 +18,12 @@
 ////////////////////////////////////////////////////////////////////////////////
 package org.apache.flex.createjs.core
 {
-    import org.apache.flex.core.HTMLElementWrapper;
+    import org.apache.flex.core.UIHTMLElementWrapper;
+    import org.apache.flex.core.IChild;
 	import org.apache.flex.core.IStrand;
 	import org.apache.flex.core.IStrandWithModel;
-	import org.apache.flex.core.IParentIUIBase;
+	import org.apache.flex.core.IParent;
+    import org.apache.flex.core.IParentIUIBase;
 	import org.apache.flex.core.IStyleableObject;
 	import org.apache.flex.core.ILayoutChild;
 	import org.apache.flex.core.IBeadModel;
@@ -62,7 +64,7 @@ package org.apache.flex.createjs.core
 	}
         
 	COMPILE::JS
-	public class UIBase extends HTMLElementWrapper implements IStrandWithModel, IEventDispatcher, IUIBase, IFlexJSElement
+	public class UIBase extends UIHTMLElementWrapper implements IStrandWithModel, IEventDispatcher, IUIBase, IFlexJSElement
 	{
 		/**
 		 *  Constructor.
@@ -336,7 +338,7 @@ package org.apache.flex.createjs.core
          * @flexjsignorecoercion createjs.Container
          * @flexjsignorecoercion createjs.DisplayObject
          */
-        public function addElement(c:Object, dispatchEvent:Boolean = true):void
+        public function addElement(c:IChild, dispatchEvent:Boolean = true):void
         {
             (element as Container).addChild(c.element as DisplayObject);
         }
@@ -345,7 +347,7 @@ package org.apache.flex.createjs.core
          * @flexjsignorecoercion createjs.Container
          * @flexjsignorecoercion createjs.DisplayObject
          */
-        public function addElementAt(c:Object, index:int, dispatchEvent:Boolean = true):void
+        public function addElementAt(c:IChild, index:int, dispatchEvent:Boolean = true):void
         {
             (element as Container).addChildAt(c.element as DisplayObject, index);
         }
@@ -355,7 +357,7 @@ package org.apache.flex.createjs.core
          * @flexjsignorecoercion createjs.Container
          * @flexjsignorecoercion createjs.DisplayObject
          */
-        public function getElementIndex(c:Object):int
+        public function getElementIndex(c:IChild):int
         {
             return (element as Container).getChildIndex(c.element as DisplayObject);
         }
@@ -365,7 +367,7 @@ package org.apache.flex.createjs.core
          * @flexjsignorecoercion createjs.Container
          * @flexjsignorecoercion createjs.DisplayObject
          */
-        public function removeElement(c:Object, dispatchEvent:Boolean = true):void
+        public function removeElement(c:IChild, dispatchEvent:Boolean = true):void
         {
             (element as Container).removeChild(c.element as DisplayObject);
         }
@@ -374,10 +376,11 @@ package org.apache.flex.createjs.core
         /**
          * @flexjsignorecoercion createjs.Container
          * @flexjsignorecoercion createjs.DisplayObject
+         * @flexjsignorecoercion org.apache.flex.core.IChild
          */
-        public function getElementAt(index:int):Object
+        public function getElementAt(index:int):IChild
         {
-            return (element as Container).getChildAt(index);
+            return (element as Container).getChildAt(index) as IChild;
         }
         
 
@@ -670,34 +673,16 @@ package org.apache.flex.createjs.core
             (positioner as DisplayObject).alpha = value;
         }
 
-        private var _positioner:WrappedHTMLElement;
-        
-        /**
-         * The HTMLElement used to position the component.
-         */
-        public function get positioner():WrappedHTMLElement
-        {
-            return _positioner;
-        }
-        
-        /**
-         * @private
-         */
-        public function set positioner(value:WrappedHTMLElement):void
-        {
-            _positioner = value;
-        }
-		
 		/**
          * @flexjsignorecoercion createjs.Container
          * @flexjsignorecoercion createjs.DisplayObject
          * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement
 		 */
-		public function get parent():IUIBase
+		override public function get parent():IParent
 		{
 			var pos:createjs.DisplayObject = this.positioner as createjs.DisplayObject;
 			var p:WrappedHTMLElement = pos['parent'] as WrappedHTMLElement;
-			var wrapper:IUIBase = p ? p.flexjs_wrapper as IUIBase : null;
+			var wrapper:IParent = p ? p.flexjs_wrapper as IParent : null;
 			return wrapper;
 		}
 		

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/events/DragEvent.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/events/DragEvent.as b/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/events/DragEvent.as
index 12f42e3..a226858 100644
--- a/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/events/DragEvent.as
+++ b/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/events/DragEvent.as
@@ -337,6 +337,7 @@ package org.apache.flex.events
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.0
          *  @flexjsignorecoercion org.apache.flex.core.IUIBase
+         *  @flexjsignorecoercion org.apache.flex.events.IEventDispatcher
          *  @flexjsignorecoercion window.Event
          */
         public static function dispatchDragEvent(event:DragEvent, target:IEventDispatcher):void
@@ -347,7 +348,7 @@ package org.apache.flex.events
             }
             COMPILE::JS
             {
-                (target as IUIBase).element.dispatchEvent(event as window.Event);
+                ((target as IUIBase).element as IEventDispatcher).dispatchEvent(event as window.Event);
             }
         }
 

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/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 76a879f..cc58ef6 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;
@@ -191,7 +192,7 @@ package org.apache.flex.core
             }
         }
         
-        private function isItemInState(child:Object, s:State):Boolean
+        private function isItemInState(child:IChild, s:State):Boolean
         {
             if (s == null) return false;
             
@@ -286,7 +287,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 +296,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] as IChild;
                                 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/472c7af2/frameworks/projects/Flat/src/main/flex/org/apache/flex/flat/beads/CSSContentAndTextToggleButtonView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Flat/src/main/flex/org/apache/flex/flat/beads/CSSContentAndTextToggleButtonView.as b/frameworks/projects/Flat/src/main/flex/org/apache/flex/flat/beads/CSSContentAndTextToggleButtonView.as
index 8eff640..ecb1c1e 100644
--- a/frameworks/projects/Flat/src/main/flex/org/apache/flex/flat/beads/CSSContentAndTextToggleButtonView.as
+++ b/frameworks/projects/Flat/src/main/flex/org/apache/flex/flat/beads/CSSContentAndTextToggleButtonView.as
@@ -132,8 +132,8 @@ package org.apache.flex.flat.beads
                 var icon:StyleableCSSTextField = new StyleableCSSTextField();
                 icon.name = "icon";
                 icon.className = className + suffixMap[p];
-                s.addChild(icon.$textField);
-                s.addChild(tf.$textField);
+                s.addChild(icon);
+                s.addChild(tf);
             }
             
 			_toggleButtonModel = value.getBeadByType(IToggleButtonModel) as IToggleButtonModel;
@@ -225,7 +225,7 @@ package org.apache.flex.flat.beads
 			var parent:CSSTextField;
 			for each(parent in textFields)
 			{
-				if(parent.$textField == tf)
+				if(parent == tf)
 					return parent;
 			}
 			return null;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/Flat/src/main/flex/org/apache/flex/flat/beads/CSSScrollBarButtonView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Flat/src/main/flex/org/apache/flex/flat/beads/CSSScrollBarButtonView.as b/frameworks/projects/Flat/src/main/flex/org/apache/flex/flat/beads/CSSScrollBarButtonView.as
index edd4136..09669c4 100644
--- a/frameworks/projects/Flat/src/main/flex/org/apache/flex/flat/beads/CSSScrollBarButtonView.as
+++ b/frameworks/projects/Flat/src/main/flex/org/apache/flex/flat/beads/CSSScrollBarButtonView.as
@@ -66,9 +66,9 @@ package org.apache.flex.flat.beads
             downArrowShape = new CSSShape();
             overArrowShape = new CSSShape();
             overArrowShape.state = "hover";
-            upSprite.addChild(upArrowShape.$shape);
-            downSprite.addChild(downArrowShape.$shape);
-            overSprite.addChild(overArrowShape.$shape);
+            upSprite.addChild(upArrowShape);
+            downSprite.addChild(downArrowShape);
+            overSprite.addChild(overArrowShape);
 		}
 		
 		private var textModel:ITextModel;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/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 0b98907..e37a3b3 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
@@ -30,18 +30,20 @@ package org.apache.flex.flat.beads
 	import org.apache.flex.core.CSSSprite;
 	import org.apache.flex.core.CSSTextField;
 	import org.apache.flex.core.IBeadView;
+	import org.apache.flex.core.IChild;
 	import org.apache.flex.core.ILayoutChild;
 	import org.apache.flex.core.IPopUpHost;
 	import org.apache.flex.core.ISelectionModel;
 	import org.apache.flex.core.IStrand;
 	import org.apache.flex.core.IUIBase;
+	import org.apache.flex.core.UIBase;
 	import org.apache.flex.core.ValuesManager;
-    import org.apache.flex.core.UIBase;
 	import org.apache.flex.events.Event;
 	import org.apache.flex.events.IEventDispatcher;
+	import org.apache.flex.html.Button;
 	import org.apache.flex.html.beads.IDropDownListView;
-    import org.apache.flex.html.Button;
 	import org.apache.flex.utils.CSSUtils;
+    import org.apache.flex.utils.UIUtils;
     
     /**
      *  The DropDownListView class is the default view for
@@ -77,9 +79,9 @@ package org.apache.flex.flat.beads
 			upTextField = new CSSTextField();
 			downTextField = new CSSTextField();
 			overTextField = new CSSTextField();
-            upSprite.$sprite.addChild(upTextField.$textField);
-            overSprite.$sprite.addChild(overTextField.$textField);
-            downSprite.$sprite.addChild(downTextField.$textField);
+            upSprite.addChild(upTextField);
+            overSprite.addChild(overTextField);
+            downSprite.addChild(downTextField);
 			upTextField.selectable = false;
             upTextField.parentDrawsBackground = true;
             upTextField.parentHandlesPadding = true;
@@ -103,9 +105,9 @@ package org.apache.flex.flat.beads
             overArrows.className = 'dropdown-caret';
             downArrows = new CSSShape();
             downArrows.className = 'dropdown-caret';
-            upSprite.$sprite.addChild(upArrows.$shape);
-			overSprite.$sprite.addChild(overArrows.$shape);
-			downSprite.$sprite.addChild(downArrows.$shape);
+            upSprite.addChild(upArrows);
+			overSprite.addChild(overArrows);
+			downSprite.addChild(downArrows);
 
 		}
 
@@ -134,9 +136,9 @@ package org.apache.flex.flat.beads
 			shape.graphics.beginFill(0xCCCCCC);
 			shape.graphics.drawRect(0, 0, 10, 10);
 			shape.graphics.endFill();
-			b.$button.upState = upSprite.$sprite;
-			b.$button.downState = downSprite.$sprite;
-			b.$button.overState = overSprite.$sprite;
+			b.$button.upState = upSprite;
+			b.$button.downState = downSprite;
+			b.$button.overState = overSprite;
 			b.$button.hitTestState = shape;
 			if (selectionModel.selectedIndex !== -1)
 				selectionChangeHandler(null);
@@ -289,21 +291,19 @@ package org.apache.flex.flat.beads
          */
         public function set popUpVisible(value:Boolean):void
         {
+            var host:IPopUpHost;
             if (value != _popUpVisible)
             {
                 _popUpVisible = value;
                 if (value)
                 {
-					var root:Object = UIBase(_strand).$sprite.root;
-					var host:DisplayObjectContainer = UIBase(_strand).$sprite.parent;
-                    while (host && !(host is IPopUpHost))
-                        host = host.parent;
-                    if (host)
-                        IPopUpHost(host).addElement(popUp);
+                    host = UIUtils.findPopUpHost(_strand as IUIBase);
+                    IPopUpHost(host).addElement(popUp as IChild);
                 }
                 else
                 {
-                    DisplayObject(_popUp).parent.removeChild(_popUp as DisplayObject);                    
+                    host = UIUtils.findPopUpHost(_strand as IUIBase);
+                    IPopUpHost(host).removeElement(popUp as IChild);
                 }
             }
         }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/Formatters/src/main/flex/org/apache/flex/html/beads/FormatableTextInputView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Formatters/src/main/flex/org/apache/flex/html/beads/FormatableTextInputView.as b/frameworks/projects/Formatters/src/main/flex/org/apache/flex/html/beads/FormatableTextInputView.as
index d176e7b..926253c 100644
--- a/frameworks/projects/Formatters/src/main/flex/org/apache/flex/html/beads/FormatableTextInputView.as
+++ b/frameworks/projects/Formatters/src/main/flex/org/apache/flex/html/beads/FormatableTextInputView.as
@@ -85,7 +85,7 @@ package org.apache.flex.html.beads
 			
 			// move the cursor to the end
 			var l:int = this.textField.text.length;
-			this.textField.$textField.setSelection(l,l);
+			this.textField.setSelection(l,l);
 		}
 	}
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/CompoundGraphic.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/CompoundGraphic.as b/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/CompoundGraphic.as
index 43bae5c..351f871 100644
--- a/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/CompoundGraphic.as
+++ b/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/CompoundGraphic.as
@@ -513,7 +513,7 @@ package org.apache.flex.svg
             COMPILE::SWF
             {
                 var textField:CSSTextField = new CSSTextField();
-                $sprite.addChild(textField.$textField);
+                $sprite.addChild(textField);
 
                 textField.selectable = false;
                 textField.type = TextFieldType.DYNAMIC;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/GraphicContainer.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/GraphicContainer.as b/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/GraphicContainer.as
index 48c51d1..8c3637f 100644
--- a/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/GraphicContainer.as
+++ b/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/GraphicContainer.as
@@ -14,6 +14,7 @@
 package org.apache.flex.svg
 {
     import org.apache.flex.core.ContainerBase;
+    import org.apache.flex.core.IChild;
     import org.apache.flex.core.IFlexJSElement;
     import org.apache.flex.core.ITransformHost;
 
@@ -85,7 +86,7 @@ package org.apache.flex.svg
 		 *  @playerversion AIR 2.6
 		 *  @productversion FlexJS 0.0
 		 */
-		override public function getElementAt(index:int):Object
+		override public function getElementAt(index:int):IChild
 		{
 			return graphicGroup.getElementAt(index);
 		}        
@@ -98,7 +99,7 @@ package org.apache.flex.svg
 		 *  @playerversion AIR 2.6
 		 *  @productversion FlexJS 0.0
 		 */
-		override public function addElement(c:Object, dispatchEvent:Boolean = true):void
+		override public function addElement(c:IChild, dispatchEvent:Boolean = true):void
 		{
 			graphicGroup.addElement(c, dispatchEvent);
 			if (dispatchEvent)
@@ -113,7 +114,7 @@ package org.apache.flex.svg
 		 *  @playerversion AIR 2.6
 		 *  @productversion FlexJS 0.0
 		 */
-		override public function addElementAt(c:Object, index:int, dispatchEvent:Boolean = true):void
+		override public function addElementAt(c:IChild, index:int, dispatchEvent:Boolean = true):void
 		{
 			graphicGroup.addElementAt(c, index, dispatchEvent);
 			if (dispatchEvent)
@@ -128,7 +129,7 @@ package org.apache.flex.svg
 		 *  @playerversion AIR 2.6
 		 *  @productversion FlexJS 0.0
 		 */
-		override public function removeElement(c:Object, dispatchEvent:Boolean = true):void
+		override public function removeElement(c:IChild, dispatchEvent:Boolean = true):void
 		{
 			graphicGroup.removeElement(c, dispatchEvent);
 			if (dispatchEvent)
@@ -156,7 +157,7 @@ package org.apache.flex.svg
 		 *  @playerversion AIR 2.6
 		 *  @productversion FlexJS 0.0
 		 */
-		override public function getElementIndex(c:Object):int
+		override public function getElementIndex(c:IChild):int
 		{
 			return graphicGroup.getElementIndex(c);
 		}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/GraphicShape.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/GraphicShape.as b/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/GraphicShape.as
index 78b8820..4d113a4 100644
--- a/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/GraphicShape.as
+++ b/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/GraphicShape.as
@@ -17,14 +17,17 @@ package org.apache.flex.svg
 	COMPILE::SWF
     {
 		import flash.display.Graphics;
+        import flash.display.Sprite;
         import flash.geom.Point;
         import flash.geom.Rectangle;
+        import org.apache.flex.core.WrappedSprite;
     }
     COMPILE::JS
     {
         import org.apache.flex.core.WrappedHTMLElement;
     }
 
+    import org.apache.flex.core.IFlexJSElement;
 	import org.apache.flex.core.UIBase;
 	import org.apache.flex.graphics.IFill;
 	import org.apache.flex.graphics.IStroke;
@@ -32,6 +35,14 @@ package org.apache.flex.svg
 
 	public class GraphicShape extends UIBase implements IGraphicShape
 	{
+        
+        COMPILE::SWF
+        override protected function createElement():IFlexJSElement
+        {
+            element = new WrappedSprite();
+            return element;
+        }
+        
 		private var _fill:IFill;
 		private var _stroke:IStroke;
 
@@ -84,7 +95,7 @@ package org.apache.flex.svg
 		 * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement
 		 */
 		COMPILE::JS
-		override protected function createElement():WrappedHTMLElement
+		override protected function createElement():IFlexJSElement
 		{
 			element = document.createElementNS('http://www.w3.org/2000/svg', 'svg') as WrappedHTMLElement;
 			element.flexjs_wrapper = this;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/LinearGradient.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/LinearGradient.as b/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/LinearGradient.as
index ab681ff..2aa6d46 100644
--- a/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/LinearGradient.as
+++ b/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/LinearGradient.as
@@ -74,12 +74,14 @@ package org.apache.flex.svg
          * @param value The IGraphicShape object on which the fill must be added.
          * @return {string}
          * @flexjsignorecoercion Node
+         * @flexjsignorecoercion HTMLElement
          */
         COMPILE::JS
         public function addFillAttrib(value:IGraphicShape):String 
         {
             //Create and add a linear gradient def
-            var svgNS:String = value.element.namespaceURI;
+            var valueElement:HTMLElement = value.element as HTMLElement;
+            var svgNS:String = valueElement.namespaceURI;
             var grad:HTMLElement = document.createElementNS(svgNS, 'linearGradient') as HTMLElement;
             var gradientId:String = this.newId;
             grad.setAttribute('id', gradientId);
@@ -115,8 +117,8 @@ package org.apache.flex.svg
             
             //Add defs element if not available already
             //Add newly created gradient to defs element
-            var defs:Node = value.element.querySelector('defs') ||
-                value.element.insertBefore(document.createElementNS(svgNS, 'defs'), value.element.firstChild);
+            var defs:Node = valueElement.querySelector('defs') ||
+                valueElement.insertBefore(document.createElementNS(svgNS, 'defs'), valueElement.firstChild);
             defs.appendChild(grad);
             
             //Return the fill attribute

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/Text.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/Text.as b/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/Text.as
index 31d4477..51b8135 100644
--- a/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/Text.as
+++ b/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/Text.as
@@ -59,7 +59,7 @@ package org.apache.flex.svg
             COMPILE::SWF
             {
                 _textField = new CSSTextField();
-                $sprite.addChild(_textField.$textField);
+                $sprite.addChild(_textField);
             }
 		}
 		

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/RadioButton.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/RadioButton.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/RadioButton.as
index 9aa2254..39eaeef 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/RadioButton.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/RadioButton.as
@@ -67,9 +67,9 @@ package org.apache.flex.html
 		 *  @playerversion AIR 2.6
 		 *  @productversion FlexJS 0.0
 		 */
-		public function RadioButton(upState:DisplayObject=null, overState:DisplayObject=null, downState:DisplayObject=null, hitTestState:DisplayObject=null)
+		public function RadioButton()
 		{
-			super(upState, overState, downState, hitTestState);
+			super();
 
 			addEventListener(org.apache.flex.events.MouseEvent.CLICK, internalMouseHandler);
 		}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/accessories/NumericOnlyTextInputBead.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/accessories/NumericOnlyTextInputBead.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/accessories/NumericOnlyTextInputBead.as
index ade2671..0da2bb8 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/accessories/NumericOnlyTextInputBead.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/accessories/NumericOnlyTextInputBead.as
@@ -142,7 +142,7 @@ package org.apache.flex.html.accessories
 				textField.maxChars = maxChars;
 				// listen for changes to this textField and prevent non-numeric values, such
 				// as 34.09.94
-				textField.$textField.addEventListener(TextEvent.TEXT_INPUT, handleTextInput);
+				textField.addEventListener(TextEvent.TEXT_INPUT, handleTextInput);
 			}
 			else {
 				throw new Error("NumericOnlyTextInputBead requires strand to have an ITextFieldView bead");

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/accessories/TextPromptBead.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/accessories/TextPromptBead.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/accessories/TextPromptBead.as
index 28d70e5..65a5a24 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/accessories/TextPromptBead.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/accessories/TextPromptBead.as
@@ -135,11 +135,11 @@ package org.apache.flex.html.accessories
 			var model:Object = UIBase(_strand).model;
 			
 			if (model.text != null && model.text.length > 0 ) {
-				if (promptAdded) UIBase(_strand).$sprite.removeChild(promptField.$textField);
+				if (promptAdded) UIBase(_strand).$displayObjectContainer.removeChild(promptField);
 				promptAdded = false;
 			}
 			else {
-				if (!promptAdded) UIBase(_strand).$sprite.addChild(promptField.$textField);
+				if (!promptAdded) UIBase(_strand).$displayObjectContainer.addChild(promptField);
 				promptField.text = prompt;
 				promptAdded = true;
 			}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/BackgroundImageBead.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/BackgroundImageBead.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/BackgroundImageBead.as
index a4f73e2..e25628a 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/BackgroundImageBead.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/BackgroundImageBead.as
@@ -89,12 +89,12 @@ package org.apache.flex.html.beads
 				loader.contentLoaderInfo.addEventListener(flash.events.Event.COMPLETE, function (e:flash.events.Event):void { 
 					var host:UIBase = UIBase(_strand);
 					if (bitmap) {
-						host.$sprite.removeChild(bitmap);
+						host.$displayObjectContainer.removeChild(bitmap);
 					}
 					
 					bitmap = Bitmap(LoaderInfo(e.target).content);
 					
-					host.$sprite.addChildAt(bitmap,0);
+					host.$displayObjectContainer.addChildAt(bitmap,0);
 					
 					if (isNaN(host.explicitWidth) && isNaN(host.percentWidth))
 						host.setWidth(loader.content.width);

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/CSSImageAndTextButtonView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/CSSImageAndTextButtonView.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/CSSImageAndTextButtonView.as
index f4d46a9..1c5bf89 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/CSSImageAndTextButtonView.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/CSSImageAndTextButtonView.as
@@ -82,9 +82,9 @@ package org.apache.flex.html.beads
 			upTextField.autoSize = "left";
 			downTextField.autoSize = "left";
 			overTextField.autoSize = "left";
-			upSprite.addChild(upTextField.$textField);
-			downSprite.addChild(downTextField.$textField);
-			overSprite.addChild(overTextField.$textField);
+			upSprite.addChild(upTextField);
+			downSprite.addChild(downTextField);
+			overSprite.addChild(overTextField);
 		}
 		
 		private var textModel:ImageAndTextModel;
@@ -148,10 +148,10 @@ package org.apache.flex.html.beads
 			var sw:uint = IUIBase(_strand).width;
 			var sh:uint = IUIBase(_strand).height;
 			
-			textField.$textField.defaultTextFormat.leftMargin = 0;
-			textField.$textField.defaultTextFormat.rightMargin = 0;
+			textField.defaultTextFormat.leftMargin = 0;
+			textField.defaultTextFormat.rightMargin = 0;
             // set it again so it gets noticed
-			textField.$textField.defaultTextFormat = textField.$textField.defaultTextFormat;
+			textField.defaultTextFormat = textField.defaultTextFormat;
             
 			var borderColor:uint;
 			var borderThickness:uint;
@@ -243,7 +243,7 @@ package org.apache.flex.html.beads
             {
                 var loader:Loader = new Loader();
                 sprite.addChildAt(loader, 0);
-                sprite.addChild(textField.$textField);
+                sprite.addChild(textField);
                 var url:String = backgroundImage as String;
                 loader.load(new URLRequest(url));
                 loader.contentLoaderInfo.addEventListener(flash.events.Event.COMPLETE, function (e:flash.events.Event):void { 

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/CSSTextButtonView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/CSSTextButtonView.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/CSSTextButtonView.as
index 75d3023..0118a93 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/CSSTextButtonView.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/CSSTextButtonView.as
@@ -81,9 +81,9 @@ package org.apache.flex.html.beads
 			upTextField.autoSize = "left";
 			downTextField.autoSize = "left";
 			overTextField.autoSize = "left";
-			upSprite.addChild(upTextField.$textField);
-			downSprite.addChild(downTextField.$textField);
-			overSprite.addChild(overTextField.$textField);
+			upSprite.addChild(upTextField);
+			downSprite.addChild(downTextField);
+			overSprite.addChild(overTextField);
 		}
 		
 		private function get host():IUIBase
@@ -150,10 +150,10 @@ package org.apache.flex.html.beads
 			var sw:uint = IUIBase(_strand).width;
 			var sh:uint = IUIBase(_strand).height;
 			
-			textField.$textField.defaultTextFormat.leftMargin = 0;
-			textField.$textField.defaultTextFormat.rightMargin = 0;
+			textField.defaultTextFormat.leftMargin = 0;
+			textField.defaultTextFormat.rightMargin = 0;
             // set it again so it gets noticed
-			textField.$textField.defaultTextFormat = textField.$textField.defaultTextFormat;
+			textField.defaultTextFormat = textField.defaultTextFormat;
             
 			var borderColor:uint;
 			var borderThickness:uint;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/CheckBoxView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/CheckBoxView.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/CheckBoxView.as
index c418b8a..a04f2bf 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/CheckBoxView.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/CheckBoxView.as
@@ -76,7 +76,7 @@ package org.apache.flex.html.beads
 				var icon:Shape = new Shape();
 				icon.name = "icon";
 				s.addChild(icon);
-				s.addChild(tf.$textField);
+				s.addChild(tf);
 			}
 		}
 		

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/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 26cf103..b4cdac3 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,11 +29,15 @@ package org.apache.flex.html.beads
 	import org.apache.flex.core.IPopUpHost;
 	import org.apache.flex.core.IStrand;
 	import org.apache.flex.core.ValuesManager;
+    import org.apache.flex.core.IChild;
     import org.apache.flex.core.IParent;
+    import org.apache.flex.core.IUIBase;
+    import org.apache.flex.core.UIBase;
 	import org.apache.flex.events.Event;
 	import org.apache.flex.events.IEventDispatcher;
 	import org.apache.flex.html.Button;
 	import org.apache.flex.html.TextInput;
+    import org.apache.flex.utils.UIUtils;
 	
 	/**
 	 *  The ComboBoxView class creates the visual elements of the org.apache.flex.html.ComboBox 
@@ -136,7 +140,7 @@ package org.apache.flex.html.beads
             button.$button.upState = upSprite;
             button.$button.overState = overSprite;
             button.$button.downState = downSprite;
-			HTMLElementWrapper(strand).$sprite.addChild(button.$button);
+			UIBase(strand).$displayObjectContainer.addChild(button.$button);
 			button.width = 18;
 			button.height = 18;
 			button.x = textInput.width;
@@ -172,61 +176,64 @@ package org.apache.flex.html.beads
 			sprite.graphics.lineTo(4,4);
 			sprite.graphics.endFill();
 		}
+        
+        private var _popUp:IStrand;
 		
-		private var _popUp:IStrand;
-		
-		/**
-		 *  The pop-up component that holds the selection list.
-		 *
-		 *  @langversion 3.0
-		 *  @playerversion Flash 10.2
-		 *  @playerversion AIR 2.6
-		 *  @productversion FlexJS 0.0
-		 */
-		public function get popUp():IStrand
-		{
-			return _popUp;
-		}
-		
-		private var _popUpVisible:Boolean;
-		
-		/**
-		 *  This property is true if the pop-up selection list is currently visible.
-		 *
-		 *  @langversion 3.0
-		 *  @playerversion Flash 10.2
-		 *  @playerversion AIR 2.6
-		 *  @productversion FlexJS 0.0
-		 */
-		public function get popUpVisible():Boolean
-		{
-			return _popUpVisible;
-		}
-		public function set popUpVisible(value:Boolean):void
-		{
-			if (value != _popUpVisible)
-			{
-				_popUpVisible = value;
-				if (value)
-				{
-					if (!_popUp)
-					{
-						var popUpClass:Class = ValuesManager.valuesImpl.getValue(_strand, "iPopUp") as Class;
-						_popUp = new popUpClass() as IStrand;
-					}
-					var root:Object = DisplayObject(_strand).root;
-					var host:DisplayObjectContainer = DisplayObject(_strand).parent;
-					while (host && !(host is IPopUpHost))
-						host = host.parent;
-                    if (host)
-    					IPopUpHost(host).addElement(popUp);
-				}
-				else
-				{
-					DisplayObject(_popUp).parent.removeChild(_popUp as DisplayObject);                    
-				}
-			}
-		}
+        /**
+         *  The dropdown/popup that displays the set of choices.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.0
+         */
+        public function get popUp():IStrand
+        {
+            if (!_popUp)
+            {
+                var popUpClass:Class = ValuesManager.valuesImpl.getValue(_strand, "iPopUp") as Class;
+                _popUp = new popUpClass() as IStrand;
+            }
+            return _popUp;
+        }
+        
+        private var _popUpVisible:Boolean;
+        
+        /**
+         *  A flag that indicates whether the dropdown/popup is
+         *  visible.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.0
+         */
+        public function get popUpVisible():Boolean
+        {
+            return _popUpVisible;
+        }
+        
+        /**
+         *  @private
+         */
+        public function set popUpVisible(value:Boolean):void
+        {
+            var host:IPopUpHost;
+            if (value != _popUpVisible)
+            {
+                _popUpVisible = value;
+                if (value)
+                {
+                    host = UIUtils.findPopUpHost(_strand as IUIBase);
+                    IPopUpHost(host).addElement(popUp as IChild);
+                }
+                else
+                {
+                    host = UIUtils.findPopUpHost(_strand as IUIBase);
+                    IPopUpHost(host).removeElement(popUp as IChild);
+                }
+            }
+        }
 		
 		/**
 		 * @private

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/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 0c6696a..d62e799 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
@@ -23,6 +23,7 @@ package org.apache.flex.html.beads
 	import org.apache.flex.core.IBead;
 	import org.apache.flex.core.IBeadLayout;
 	import org.apache.flex.core.IBeadView;
+    import org.apache.flex.core.IChild;
 	import org.apache.flex.core.IContainer;
 	import org.apache.flex.core.IContainerView;
 	import org.apache.flex.core.IContentViewHost;
@@ -143,7 +144,7 @@ package org.apache.flex.html.beads
 		/**
 		 * @private
 		 */
-		public function addElement(c:Object, dispatchEvent:Boolean = true):void
+		public function addElement(c:IChild, 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:IChild, 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:IChild):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:IChild, 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):IChild
 		{
 			return contentView.getElementAt(index);
 		}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/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 83ec293..198e787 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
@@ -29,13 +29,16 @@ package org.apache.flex.html.beads
 	import org.apache.flex.core.BeadViewBase;
 	import org.apache.flex.core.CSSTextField;
 	import org.apache.flex.core.IBeadView;
+    import org.apache.flex.core.IChild;
 	import org.apache.flex.core.IPopUpHost;
 	import org.apache.flex.core.ISelectionModel;
 	import org.apache.flex.core.IStrand;
+    import org.apache.flex.core.IUIBase;
 	import org.apache.flex.core.ValuesManager;
 	import org.apache.flex.events.Event;
 	import org.apache.flex.events.IEventDispatcher;
     import org.apache.flex.utils.SolidBorderUtil;
+    import org.apache.flex.utils.UIUtils;
     
     /**
      *  The DropDownListView class is the default view for
@@ -67,9 +70,9 @@ package org.apache.flex.html.beads
 			upTextField = new CSSTextField();
 			downTextField = new CSSTextField();
 			overTextField = new CSSTextField();
-            upSprite.addChild(upTextField.$textField);
-            overSprite.addChild(overTextField.$textField);
-            downSprite.addChild(downTextField.$textField);
+            upSprite.addChild(upTextField);
+            overSprite.addChild(overTextField);
+            downSprite.addChild(downTextField);
             upTextField.parentDrawsBackground = true;
             downTextField.parentDrawsBackground = true;
             overTextField.parentDrawsBackground = true;
@@ -277,21 +280,19 @@ package org.apache.flex.html.beads
          */
         public function set popUpVisible(value:Boolean):void
         {
+            var host:IPopUpHost;
             if (value != _popUpVisible)
             {
                 _popUpVisible = value;
                 if (value)
                 {
-					var root:Object = DisplayObject(_strand).root;
-					var host:DisplayObjectContainer = DisplayObject(_strand).parent;
-                    while (host && !(host is IPopUpHost))
-                        host = host.parent;
-                    if (host)
-                        IPopUpHost(host).addElement(popUp);
+					host = UIUtils.findPopUpHost(_strand as IUIBase);
+                    IPopUpHost(host).addElement(popUp as IChild);
                 }
                 else
                 {
-                    DisplayObject(_popUp).parent.removeChild(_popUp as DisplayObject);                    
+                    host = UIUtils.findPopUpHost(_strand as IUIBase);
+                    IPopUpHost(host).removeElement(popUp as IChild);
                 }
             }
         }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ImageAndTextButtonView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ImageAndTextButtonView.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ImageAndTextButtonView.as
index f324495..3083465 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ImageAndTextButtonView.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ImageAndTextButtonView.as
@@ -141,7 +141,7 @@ package org.apache.flex.html.beads
 			{
 				var loader:Loader = new Loader();
 				sprite.addChildAt(loader, 0);
-                sprite.addChild(textField.$textField);
+                sprite.addChild(textField);
 				var url:String = backgroundImage as String;
 				loader.load(new URLRequest(url));
 				loader.contentLoaderInfo.addEventListener(flash.events.Event.COMPLETE, function (e:flash.events.Event):void { 

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ImageView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ImageView.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ImageView.as
index c7a3b39..77c970a 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ImageView.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ImageView.as
@@ -95,6 +95,7 @@ package org.apache.flex.html.beads
 		
 		/**
 		 * @private
+         * @flexjsignorecoercion HTMLImageELement
 		 */
 		private function handleUrlChange(event:Event):void
 		{
@@ -114,7 +115,7 @@ package org.apache.flex.html.beads
             {
 				if (_model.source) {
 	                var host:IUIBase = _strand as IUIBase;
-	                host.element.addEventListener('load',
+	                (host.element as HTMLImageElement).addEventListener('load',
 	                    loadHandler, false);
 	                host.addEventListener('sizeChanged',
 	                    sizeChangedHandler);

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/RadioButtonView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/RadioButtonView.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/RadioButtonView.as
index 29a203f..245c3d3 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/RadioButtonView.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/RadioButtonView.as
@@ -68,7 +68,7 @@ package org.apache.flex.html.beads
 				var icon:Shape = new Shape();
 				icon.name = "icon";
 				s.addChild(icon);
-				s.addChild(tf.$textField);
+				s.addChild(tf);
 			}
 		}
 		

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/SliderThumbView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/SliderThumbView.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/SliderThumbView.as
index 2e99eef..e9b4ea5 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/SliderThumbView.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/SliderThumbView.as
@@ -124,7 +124,7 @@ package org.apache.flex.html.beads
                 element.style.top = '-10px';
                 element.style.left = '20px';
                 
-                host.element.appendChild(element);
+                (host.element as WrappedHTMLElement).appendChild(element);
                 
                 element.flexjs_wrapper = this;
 

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/TextAreaView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/TextAreaView.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/TextAreaView.as
index e5a176f..f3b5359 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/TextAreaView.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/TextAreaView.as
@@ -124,7 +124,7 @@ package org.apache.flex.html.beads
 			
 			// for input, listen for changes to the _textField and update
 			// the model
-			textField.$textField.addEventListener(Event.SCROLL, textScrollHandler);
+			textField.addEventListener(Event.SCROLL, textScrollHandler);
 			
 			IEventDispatcher(host).addEventListener("widthChanged", sizeChangedHandler);
 			IEventDispatcher(host).addEventListener("heightChanged", sizeChangedHandler);
@@ -153,7 +153,7 @@ package org.apache.flex.html.beads
 		
 		private function textScrollHandler(event:Event):void
 		{
-			var tf:TextField = textField.$textField;
+			var tf:TextField = textField;
 			var visibleLines:int = tf.bottomScrollV - tf.scrollV + 1;
 			var scrollableLines:int = textField.numLines - visibleLines + 1;
 			var vsbm:ScrollBarModel = ScrollBarModel(vScrollBar.model);
@@ -190,7 +190,7 @@ package org.apache.flex.html.beads
 		private function scrollHandler(event:Event):void
 		{
 			var vpos:Number = IScrollBarModel(vScrollBar.model).value;
-			textField.$textField.scrollV = vpos;
+			textField.scrollV = vpos;
 		}
 		
         /**

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/TextButtonView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/TextButtonView.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/TextButtonView.as
index 44af468..e3d84dd 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/TextButtonView.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/TextButtonView.as
@@ -103,9 +103,9 @@ package org.apache.flex.html.beads
 			shape.graphics.beginFill(0xCCCCCC);
 			shape.graphics.drawRect(0, 0, 10, 10);
 			shape.graphics.endFill();
-			button.upState = upTextField.$textField;
-			button.downState = downTextField.$textField;
-			button.overState = overTextField.$textField;
+			button.upState = upTextField;
+			button.downState = downTextField;
+			button.overState = overTextField;
 			button.hitTestState = shape;
 			upTextField.styleParent = value;
 			downTextField.styleParent = value;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/TextFieldViewBase.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/TextFieldViewBase.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/TextFieldViewBase.as
index ead9d7b..0fb9542 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/TextFieldViewBase.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/TextFieldViewBase.as
@@ -95,7 +95,7 @@ package org.apache.flex.html.beads
             IEventDispatcher(_strand).addEventListener("widthChanged", widthChangeHandler);
             IEventDispatcher(_strand).addEventListener("heightChanged", heightChangeHandler);
             IEventDispatcher(_strand).addEventListener("sizeChanged", sizeChangeHandler);
-			UIBase(value).addElement(_textField);
+			UIBase(value).$displayObjectContainer.addChild(_textField);
 			if (_textModel.text !== null)
 				text = _textModel.text;
 			if (_textModel.html !== null)
@@ -277,7 +277,7 @@ package org.apache.flex.html.beads
                 }
                 c = input.indexOf("<span", c1);
             }
-            _textField.$textField.styleSheet = ss;   
+            _textField.styleSheet = ss;   
             _textField.htmlText = input;
         }
         

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/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 63d04e2..721ef94 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).$displayObjectContainer.addChild(loader);
 		}
 
 		/**

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/controllers/EditableTextKeyboardController.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/controllers/EditableTextKeyboardController.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/controllers/EditableTextKeyboardController.as
index 25c1ce1..4a8115f 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/controllers/EditableTextKeyboardController.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/controllers/EditableTextKeyboardController.as
@@ -70,7 +70,7 @@ package org.apache.flex.html.beads.controllers
 			
 			var viewBead:ITextFieldView = _strand.getBeadByType(ITextFieldView) as ITextFieldView;
 			textField = viewBead.textField;
-			textField.$textField.addEventListener("change", inputChangeHandler);
+			textField.addEventListener("change", inputChangeHandler);
 		}
 		
 		/**


[02/10] git commit: [flex-asjs] [refs/heads/refactor-sprite] - fix assumptions about parent property

Posted by ah...@apache.org.
fix assumptions about parent property


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

Branch: refs/heads/refactor-sprite
Commit: 90d18a998ec91f8ba8d780e00cebebaee2cd764b
Parents: 4ad3772
Author: Alex Harui <ah...@apache.org>
Authored: Fri Jul 29 14:28:12 2016 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Tue Aug 2 10:20:29 2016 -0700

----------------------------------------------------------------------
 .../flex/org/apache/flex/html/beads/ImageButtonView.as    |  9 +++++----
 .../src/main/flex/org/apache/flex/html/beads/ImageView.as | 10 +++++-----
 2 files changed, 10 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/90d18a99/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ImageButtonView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ImageButtonView.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ImageButtonView.as
index 21f34ca..eecc607 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ImageButtonView.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ImageButtonView.as
@@ -36,6 +36,7 @@ COMPILE::SWF {
 	import org.apache.flex.core.IStrand;
     import org.apache.flex.core.ValuesManager;
     import org.apache.flex.events.Event;
+	import org.apache.flex.events.IEventDispatcher;
 
 	/**
 	 *  The ImageButtonView class provides an image-only view
@@ -124,8 +125,8 @@ COMPILE::SWF {
                     if (isNaN(host.explicitWidth) && isNaN(host.percentWidth))
                     {
                         host.setWidth(loader.content.width);
-                        if (host.parent)
-                            host.parent.dispatchEvent(new org.apache.flex.events.Event("layoutNeeded"));
+                        if (host.parent is IEventDispatcher)
+                            IEventDispatcher(host.parent).dispatchEvent(new org.apache.flex.events.Event("layoutNeeded"));
                     }
                     else
                         loader.content.width = host.width;
@@ -133,8 +134,8 @@ COMPILE::SWF {
                     if (isNaN(host.explicitHeight) && isNaN(host.percentHeight))
                     {
                         host.setHeight(loader.content.height);
-                        if (host.parent)
-                            host.parent.dispatchEvent(new org.apache.flex.events.Event("layoutNeeded"));
+                        if (host.parent is IEventDispatcher)
+                            IEventDispatcher(host.parent).dispatchEvent(new org.apache.flex.events.Event("layoutNeeded"));
                     }
                     else
                         loader.content.height = host.height;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/90d18a99/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ImageView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ImageView.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ImageView.as
index a956840..c7a3b39 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ImageView.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ImageView.as
@@ -141,8 +141,8 @@ package org.apache.flex.html.beads
             if (host.isWidthSizedToContent())
             {
                 host.dispatchEvent(new Event("widthChanged"));
-                if (host.parent)
-                    host.parent.dispatchEvent(new Event("layoutNeeded"));
+                if (host.parent is IEventDispatcher)
+                    IEventDispatcher(host.parent).dispatchEvent(new Event("layoutNeeded"));
             }
             else
                 bitmap.width = host.width;
@@ -150,8 +150,8 @@ package org.apache.flex.html.beads
             if (host.isHeightSizedToContent())
             {
                 host.dispatchEvent(new Event("heightChanged"));
-                if (host.parent)
-                    host.parent.dispatchEvent(new Event("layoutNeeded"));
+                if (host.parent is IEventDispatcher)
+                    IEventDispatcher(host.parent).dispatchEvent(new Event("layoutNeeded"));
             }
             else
                 bitmap.height = host.height;
@@ -177,7 +177,7 @@ package org.apache.flex.html.beads
         private function loadHandler(event:Object):void
         {
             var host:UIBase = UIBase(_strand);
-            host.parent.dispatchEvent(new Event("layoutNeeded"));
+            IEventDispatcher(host.parent).dispatchEvent(new Event("layoutNeeded"));
         }
         
         /**


[09/10] git commit: [flex-asjs] [refs/heads/refactor-sprite] - hide TextFieldItemRenderer for now

Posted by ah...@apache.org.
hide TextFieldItemRenderer for now


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

Branch: refs/heads/refactor-sprite
Commit: 25e99901e83e7f4c54c8fbbe7651c8b78a732a9d
Parents: 3d1457f
Author: Alex Harui <ah...@apache.org>
Authored: Tue Aug 2 12:02:14 2016 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Tue Aug 2 12:02:14 2016 -0700

----------------------------------------------------------------------
 frameworks/projects/HTML/src/main/resources/defaults.css | 2 ++
 1 file changed, 2 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/25e99901/frameworks/projects/HTML/src/main/resources/defaults.css
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/resources/defaults.css b/frameworks/projects/HTML/src/main/resources/defaults.css
index 51152e8..d853623 100644
--- a/frameworks/projects/HTML/src/main/resources/defaults.css
+++ b/frameworks/projects/HTML/src/main/resources/defaults.css
@@ -617,11 +617,13 @@ TextButton
     iMeasurementBead: ClassReference("org.apache.flex.html.beads.TextButtonMeasurementBead");
 }
 
+/*
 TextFieldItemRenderer
 {
     IBeadController: ClassReference("org.apache.flex.html.beads.controllers.ItemRendererMouseController");
     height: 16;
 }
+*/
 
 TextInput
 {


[08/10] git commit: [flex-asjs] [refs/heads/refactor-sprite] - this got skipped in the merge somehow

Posted by ah...@apache.org.
this got skipped in the merge somehow


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

Branch: refs/heads/refactor-sprite
Commit: 3d1457f95b21c59a66905dfb6ef82dabdcfd56fe
Parents: 472c7af
Author: Alex Harui <ah...@apache.org>
Authored: Tue Aug 2 10:37:28 2016 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Tue Aug 2 10:37:28 2016 -0700

----------------------------------------------------------------------
 .../main/flex/org/apache/flex/core/CSSSprite.as | 141 -------------------
 1 file changed, 141 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/3d1457f9/frameworks/projects/Core/src/main/flex/org/apache/flex/core/CSSSprite.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/CSSSprite.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/CSSSprite.as
index 35711bc..c393245 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/CSSSprite.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/CSSSprite.as
@@ -18,12 +18,8 @@
 ////////////////////////////////////////////////////////////////////////////////
 package org.apache.flex.core
 {
-<<<<<<< HEAD
-    import flash.display.DisplayObject;
-=======
     COMPILE::SWF
     {
->>>>>>> refactor again so UIHTMLElementWrapper is the base for all exposed components, but CSSShape and friend are simple subclasses of Flash display objects and are directly added to the display list
     import flash.display.Graphics;
     import flash.display.Sprite;
     }
@@ -164,145 +160,8 @@ package org.apache.flex.core
          */
         public function draw(w:Number, h:Number):void
         {
-<<<<<<< HEAD
-            CSSBorderUtils.draw($sprite.graphics, w, h,this, state, true);            
-=======
             CSSBorderUtils.draw(graphics, w, h, this, state, true);            
->>>>>>> refactor again so UIHTMLElementWrapper is the base for all exposed components, but CSSShape and friend are simple subclasses of Flash display objects and are directly added to the display list
         }
-		
-		/**
-		 *  @copy org.apache.flex.core.IParent#addElement()
-		 * 
-		 *  @langversion 3.0
-		 *  @playerversion Flash 10.2
-		 *  @playerversion AIR 2.6
-		 *  @productversion FlexJS 0.0
-		 */
-		public function addElement(c:Object, dispatchEvent:Boolean = true):void
-		{
-			if(_elements == null)
-				_elements = [];
-			_elements[_elements.length] = c;
-			$sprite.addChild(c.$displayObject);
-			c.parent = this;
-			if (c is IUIBase)
-			{
-				IUIBase(c).addedToParent();
-			}
-			
-		}
-		
-		/**
-		 *  @copy org.apache.flex.core.IParent#addElementAt()
-		 * 
-		 *  @langversion 3.0
-		 *  @playerversion Flash 10.2
-		 *  @playerversion AIR 2.6
-		 *  @productversion FlexJS 0.0
-		 */
-		public function addElementAt(c:Object, index:int, dispatchEvent:Boolean = true):void
-		{
-			if(_elements == null)
-				_elements = [];
-			_elements.splice(index,0,c);
-			
-			$sprite.addChildAt(c.$displayObject,index);
-			c.parent = this;
-			if (c is IUIBase)
-			{
-				IUIBase(c).addedToParent();
-			}
-		}
-		
-		/**
-		 *  @copy org.apache.flex.core.IParent#getElementAt()
-		 * 
-		 *  @langversion 3.0
-		 *  @playerversion Flash 10.2
-		 *  @playerversion AIR 2.6
-		 *  @productversion FlexJS 0.0
-		 */
-		public function getElementAt(index:int):Object
-		{
-			if(_elements == null)
-				return null;
-			return _elements[index];
-		}        
-		
-		private var _elements:Array;
-		/**
-		 *  @copy org.apache.flex.core.IParent#getElementIndex()
-		 * 
-		 *  @langversion 3.0
-		 *  @playerversion Flash 10.2
-		 *  @playerversion AIR 2.6
-		 *  @productversion FlexJS 0.0
-		 */
-		public function getElementIndex(c:Object):int
-		{
-			if(_elements == null)
-				return -1;
-			return _elements.indexOf(c);
-		}
-		
-		/**
-		 *  @copy org.apache.flex.core.IParent#removeElement()
-		 * 
-		 *  @langversion 3.0
-		 *  @playerversion Flash 10.2
-		 *  @playerversion AIR 2.6
-		 *  @productversion FlexJS 0.0
-		 */
-		public function removeElement(c:Object, dispatchEvent:Boolean = true):void
-		{
-			if(_elements)
-			{
-				var idx:int = _elements.indexOf(c);
-				if(idx>=0)
-					_elements.splice(idx,1);
-				c.parent = null;
-			}
-			$sprite.removeChild(c.$displayObject);
-		}
-		
-		/**
-		 *  @copy org.apache.flex.core.IParent#numElements
-		 * 
-		 *  @langversion 3.0
-		 *  @playerversion Flash 10.2
-		 *  @playerversion AIR 2.6
-		 *  @productversion FlexJS 0.0
-		 */
-		public function get numElements():int
-		{
-			return _elements ? _elements.length : 0;
-		}
-		
-		public function getBeadByType(classOrInterface:Class):IBead
-		{
-			// TODO Auto Generated method stub
-			return null;
-		}
-		
-		public function removeBead(bead:IBead):IBead
-		{
-			// TODO Auto Generated method stub
-			return null;
-		}
-		
-		public function addedToParent():void
-		{
-			// TODO Auto Generated method stub
-			
-		}
-		
-		public function get topMostEventDispatcher():IEventDispatcher
-		{
-			// TODO Auto Generated method stub
-			return null;
-		}
-		
 
 	}
 }


[03/10] git commit: [flex-asjs] [refs/heads/refactor-sprite] - need different test as to whether to create children

Posted by ah...@apache.org.
need different test as to whether to create children


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

Branch: refs/heads/refactor-sprite
Commit: 4ad37724f2d51199b61fa7acfc3630cb7d990508
Parents: 5184111
Author: Alex Harui <ah...@apache.org>
Authored: Fri Jul 29 14:26:54 2016 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Tue Aug 2 10:20:29 2016 -0700

----------------------------------------------------------------------
 .../src/main/flex/org/apache/flex/utils/MXMLDataInterpreter.as | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/4ad37724/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 f280a04..9af7640 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
@@ -32,11 +32,11 @@ import org.apache.flex.core.IParent;
 import org.apache.flex.core.IStrand;
 import org.apache.flex.events.Event;
 import org.apache.flex.events.IEventDispatcher;
+import org.apache.flex.core.IChild;        
 
 COMPILE::JS
 {
     import goog.bind;
-    import org.apache.flex.core.IUIBase;        
 }
 
 /**
@@ -295,12 +295,12 @@ public class MXMLDataInterpreter
         }
         COMPILE::SWF
         {
-            if (parent && comp is DisplayObject)
+            if (parent && comp is IChild)
                 parent.addElement(comp, !(parent is IContainer));
         }
         COMPILE::JS
         {
-            if (parent && comp is IUIBase)
+            if (parent && comp is IChild)
                 parent.addElement(comp, !(parent is IContainer));
         }
         


[07/10] git commit: [flex-asjs] [refs/heads/refactor-sprite] - refactor again so UIHTMLElementWrapper is the base for all exposed components, but CSSShape and friend are simple subclasses of Flash display objects and are directly added to the display lis

Posted by ah...@apache.org.
refactor again so UIHTMLElementWrapper is the base for all exposed components, but CSSShape and friend are simple subclasses of Flash display objects and are directly added to the display list


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

Branch: refs/heads/refactor-sprite
Commit: 472c7af2059e301faf565215ee219fe7c10cd44e
Parents: 1b3d413
Author: Alex Harui <ah...@apache.org>
Authored: Tue Aug 2 10:05:57 2016 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Tue Aug 2 10:23:49 2016 -0700

----------------------------------------------------------------------
 .../org/apache/flex/charts/core/IAxisGroup.as   |   3 +-
 .../flex/charts/optimized/SVGChartDataGroup.as  |   5 +-
 .../flex/org/apache/flex/core/Application.as    | 156 ++--------
 .../org/apache/flex/core/ApplicationBase.as     |   4 +-
 .../org/apache/flex/core/ApplicationFactory.as  |   3 +-
 .../apache/flex/core/BrowserResizeListener.as   |  10 +-
 .../main/flex/org/apache/flex/core/CSSShape.as  | 102 +------
 .../main/flex/org/apache/flex/core/CSSSprite.as |  14 +-
 .../flex/org/apache/flex/core/CSSTextField.as   | 305 +------------------
 .../flex/org/apache/flex/core/ContainerBase.as  |  20 +-
 .../flex/core/ContainerBaseStrandChildren.as    |  10 +-
 .../org/apache/flex/core/FilledRectangle.as     |   2 +-
 .../org/apache/flex/core/HTMLElementWrapper.as  | 210 +++++--------
 .../main/flex/org/apache/flex/core/IChild.as    |  15 +-
 .../flex/org/apache/flex/core/IContentView.as   |   5 +-
 .../flex/org/apache/flex/core/IFlexJSElement.as |   3 +-
 .../flex/org/apache/flex/core/IItemRenderer.as  |   2 +-
 .../main/flex/org/apache/flex/core/IParent.as   |  10 +-
 .../org/apache/flex/core/ISWFApplication.as     |   6 +-
 .../main/flex/org/apache/flex/core/IUIBase.as   |  47 +--
 .../main/flex/org/apache/flex/core/ListBase.as  |  10 +-
 .../apache/flex/core/ListBaseStrandChildren.as  |  10 +-
 .../org/apache/flex/core/SimpleApplication.as   |   4 +-
 .../org/apache/flex/core/SimpleCSSValuesImpl.as |   3 +-
 .../org/apache/flex/core/SimpleStatesImpl.as    |  13 +-
 .../apache/flex/core/StyleableCSSTextField.as   |   6 +-
 .../main/flex/org/apache/flex/core/UIBase.as    | 202 +++---------
 .../flex/org/apache/flex/core/UIButtonBase.as   | 172 ++---------
 .../apache/flex/core/UIHTMLElementWrapper.as    | 257 ++++++++++++++++
 .../org/apache/flex/core/WrappedHTMLElement.as  |   2 +-
 .../org/apache/flex/core/WrappedMovieClip.as    |  52 ++++
 .../flex/org/apache/flex/core/WrappedShape.as   |  20 +-
 .../org/apache/flex/core/WrappedSimpleButton.as |  19 +-
 .../flex/org/apache/flex/core/WrappedSprite.as  |  19 +-
 .../org/apache/flex/core/WrappedTextField.as    |  11 +-
 .../flex/org/apache/flex/utils/DisplayUtils.as  |   8 +-
 .../apache/flex/utils/MXMLDataInterpreter.as    |   5 +-
 .../flex/utils/ViewSourceContextMenuOption.as   |   4 +-
 .../org/apache/flex/createjs/Application.as     |  24 +-
 .../org/apache/flex/createjs/core/UIBase.as     |  43 +--
 .../flex/org/apache/flex/events/DragEvent.as    |   3 +-
 .../flex/core/StatesWithTransitionsImpl.as      |   9 +-
 .../beads/CSSContentAndTextToggleButtonView.as  |   6 +-
 .../flex/flat/beads/CSSScrollBarButtonView.as   |   6 +-
 .../apache/flex/flat/beads/DropDownListView.as  |  36 +--
 .../flex/html/beads/FormatableTextInputView.as  |   2 +-
 .../flex/org/apache/flex/svg/CompoundGraphic.as |   2 +-
 .../org/apache/flex/svg/GraphicContainer.as     |  11 +-
 .../flex/org/apache/flex/svg/GraphicShape.as    |  13 +-
 .../flex/org/apache/flex/svg/LinearGradient.as  |   8 +-
 .../src/main/flex/org/apache/flex/svg/Text.as   |   2 +-
 .../flex/org/apache/flex/html/RadioButton.as    |   4 +-
 .../accessories/NumericOnlyTextInputBead.as     |   2 +-
 .../flex/html/accessories/TextPromptBead.as     |   4 +-
 .../flex/html/beads/BackgroundImageBead.as      |   4 +-
 .../html/beads/CSSImageAndTextButtonView.as     |  14 +-
 .../apache/flex/html/beads/CSSTextButtonView.as |  12 +-
 .../org/apache/flex/html/beads/CheckBoxView.as  |   2 +-
 .../org/apache/flex/html/beads/ComboBoxView.as  | 117 +++----
 .../org/apache/flex/html/beads/ContainerView.as |  11 +-
 .../apache/flex/html/beads/DropDownListView.as  |  21 +-
 .../flex/html/beads/ImageAndTextButtonView.as   |   2 +-
 .../org/apache/flex/html/beads/ImageView.as     |   3 +-
 .../apache/flex/html/beads/RadioButtonView.as   |   2 +-
 .../apache/flex/html/beads/SliderThumbView.as   |   2 +-
 .../org/apache/flex/html/beads/TextAreaView.as  |   6 +-
 .../apache/flex/html/beads/TextButtonView.as    |   6 +-
 .../apache/flex/html/beads/TextFieldViewBase.as |   4 +-
 .../apache/flex/html/beads/WebBrowserView.as    |   2 +-
 .../EditableTextKeyboardController.as           |   2 +-
 .../flex/html/beads/layouts/HorizontalLayout.as |   4 +-
 .../flex/html/supportClasses/DataGroup.as       |   5 +-
 .../html/supportClasses/ScrollingViewport.as    |   5 +-
 .../html/supportClasses/StringItemRenderer.as   |   2 +-
 .../supportClasses/TextFieldItemRenderer.as     |   7 +-
 .../src/main/resources/basic-as-manifest.xml    |   2 +-
 .../org/apache/flex/mobile/IViewManagerView.as  |   4 +-
 .../flex/org/apache/flex/mobile/ManagerBase.as  |  11 +-
 .../apache/flex/mobile/StackedViewManager.as    |   5 +-
 .../flex/mobile/models/ViewManagerModel.as      |   5 +-
 80 files changed, 889 insertions(+), 1295 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/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 23e711f..3d75b3f 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
@@ -18,6 +18,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 package org.apache.flex.charts.core
 {
+    import org.apache.flex.core.IChild;
 	import org.apache.flex.graphics.IFill;
 	import org.apache.flex.graphics.IStroke;
 
@@ -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 IChild
 	{
 		function removeAllElements():void;
 		

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/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 bc2fbe3..270c034 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
@@ -21,6 +21,7 @@ package org.apache.flex.charts.optimized
 	import org.apache.flex.charts.core.IChartDataGroup;
 	import org.apache.flex.charts.core.IChartItemRenderer;
 	import org.apache.flex.charts.core.IChartSeries;
+    import org.apache.flex.core.IChild;
 	import org.apache.flex.core.IContentView;
 	import org.apache.flex.core.IItemRenderer;
 	import org.apache.flex.core.IItemRendererParent;
@@ -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:IChild, 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:IChild, 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/472c7af2/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 43f8494..693b442 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
@@ -27,6 +27,7 @@ package org.apache.flex.core
 
     COMPILE::SWF {
         import flash.display.DisplayObject;
+        import flash.display.Graphics;
         import flash.display.Sprite;
 		import flash.events.Event;
         import flash.system.ApplicationDomain;
@@ -136,9 +137,9 @@ package org.apache.flex.core
 		 *  @productversion FlexJS 0.0
 		 */
 		COMPILE::SWF
-		public function setRoot(r:Sprite):void
+		public function setRoot(r:WrappedMovieClip):void
 		{
-			$sprite = r;	
+			element = r;	
 			MouseEventConverter.setupAllConverters(r.stage);
 			initHandler();
 		}
@@ -195,18 +196,18 @@ package org.apache.flex.core
 				COMPILE::SWF
 				{	
                 // if someone has installed a resize listener, fake an event to run it now
-                if ($sprite.stage.hasEventListener("resize"))
-					$sprite.stage.dispatchEvent(new flash.events.Event("resize"));
+                if ($displayObject.stage.hasEventListener("resize"))
+					$displayObject.stage.dispatchEvent(new flash.events.Event("resize"));
                 else if (initialView is ILayoutChild)
                 {
                     var ilc:ILayoutChild = initialView as ILayoutChild;
                     // otherwise, size once like this
                     if (!isNaN(ilc.percentWidth) && !isNaN(ilc.percentHeight))
-                        ilc.setWidthAndHeight($sprite.stage.stageWidth, $sprite.stage.stageHeight, true);
+                        ilc.setWidthAndHeight($displayObject.stage.stageWidth, $displayObject.stage.stageHeight, true);
                     else if (!isNaN(ilc.percentWidth))
-                        ilc.setWidth($sprite.stage.stageWidth);
+                        ilc.setWidth($displayObject.stage.stageWidth);
                     else if (!isNaN(ilc.percentHeight))
-                        ilc.setHeight($sprite.stage.stageHeight);
+                        ilc.setHeight($displayObject.stage.stageHeight);
                 }
 				}
 				COMPILE::JS
@@ -224,9 +225,10 @@ package org.apache.flex.core
                 if (bgColor != null)
                 {
                     var backgroundColor:uint = ValuesManager.valuesImpl.convertColor(bgColor);
-					$sprite.graphics.beginFill(backgroundColor);
-					$sprite.graphics.drawRect(0, 0, initialView.width, initialView.height);
-					$sprite.graphics.endFill();
+                    var graphics:Graphics = Sprite($displayObject).graphics;
+					graphics.beginFill(backgroundColor);
+					graphics.drawRect(0, 0, initialView.width, initialView.height);
+					graphics.endFill();
                 }
 				}
                 dispatchEvent(new org.apache.flex.events.Event("viewChanged"));
@@ -267,46 +269,6 @@ package org.apache.flex.core
         public var initialView:IApplicationView;
 
         /**
-         *  The data model (for the initial view).
-         *
-         *  @langversion 3.0
-         *  @playerversion Flash 10.2
-         *  @playerversion AIR 2.6
-         *  @productversion FlexJS 0.0
-         */
-        [Bindable("__NoChangeEvent__")]
-        COMPILE::SWF
-        public var model:Object;
-
-        COMPILE::JS
-        private var _model:Object;
-
-        /**
-         *  The data model (for the initial view).
-         *
-         *  @langversion 3.0
-         *  @playerversion Flash 10.2
-         *  @playerversion AIR 2.6
-         *  @productversion FlexJS 0.0
-         */
-        [Bindable("__NoChangeEvent__")]
-        COMPILE::JS
-        override public function get model():Object
-        {
-            return _model;
-        }
-
-        /**
-         *  @private
-         */
-        [Bindable("__NoChangeEvent__")]
-        COMPILE::JS
-        override public function set model(value:Object):void
-        {
-            _model = value;
-        }
-
-        /**
          *  The controller.  The controller typically watches
          *  the UI for events and updates the model accordingly.
          *
@@ -370,69 +332,6 @@ package org.apache.flex.core
          */
         public var beads:Array;
 
-        COMPILE::SWF
-        private var _beads:Vector.<IBead>;
-
-        /**
-         *  @copy org.apache.flex.core.IStrand#addBead()
-         *
-         *  @langversion 3.0
-         *  @playerversion Flash 10.2
-         *  @playerversion AIR 2.6
-         *  @productversion FlexJS 0.0
-         */
-        COMPILE::SWF
-        override public function addBead(bead:IBead):void
-        {
-            if (!_beads)
-                _beads = new Vector.<IBead>;
-            _beads.push(bead);
-            bead.strand = this;
-        }
-
-        /**
-         *  @copy org.apache.flex.core.IStrand#getBeadByType()
-         *
-         *  @langversion 3.0
-         *  @playerversion Flash 10.2
-         *  @playerversion AIR 2.6
-         *  @productversion FlexJS 0.0
-         */
-        COMPILE::SWF
-        public function getBeadByType(classOrInterface:Class):IBead
-        {
-            for each (var bead:IBead in _beads)
-            {
-                if (bead is classOrInterface)
-                    return bead;
-            }
-            return null;
-        }
-
-        /**
-         *  @copy org.apache.flex.core.IStrand#removeBead()
-         *
-         *  @langversion 3.0
-         *  @playerversion Flash 10.2
-         *  @playerversion AIR 2.6
-         *  @productversion FlexJS 0.0
-         */
-        COMPILE::SWF
-        public function removeBead(value:IBead):IBead
-        {
-            var n:int = _beads.length;
-            for (var i:int = 0; i < n; i++)
-            {
-                var bead:IBead = _beads[i];
-                if (bead == value)
-                {
-                    _beads.splice(i, 1);
-                    return bead;
-                }
-            }
-            return null;
-        }
-
         private var _elements:Array;
 
         /**
@@ -442,24 +341,25 @@ package org.apache.flex.core
          *  @playerversion Flash 10.2
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.0
+         *  @flexjsignorecoercion org.apache.flex.core.IUIBase
+         *  @flexjsignorecoercion HTMLElement
          */
-        public function addElement(c:Object, dispatchEvent:Boolean = true):void
+        public function addElement(c:IChild, dispatchEvent:Boolean = true):void
         {
             COMPILE::SWF
             {
                 if(_elements == null)
                     _elements = [];
                 _elements[_elements.length] = c;
-				$sprite.addChild(c.$sprite);
-                c.parent = this;
+				$displayObjectContainer.addChild(c.$displayObject);
                 if (c is IUIBase)
                 {
                     IUIBase(c).addedToParent();
                 }
             }
             COMPILE::JS {
-                this.element.appendChild(c.element);
-                c.addedToParent();
+                this.element.appendChild(c.element as HTMLElement);
+                (c as IUIBase).addedToParent();
             }
         }
 
@@ -470,8 +370,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:IChild, index:int, dispatchEvent:Boolean = true):void
         {
             COMPILE::SWF
             {
@@ -479,8 +380,7 @@ package org.apache.flex.core
                     _elements = [];
                 _elements.splice(index,0,c);
 
-				$sprite.addChildAt(c.$sprite,index);
-                c.parent = this;
+				$displayObjectContainer.addChildAt(c.$displayObject,index);
 
                 if (c is IUIBase)
                 {
@@ -495,7 +395,7 @@ package org.apache.flex.core
                 {
                     element.insertBefore(c.positioner,
                         children[index]);
-                    c.addedToParent();
+                    (c as IUIBase).addedToParent();
                 }
 
             }
@@ -509,7 +409,7 @@ package org.apache.flex.core
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.0
          */
-        public function getElementAt(index:int):Object
+        public function getElementAt(index:int):IChild
         {
             COMPILE::SWF
             {
@@ -532,7 +432,7 @@ package org.apache.flex.core
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.0
          */
-        public function getElementIndex(c:Object):int
+        public function getElementIndex(c:IChild):int
         {
             COMPILE::SWF
             {
@@ -559,8 +459,9 @@ package org.apache.flex.core
          *  @playerversion Flash 10.2
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.0
+         *  @flexjsignorecoercion HTMLElement
          */
-        public function removeElement(c:Object, dispatchEvent:Boolean = true):void
+        public function removeElement(c:IChild, dispatchEvent:Boolean = true):void
         {
             COMPILE::SWF
             {
@@ -569,13 +470,12 @@ package org.apache.flex.core
                     var idx:int = _elements.indexOf(c);
                     if(idx>=0)
                         _elements.splice(idx,1);
-                    c.parent = null;
                 }
-				$sprite.removeChild(c.$sprite as DisplayObject);
+				$displayObjectContainer.removeChild(c.$displayObject as DisplayObject);
             }
             COMPILE::JS
             {
-                element.removeChild(c.element);
+                element.removeChild(c.element as HTMLElement);
             }
         }
 

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ApplicationBase.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ApplicationBase.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ApplicationBase.as
index 4040395..0fe63ba 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ApplicationBase.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ApplicationBase.as
@@ -33,7 +33,7 @@ package org.apache.flex.core
      *  @productversion FlexJS 0.0
      */
     COMPILE::SWF
-	public class ApplicationBase extends HTMLElementWrapper implements IFlexInfo
+	public class ApplicationBase extends UIHTMLElementWrapper implements IFlexInfo
 	{
         /**
          *  Constructor.
@@ -73,7 +73,7 @@ package org.apache.flex.core
    	}
     
     COMPILE::JS
-    public class ApplicationBase extends HTMLElementWrapper implements IFlexInfo
+    public class ApplicationBase extends UIHTMLElementWrapper implements IFlexInfo
     {
         /**
          *  Constructor.

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ApplicationFactory.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ApplicationFactory.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ApplicationFactory.as
index e3698c1..0b75d6c 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ApplicationFactory.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ApplicationFactory.as
@@ -19,7 +19,6 @@
 package org.apache.flex.core
 {
     COMPILE::SWF {
-        import flash.display.MovieClip;
 		import flash.display.StageAlign;
 		import flash.display.StageQuality;
 		import flash.display.StageScaleMode;
@@ -37,7 +36,7 @@ package org.apache.flex.core
      *  @productversion FlexJS 0.0
      */
     COMPILE::SWF
-	public class ApplicationFactory extends MovieClip
+	public class ApplicationFactory extends WrappedMovieClip
 	{
         /**
          *  Constructor.

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/Core/src/main/flex/org/apache/flex/core/BrowserResizeListener.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/BrowserResizeListener.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/BrowserResizeListener.as
index 8c3c456..9dcd96b 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/BrowserResizeListener.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/BrowserResizeListener.as
@@ -83,7 +83,7 @@ COMPILE::SWF
             app = value as Application;
             COMPILE::SWF
             {
-                app.$sprite.stage.addEventListener("resize", resizeHandler);
+                app.$displayObject.stage.addEventListener("resize", resizeHandler);
                 if (ExternalInterface.available && (!isNaN(minWidth) || !isNaN(minHeight)))
                 {
                     // Get application name.  This assumes that the wrapper is using an
@@ -115,12 +115,12 @@ COMPILE::SWF
             {
                 var initialView:UIBase = app.initialView as UIBase;
                 if (!isNaN(initialView.percentWidth) && !isNaN(initialView.percentHeight))
-                    initialView.setWidthAndHeight(Math.max(minWidth, app.$sprite.stage.stageWidth), 
-                        Math.max(minHeight, app.$sprite.stage.stageHeight), true);
+                    initialView.setWidthAndHeight(Math.max(minWidth, app.$displayObject.stage.stageWidth), 
+                        Math.max(minHeight, app.$displayObject.stage.stageHeight), true);
                 else if (!isNaN(initialView.percentWidth))
-                    initialView.setWidth(Math.max(minWidth, app.$sprite.stage.stageWidth));
+                    initialView.setWidth(Math.max(minWidth, app.$displayObject.stage.stageWidth));
                 else if (!isNaN(initialView.percentHeight))
-                    initialView.setHeight(Math.max(minHeight, app.$sprite.stage.stageHeight));
+                    initialView.setHeight(Math.max(minHeight, app.$displayObject.stage.stageHeight));
             }
             COMPILE::JS
             {

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/Core/src/main/flex/org/apache/flex/core/CSSShape.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/CSSShape.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/CSSShape.as
index c024822..a2791fa 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/CSSShape.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/CSSShape.as
@@ -24,9 +24,8 @@ package org.apache.flex.core
     
     import org.apache.flex.core.IChild;
     import org.apache.flex.events.Event;
-    import org.apache.flex.utils.CSSBorderUtils;
-    import org.apache.flex.events.Event;        
     import org.apache.flex.events.EventDispatcher;
+    import org.apache.flex.utils.CSSBorderUtils;
     
     /**
      *  The Border class is a class used internally by many
@@ -39,7 +38,7 @@ package org.apache.flex.core
      *  @productversion FlexJS 0.0
      */
     COMPILE::SWF
-	public class CSSShape extends EventDispatcher implements IStyleableObject, IChild
+	public class CSSShape extends Shape implements IStyleableObject
 	{
         /**
          *  Constructor.
@@ -51,103 +50,8 @@ package org.apache.flex.core
          */
 		public function CSSShape()
 		{
-			_shape = new WrappedShape();
-            _shape.flexjs_wrapper = this;
 		}
 
-        private var _shape:WrappedShape;
-        public function get $diplayObject():DisplayObject
-        {
-            return _shape;
-        }
-
-        public function get $shape():Shape
-        {
-            return _shape;
-        }
-
-        /**
-         *  @copy org.apache.flex.core.HTMLElementWrapper#element
-         *  
-         *  @langversion 3.0
-         *  @playerversion Flash 10.2
-         *  @playerversion AIR 2.6
-         *  @productversion FlexJS 0.0
-         */
-        public function get element():IFlexJSElement
-        {
-            return _shape;
-        }
-
-        private var _parent:IParent;
-        public function get parent():IParent
-        {
-            return _parent;
-        }
-        public function set parent(val:IParent):void
-        {
-            _parent = val;
-        }
-
-        public function get width():Number
-        {
-            return _shape.width;
-        }
-
-        public function set width(value:Number):void
-        {
-            _shape.width = value;
-        }
-
-        public function get height():Number
-        {
-            return _shape.height;
-        }
-
-        public function set height(value:Number):void
-        {
-            _shape.height = value;
-        }
-
-        public function get x():Number
-        {
-            return _shape.x;
-        }
-
-        public function set x(value:Number):void
-        {
-            _shape.x = value;
-        }
-
-        public function get y():Number
-        {
-            return _shape.y;
-        }
-
-        public function set y(value:Number):void
-        {
-            _shape.y = value;
-        }        
-
-        public function get visible():Boolean
-        {
-            return _shape.visible;
-        }
-
-        public function set visible(value:Boolean):void
-        {
-            _shape.visible = value;
-        }
-        public function get alpha():Number
-        {
-            return _shape.alpha;
-        }
-
-        public function set alpha(value:Number):void
-        {
-            _shape.alpha = value;
-        }        
-
         private var _id:String;
         
         /**
@@ -254,7 +158,7 @@ package org.apache.flex.core
          */
         public function draw(w:Number, h:Number):void
         {
-            CSSBorderUtils.draw(_shape.graphics, w, h, this, state, true);            
+            CSSBorderUtils.draw(graphics, w, h, this, state, true);            
         }
    	}
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/Core/src/main/flex/org/apache/flex/core/CSSSprite.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/CSSSprite.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/CSSSprite.as
index c9e0742..35711bc 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/CSSSprite.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/CSSSprite.as
@@ -18,8 +18,15 @@
 ////////////////////////////////////////////////////////////////////////////////
 package org.apache.flex.core
 {
+<<<<<<< HEAD
     import flash.display.DisplayObject;
+=======
+    COMPILE::SWF
+    {
+>>>>>>> refactor again so UIHTMLElementWrapper is the base for all exposed components, but CSSShape and friend are simple subclasses of Flash display objects and are directly added to the display list
     import flash.display.Graphics;
+    import flash.display.Sprite;
+    }
     
     import org.apache.flex.core.IChild;
     import org.apache.flex.events.Event;
@@ -37,7 +44,7 @@ package org.apache.flex.core
      *  @productversion FlexJS 0.0
      */
     COMPILE::SWF
-	public class CSSSprite extends HTMLElementWrapper implements IStyleableObject, IChild, IParentIUIBase
+	public class CSSSprite extends Sprite implements IStyleableObject
 	{
         /**
          *  Constructor.
@@ -49,7 +56,6 @@ package org.apache.flex.core
          */
 		public function CSSSprite()
 		{
-			super();
 		}		
         
         private var _id:String;
@@ -158,7 +164,11 @@ package org.apache.flex.core
          */
         public function draw(w:Number, h:Number):void
         {
+<<<<<<< HEAD
             CSSBorderUtils.draw($sprite.graphics, w, h,this, state, true);            
+=======
+            CSSBorderUtils.draw(graphics, w, h, this, state, true);            
+>>>>>>> refactor again so UIHTMLElementWrapper is the base for all exposed components, but CSSShape and friend are simple subclasses of Flash display objects and are directly added to the display list
         }
 		
 		/**

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/Core/src/main/flex/org/apache/flex/core/CSSTextField.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/CSSTextField.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/CSSTextField.as
index effb787..87dfafd 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/CSSTextField.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/CSSTextField.as
@@ -41,7 +41,7 @@ package org.apache.flex.core
      *  @productversion FlexJS 0.0
      */
     COMPILE::SWF
-	public class CSSTextField extends EventDispatcher
+	public class CSSTextField extends TextField
 	{
         /**
          *  Constructor.
@@ -53,292 +53,8 @@ package org.apache.flex.core
          */
 		public function CSSTextField()
 		{
-			_textField = new WrappedTextField();
-            _textField.flexjs_wrapper = this;
-
 		}
 
-        private var _textField:WrappedTextField;
-        
-        public function get $textField():TextField
-        {
-            return _textField;
-        }
-        
-
-        public function get $displayObject():DisplayObject
-        {
-            return _textField;
-        }
-        
-        /**
-         *  @copy org.apache.flex.core.HTMLElementWrapper#element
-         *  
-         *  @langversion 3.0
-         *  @playerversion Flash 10.2
-         *  @playerversion AIR 2.6
-         *  @productversion FlexJS 0.0
-         */
-        public function get element():IFlexJSElement
-        {
-            return _textField;
-        }
-
-        private var _parent:IParent;
-        public function get parent():IParent
-        {
-            return _parent;
-        }
-        public function set parent(val:IParent):void
-        {
-            _parent = val;
-        }
-
-        public function get width():Number
-        {
-            return _textField.width;
-        }
-
-        public function set width(value:Number):void
-        {
-            _textField.width = value;
-        }
-
-        public function get height():Number
-        {
-            return _textField.height;
-        }
-
-        public function set height(value:Number):void
-        {
-            _textField.height = value;
-        }
-
-        public function get x():Number
-        {
-            return _textField.x;
-        }
-
-        public function set x(value:Number):void
-        {
-            _textField.x = value;
-        }
-
-        public function get y():Number
-        {
-            return _textField.y;
-        }
-
-        public function set y(value:Number):void
-        {
-            _textField.y = value;
-        }
-
-        public function get visible():Boolean
-        {
-            return _textField.visible;
-        }
-
-        public function set visible(value:Boolean):void
-        {
-            _textField.visible = value;
-        }
-
-        public function get alpha():Number
-        {
-            return _textField.alpha;
-        }
-
-        public function set alpha(value:Number):void
-        {
-            _textField.alpha = value;
-        }
-
-        public function get embedFonts():Boolean
-        {
-            return _textField.embedFonts;
-        }
-
-        public function set embedFonts(value:Boolean):void
-        {
-            _textField.embedFonts = value;
-        }
-
-        public function get selectable():Boolean
-        {
-            return _textField.selectable;
-        }
-
-        public function set selectable(value:Boolean):void
-        {
-            _textField.selectable = value;
-        }
-
-        public function get type():String
-        {
-            return _textField.type;
-        }
-
-        public function set type(value:String):void
-        {
-            _textField.type = value;
-        }
-
-        public function get mouseEnabled():Boolean
-        {
-            return _textField.mouseEnabled;
-        }
-
-        public function set mouseEnabled(value:Boolean):void
-        {
-            _textField.mouseEnabled = value;
-        }
-
-        public function get autoSize():String
-        {
-            return _textField.autoSize;
-        }
-
-        public function set autoSize(value:String):void
-        {
-            _textField.autoSize = value;
-        }
-
-        public function get textColor():uint
-        {
-            return _textField.textColor;
-        }
-
-        public function set textColor(value:uint):void
-        {
-            _textField.textColor = value;
-        }
-
-        public function get textWidth():Number
-        {
-            return _textField.textWidth;
-        }
-
-        public function get textHeight():Number
-        {
-            return _textField.textHeight;
-        }
-
-        public function get wordWrap():Boolean
-        {
-            return _textField.wordWrap;
-        }
-
-        public function set wordWrap(value:Boolean):void
-        {
-            _textField.wordWrap = value;
-        }
-
-        public function get multiline():Boolean
-        {
-            return _textField.multiline;
-        }
-
-        public function set multiline(value:Boolean):void
-        {
-            _textField.multiline = value;
-        }
-
-        public function get restrict():String
-        {
-            return _textField.restrict;
-        }
-
-        public function set restrict(value:String):void
-        {
-            _textField.restrict = value;
-        }
-
-        public function get maxChars():int
-        {
-            return _textField.maxChars;
-        }
-
-        public function set maxChars(value:int):void
-        {
-            _textField.maxChars = value;
-        }
-
-        public function get displayAsPassword():Boolean
-        {
-            return _textField.displayAsPassword;
-        }
-
-        public function set displayAsPassword(value:Boolean):void
-        {
-            _textField.displayAsPassword = value;
-        }
-
-        public function get htmlText():String
-        {
-            return _textField.htmlText;
-        }
-
-        public function set htmlText(value:String):void
-        {
-            _textField.htmlText = value;
-        }
-
-        public function get name():String
-        {
-            return _textField.name;
-        }
-
-        public function set name(value:String):void
-        {
-            _textField.name = value;
-        }
-
-        public function get background():Boolean
-        {
-            return _textField.background;
-        }
-
-        public function set background(value:Boolean):void
-        {
-            _textField.background = value;
-        }
-
-        public function get backgroundColor():uint
-        {
-            return _textField.backgroundColor;
-        }
-
-        public function set backgroundColor(value:uint):void
-        {
-            _textField.backgroundColor = value;
-        }
-
-        public function get border():Boolean
-        {
-            return _textField.border;
-        }
-
-        public function set border(value:Boolean):void
-        {
-            _textField.border = value;
-        }
-
-        public function get borderColor():uint
-        {
-            return _textField.borderColor;
-        }
-
-        public function set borderColor(value:uint):void
-        {
-            _textField.borderColor = value;
-        }
-
-        public function get numLines():int
-        {
-            return _textField.numLines;
-        }
-
         /**
          *  @private
          *  The styleParent property is set if the CSSTextField
@@ -390,7 +106,7 @@ package org.apache.flex.core
         /**
          *  @private
          */
-		public function set text(value:String):void
+		override public function set text(value:String):void
 		{
 			var sp:Object = parent;
 			if (styleParent)
@@ -413,32 +129,27 @@ package org.apache.flex.core
             var align:Object = ValuesManager.valuesImpl.getValue(sp, "text-align", styleState);
             if (align == "center")
 			{
-				_textField.autoSize = TextFieldAutoSize.NONE;
+				autoSize = TextFieldAutoSize.NONE;
                 tf.align = "center";
 			}
             else if (align == "right")
 			{
                 tf.align = "right";
-				_textField.autoSize = TextFieldAutoSize.NONE;
+				autoSize = TextFieldAutoSize.NONE;
 			}
             if (!parentDrawsBackground)
             {
                 var backgroundColor:Object = ValuesManager.valuesImpl.getValue(sp, "background-color", styleState);
                 if (backgroundColor != null)
                 {
-                    _textField.background = true;
-                    _textField.backgroundColor = CSSUtils.toColor(backgroundColor);
+                    background = true;
+                    backgroundColor = CSSUtils.toColor(backgroundColor);
                 }
             }
-			_textField.defaultTextFormat = tf;
-			_textField.text = value;
+			defaultTextFormat = tf;
+			text = value;
 		}
 
-        public function get text():String
-        {
-            return _textField.text;
-        }
-
         private function updateStyles(event:Event):void
         {
             // force styles to be re-calculated

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/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 5b6cc26..0dd0b53 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):IChild
         {
             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:IChild):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:IChild, 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:IChild, 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:IChild, 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:IChild, 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:IChild, 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:IChild, 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:IChild):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):IChild
 		{
 			return super.getElementAt(index);
 		}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/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 93e5c53..e961c1f 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:IChild, 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:IChild, 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:IChild, 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:IChild):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):IChild
 		{
 			return owner.$getElementAt(index);
 		}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/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 962a11d..5888a94 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::SWF
             {
                 _shape = new flash.display.Shape();
-                this.addElement(_shape);
+                $displayObjectContainer.addChild(_shape);
             }
 		}
 		

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/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 4879f42..1b42a83 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
@@ -18,12 +18,6 @@
 ////////////////////////////////////////////////////////////////////////////////
 package org.apache.flex.core
 {
-    COMPILE::SWF
-    {
-        import flash.display.DisplayObject;
-        import flash.display.Sprite;
-    }
-        
     COMPILE::JS
     {
         import window.Event;
@@ -36,119 +30,98 @@ package org.apache.flex.core
     import org.apache.flex.events.EventDispatcher;
 
     COMPILE::SWF
-    public class HTMLElementWrapper extends EventDispatcher
+    public class HTMLElementWrapper extends EventDispatcher implements IStrand
     {
         public function HTMLElementWrapper()
         {
-            _sprite = new WrappedSprite();
-            _sprite.flexjs_wrapper = this;
         }
 
-        private var _sprite:WrappedSprite;
+        //--------------------------------------
+        //   Property
+        //--------------------------------------
         
-        public function get $sprite():Sprite
-        {
-            return _sprite;
-        }
+        protected var _element:IFlexJSElement;
         
-        public function get $displayObject():DisplayObject
+        public function get element():IFlexJSElement
         {
-            return _sprite;
+            return _element;
         }
-
-        /**
-         *  Returns the IFlexJSElement which wraps the Display Object
-         *  
-         *  @langversion 3.0
-         *  @playerversion Flash 10.2
-         *  @playerversion AIR 2.6
-         *  @productversion FlexJS 0.0
-         */
-        public function get element():IFlexJSElement
+        
+        public function set element(value:IFlexJSElement):void
         {
-            return _sprite;
+            _element = value;
         }
-
-        protected var _elements:Array;
-
+        
+        protected var _beads:Vector.<IBead>;
+        
+        //--------------------------------------
+        //   Function
+        //--------------------------------------
+        
         /**
-         * "abstract" method so we can override in JS
          * @param bead The new bead.
          */
         public function addBead(bead:IBead):void
-        {            
-        }
-
-        private var _parent:IParent;
-        public function get parent():IParent
-        {
-            return _parent;
-        }
-        public function set parent(val:IParent):void
-        {
-            _parent = val;
-        }
-
-        public function get width():Number
-        {
-            return _sprite.width;
-        }
-
-        public function set width(value:Number):void
-        {
-            _sprite.width = value;
-        }
-
-        public function get height():Number
-        {
-            return _sprite.height;
-        }
-
-        public function set height(value:Number):void
         {
-            _sprite.height = value;
-        }
-
-        public function get x():Number
-        {
-            return _sprite.x;
-        }
-
-        public function set x(value:Number):void
-        {
-            _sprite.x = value;
-        }
-
-        public function get y():Number
-        {
-            return _sprite.y;
+            if (!_beads)
+            {
+                _beads = new Vector.<IBead>();
+            }
+            
+            _beads.push(bead);
+            bead.strand = this;
         }
-
-        public function set y(value:Number):void
-        {
-            _sprite.y = value;
-        }        
-
-        public function get visible():Boolean
+        
+        /**
+         * @param classOrInterface The requested bead type.
+         * @return The bead.
+         */
+        public function getBeadByType(classOrInterface:Class):IBead
         {
-            return _sprite.visible;
+            var bead:IBead, i:uint, n:uint;
+            
+            if (!_beads) return null;
+            
+            n = _beads.length;
+            
+            for (i = 0; i < n; i++)
+            {
+                bead = _beads[i];
+                
+                if (bead is classOrInterface)
+                {
+                    return bead;
+                }
+            }
+            
+            return null;
         }
-
-        public function set visible(value:Boolean):void
-        {
-            _sprite.visible = value;
-        }        
-
-        public function get alpha():Number
+        
+        /**
+         * @param bead The bead to remove.
+         * @return The bead.
+         */
+        public function removeBead(bead:IBead):IBead
         {
-            return _sprite.alpha;
+            var i:uint, n:uint, value:Object;
+            
+            n = _beads.length;
+            
+            for (i = 0; i < n; i++)
+            {
+                value = _beads[i];
+                
+                if (bead === value)
+                {
+                    _beads.splice(i, 1);
+                    
+                    return bead;
+                }
+            }
+            
+            return null;
         }
-
-        public function set alpha(value:Number):void
-        {
-            _sprite.alpha = value;
-        }        
-
+        
     }
     
 	COMPILE::JS
@@ -198,7 +171,10 @@ package org.apache.flex.core
 		//   Property
 		//--------------------------------------
 
-		private var _element:WrappedHTMLElement;
+        /**
+         * An optimization to skip the getter of the element property
+         */
+		protected var _element:WrappedHTMLElement;
         
         public function get element():WrappedHTMLElement
         {
@@ -210,36 +186,6 @@ package org.apache.flex.core
             _element = value;
         }
         
-        /**
-         * allow access from overrides
-         */
-		protected var _model:IBeadModel;
-        
-        /**
-         * @flexjsignorecoercion Class 
-         * @flexjsignorecoercion org.apache.flex.core.IBeadModel 
-         */
-        public function get model():Object
-        {
-            if (_model == null) 
-            {
-                // addbead will set _model
-                var m:Class = org.apache.flex.core.ValuesManager.valuesImpl.
-                        getValue(this, 'iBeadModel') as Class;
-                var b:IBeadModel = new m() as IBeadModel;
-                addBead(b);
-            }
-            return _model;
-        }
-        
-        public function set model(value:Object):void
-        {
-            if (_model != value)
-            {
-                addBead(value as IBead);
-                dispatchEvent(new org.apache.flex.events.Event("modelChanged"));
-            }
-        }
 
 		protected var _beads:Vector.<IBead>;
         
@@ -258,12 +204,6 @@ package org.apache.flex.core
 			}
 
 			_beads.push(bead);
-
-			if (bead is IBeadModel)
-			{
-				_model = bead as IBeadModel;
-			}
-
 			bead.strand = this;
 		}
 

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/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 f1e893b..30a358f 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
@@ -18,7 +18,10 @@
 ////////////////////////////////////////////////////////////////////////////////
 package org.apache.flex.core
 {
-    
+COMPILE::SWF
+{
+    import flash.display.DisplayObject;       
+}
     /**
      *  The IChild interface is the basic interface for a 
      *  component that is parented by another component.
@@ -40,5 +43,15 @@ package org.apache.flex.core
          *  @productversion FlexJS 0.0
          */
         function get parent():IParent;
+        
+        COMPILE::SWF
+        function get $displayObject():DisplayObject;
+        
+        COMPILE::JS
+        function get element():IFlexJSElement;
+
+        COMPILE::JS
+        function get positioner():WrappedHTMLElement;
+        
 	}
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/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..364f971 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
@@ -17,8 +17,8 @@
 //
 ////////////////////////////////////////////////////////////////////////////////
 package org.apache.flex.core
-{
-	public interface IContentView
+{    
+	public interface IContentView extends IParent
 	{
 		function get x():Number;
 		function set x(value:Number):void;
@@ -32,7 +32,6 @@ package org.apache.flex.core
 		function get height():Number;
 		function set height(value:Number):void;
 
-		function addElement(value:Object, dispatchEvent:Boolean = true):void;
 		function removeAllElements():void;
 	}
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IFlexJSElement.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IFlexJSElement.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IFlexJSElement.as
index 1136297..9963c4e 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IFlexJSElement.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IFlexJSElement.as
@@ -33,7 +33,8 @@ package org.apache.flex.core
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.7
          */
-        //function get flexjs_wrapper():Object;
+        function get flexjs_wrapper():HTMLElementWrapper;
+        function set flexjs_wrapper(value:HTMLElementWrapper):void;
     }
 
 	COMPILE::JS

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/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..ddd8bbd 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, IChild
 	{
         /**
          *  The data item to be displayed by the item renderer.

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/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..9b0a09b 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:IChild, 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:IChild, 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:IChild):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:IChild, 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):IChild;
 
     }
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ISWFApplication.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ISWFApplication.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ISWFApplication.as
index 272d6b6..41e1beb 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ISWFApplication.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ISWFApplication.as
@@ -18,10 +18,6 @@
 ////////////////////////////////////////////////////////////////////////////////
 package org.apache.flex.core
 {
-COMPILE::SWF
-{
-	import flash.display.Sprite;
-}
 
     /**
      *  Interface for bootstrapping SWF Applications.
@@ -42,7 +38,7 @@ COMPILE::SWF
          *  @productversion FlexJS 0.0
          */
 		COMPILE::SWF
-		function setRoot(root:Sprite):void;
+		function setRoot(root:WrappedMovieClip):void;
         
     }
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/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 60b3029..7e566d1 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
@@ -32,55 +32,10 @@ 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, IChild
 	{
 
         /**
-         *  
-         *  @private
-         */
-        COMPILE::SWF
-        function get $displayObject():DisplayObject;
-        /**
-         *  Each IUIBase has an element that is actually added to
-         *  the platform's display list DOM.  It may not be the actual
-         *  component itself.
-         *  
-         *  @langversion 3.0
-         *  @playerversion Flash 10.2
-         *  @playerversion AIR 2.6
-         *  @productversion FlexJS 0.0
-         */
-        COMPILE::SWF
-        function get element():IFlexJSElement;
-        
-        /**
-         *  Each IUIBase has an element that is actually added to
-         *  the platform's display list DOM.  It may not be the actual
-         *  component itself.
-         *  
-         *  @langversion 3.0
-         *  @playerversion Flash 10.2
-         *  @playerversion AIR 2.6
-         *  @productversion FlexJS 0.0
-         */
-        COMPILE::JS
-        function get element():WrappedHTMLElement;
-        
-        /**
-         *  Each IUIBase has an element that is actually added to
-         *  the platform's display list DOM.  It may not be the actual
-         *  component itself.
-         *  
-         *  @langversion 3.0
-         *  @playerversion Flash 10.2
-         *  @playerversion AIR 2.6
-         *  @productversion FlexJS 0.0
-         */
-        COMPILE::JS
-        function get positioner():WrappedHTMLElement;
-        
-        /**
          *  Called by parent components when the component is
          *  added via a call to addElement or addElementAt.
          *  

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/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 dbdcace..f9c0aaa 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:IChild, 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:IChild, 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:IChild, 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:IChild):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):IChild
 		{
 			return super.getElementAt(index);
 		}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/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 e8f2fa5..b1748f9 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:IChild, 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:IChild, 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:IChild, 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:IChild):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):IChild
 		{
 			return owner.$getElementAt(index);
 		}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/Core/src/main/flex/org/apache/flex/core/SimpleApplication.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/SimpleApplication.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/SimpleApplication.as
index 93af131..770d0b2 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/SimpleApplication.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/SimpleApplication.as
@@ -75,9 +75,9 @@ package org.apache.flex.core
 		}
         
 		COMPILE::SWF
-        public function setRoot(r:Sprite):void
+        public function setRoot(r:WrappedMovieClip):void
         {
-			$sprite = r;
+			element = r;
 			start();
         }
         

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/Core/src/main/flex/org/apache/flex/core/SimpleCSSValuesImpl.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/SimpleCSSValuesImpl.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/SimpleCSSValuesImpl.as
index dd1f3d1..7435ef4 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/SimpleCSSValuesImpl.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/SimpleCSSValuesImpl.as
@@ -706,6 +706,7 @@ package org.apache.flex.core
         /**
          * @param thisObject The object to apply styles to;
          * @param styles The styles.
+         * @flexjsignorecoercion HTMLElement
          */
         COMPILE::JS
         public function applyStyles(thisObject:IUIBase, styles:Object):void
@@ -734,7 +735,7 @@ package org.apache.flex.core
                     if (p.indexOf('url') !== 0)
                         value = 'url(' + value + ')';
                 }
-                thisObject.element.style[p] = value;
+                (thisObject.element as HTMLElement).style[p] = value;
             }
         }
 	}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/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..81b8f81 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
@@ -83,6 +83,9 @@ package org.apache.flex.core
                 IStatesObject(_strand).currentState));
         }		
      
+        /**
+         * @flexjsignorecoercion org.apache.flex.core.IStatesObject 
+         */
         private function stateChangeHandler(event:ValueChangeEvent):void
         {
             if (!sawInitComplete)
@@ -109,6 +112,9 @@ package org.apache.flex.core
             doc.dispatchEvent(new Event("stateChangeComplete"));
         }
         
+        /**
+         * @flexjsignorecoercion org.apache.flex.core.IParent
+         */
         private function revert(s:State):void
         {
             var arr:Array = s.overrides;
@@ -148,6 +154,11 @@ package org.apache.flex.core
             }
         }
         
+        /**
+         * @flexjsignorecoercion org.apache.flex.core.IChild 
+         * @flexjsignorecoercion org.apache.flex.core.IParent
+         * @flexjsignorecoercion Array
+         */
         private function apply(s:State):void
         {
             var arr:Array = s.overrides;
@@ -174,7 +185,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/472c7af2/frameworks/projects/Core/src/main/flex/org/apache/flex/core/StyleableCSSTextField.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/StyleableCSSTextField.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/StyleableCSSTextField.as
index 0d6841b..d362d60 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/StyleableCSSTextField.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/StyleableCSSTextField.as
@@ -34,7 +34,7 @@ package org.apache.flex.core
      *  @productversion FlexJS 0.0
      */
     COMPILE::SWF
-	public class StyleableCSSTextField extends CSSTextField implements IStyleableObject, IChild
+	public class StyleableCSSTextField extends CSSTextField implements IStyleableObject
 	{
         /**
          *  Constructor.
@@ -66,10 +66,10 @@ package org.apache.flex.core
          */
         public var CSSParent:Object;
         
-        override public function get parent():IParent
+        override public function get parent():DisplayObjectContainer
         {
             if (CSSParent)
-                return CSSParent as IParent;
+                return CSSParent as DisplayObjectContainer;
             
             return super.parent;
         }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/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 5e65dfc..fe303ab 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
@@ -138,7 +138,7 @@ package org.apache.flex.core
      *  @playerversion AIR 2.6
      *  @productversion FlexJS 0.0
      */
-	public class UIBase extends HTMLElementWrapper implements IStrandWithModel, IEventDispatcher, IParentIUIBase, IStyleableObject, ILayoutChild, IFlexJSElement
+	public class UIBase extends UIHTMLElementWrapper implements IStrandWithModel, IEventDispatcher, IParentIUIBase, IStyleableObject, ILayoutChild
 	{
         /**
          *  Constructor.
@@ -157,10 +157,13 @@ package org.apache.flex.core
                 MouseEventConverter.setupInstanceConverters(this);
             }
             
-            COMPILE::JS
-            {
-                createElement();
-            }
+            createElement();
+        }
+        
+        COMPILE::SWF
+        public function get $sprite():Sprite
+        {
+            return $displayObject as Sprite;
         }
         
 		private var _explicitWidth:Number;
@@ -794,42 +797,7 @@ package org.apache.flex.core
         {
             return element.childNodes as Array;
         }
-        
-        COMPILE::SWF
-		private var _model:IBeadModel;
-
-        /**
-         *  An IBeadModel that serves as the data model for the component.
-         *  
-         *  @langversion 3.0
-         *  @playerversion Flash 10.2
-         *  @playerversion AIR 2.6
-         *  @productversion FlexJS 0.0
-         */
-        COMPILE::SWF
-        public function get model():Object
-		{
-            if (_model == null)
-            {
-                // addbead will set _model
-                addBead(new (ValuesManager.valuesImpl.getValue(this, "iBeadModel")) as IBead);
-            }
-			return _model;
-		}
-
-        /**
-         *  @private
-         */
-        COMPILE::SWF
-		public function set model(value:Object):void
-		{
-			if (_model != value)
-			{
-				addBead(value as IBead);
-				dispatchEvent(new Event("modelChanged"));
-			}
-		}
-		
+        		
         private var _view:IBeadView;
         
         /**
@@ -1004,63 +972,19 @@ package org.apache.flex.core
          */        
 		override public function addBead(bead:IBead):void
 		{
-			if (!_beads)
-				_beads = new Vector.<IBead>;
-			_beads.push(bead);
-			if (bead is IBeadModel)
-				_model = bead as IBeadModel;
-            else if (bead is IBeadView)
+            super.addBead(bead);
+            if (bead is IBeadView)
                 _view = bead as IBeadView;
-			bead.strand = this;
 			
 			if (bead is IBeadView) {
 				IEventDispatcher(this).dispatchEvent(new Event("viewChanged"));
 			}
 		}
 		
-        /**
-         *  @copy org.apache.flex.core.IStrand#getBeadByType()
-         *  
-         *  @langversion 3.0
-         *  @playerversion Flash 10.2
-         *  @playerversion AIR 2.6
-         *  @productversion FlexJS 0.0
-         */
-        COMPILE::SWF
-		public function getBeadByType(classOrInterface:Class):IBead
-		{
-			for each (var bead:IBead in _beads)
-			{
-				if (bead is classOrInterface)
-					return bead;
-			}
-			return null;
-		}
-		
-        /**
-         *  @copy org.apache.flex.core.IStrand#removeBead()
-         *  
-         *  @langversion 3.0
-         *  @playerversion Flash 10.2
-         *  @playerversion AIR 2.6
-         *  @productversion FlexJS 0.0
-         */
-        COMPILE::SWF
-		public function removeBead(value:IBead):IBead	
-		{
-			var n:int = _beads.length;
-			for (var i:int = 0; i < n; i++)
-			{
-				var bead:IBead = _beads[i];
-				if (bead == value)
-				{
-					_beads.splice(i, 1);
-					return bead;
-				}
-			}
-			return null;
-		}
 		
+        // maintain this or just calculate it from the displayobject children on demand?
+        private var _elements:Array;
+        
         /**
          *  @copy org.apache.flex.core.IParent#addElement()
          * 
@@ -1068,16 +992,16 @@ 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:IChild, dispatchEvent:Boolean = true):void
 		{
             COMPILE::SWF
             {
                 if(_elements == null)
                     _elements = [];
                 _elements[_elements.length] = c;
-                $sprite.addChild(c.$displayObject);
-                c.parent = this;
+                $displayObjectContainer.addChild(c.$displayObject);
                 if (c is IUIBase)
                 {
                     IUIBase(c).addedToParent();
@@ -1087,7 +1011,7 @@ package org.apache.flex.core
             COMPILE::JS
             {
                 element.appendChild(c.positioner);
-                c.addedToParent();
+                (c as IUIBase).addedToParent();
             }
 		}
         
@@ -1098,8 +1022,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:IChild, index:int, dispatchEvent:Boolean = true):void
         {
             COMPILE::SWF
             {
@@ -1107,12 +1032,11 @@ package org.apache.flex.core
                     _elements = [];
                 _elements.splice(index,0,c);
 
-                $sprite.addChildAt(c.$sprite,index);
-                c.parent = this;
+                $displayObjectContainer.addChildAt(c.$displayObject,index);
 
                 if (c is IUIBase)
                 {
-                    IUIBase(c).addedToParent();
+                    (c as IUIBase).addedToParent();
                 }
             }
             COMPILE::JS
@@ -1124,7 +1048,7 @@ package org.apache.flex.core
                 {
                     element.insertBefore(c.positioner,
                         children[index]);
-                    c.addedToParent();
+                    (c as IUIBase).addedToParent();
                 }
             }
         }
@@ -1137,7 +1061,7 @@ package org.apache.flex.core
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.0
          */
-        public function getElementAt(index:int):Object
+        public function getElementAt(index:int):IChild
         {
             COMPILE::SWF
             {
@@ -1160,7 +1084,7 @@ package org.apache.flex.core
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.0
          */
-        public function getElementIndex(c:Object):int
+        public function getElementIndex(c:IChild):int
         {
             COMPILE::SWF
             {
@@ -1188,8 +1112,9 @@ package org.apache.flex.core
          *  @playerversion Flash 10.2
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.0
+         *  @flexjsignorecoercion HTMLElement
          */
-        public function removeElement(c:Object, dispatchEvent:Boolean = true):void
+        public function removeElement(c:IChild, dispatchEvent:Boolean = true):void
         {
             COMPILE::SWF
             {
@@ -1198,13 +1123,12 @@ package org.apache.flex.core
                     var idx:int = _elements.indexOf(c);
                     if(idx>=0)
                         _elements.splice(idx,1);
-                    c.parent = null;
                 }
-                $sprite.removeChild(c.$sprite as DisplayObject);
+                $displayObjectContainer.removeChild(c.$displayObject as DisplayObject);
             }
             COMPILE::JS
             {
-                element.removeChild(c.element);
+                element.removeChild(c.element as HTMLElement);
             }
         }
 		
@@ -1367,7 +1291,7 @@ package org.apache.flex.core
             {
                 if (!_stageProxy)
                 {
-                    _stageProxy = new StageProxy($sprite.stage);
+                    _stageProxy = new StageProxy($displayObject.stage);
                     _stageProxy.addEventListener("removedFromStage", stageProxy_removedFromStageHandler);
                 }
                 
@@ -1394,44 +1318,31 @@ package org.apache.flex.core
             dispatchEvent(event);
         }
         
-        COMPILE::JS
-        private var _positioner:WrappedHTMLElement;
-        
-        /**
-         * The HTMLElement used to position the component.
-         */
-        COMPILE::JS
-        public function get positioner():WrappedHTMLElement
-        {
-            return _positioner;
-        }
-        
-        /**
-         * @private
-         */
-        COMPILE::JS
-        public function set positioner(value:WrappedHTMLElement):void
-        {
-            _positioner = value;
-        }
-        
         /**
          * @return The actual element to be parented.
          * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement
          */
-        COMPILE::JS
-        protected function createElement():WrappedHTMLElement
+        protected function createElement():IFlexJSElement
         {
-            if (element == null)
-                element = document.createElement('div') as WrappedHTMLElement;
-            if (positioner == null)
-                positioner = element;
-            positioner.style.display = 'block';
-            positioner.style.position = 'relative';
-            
-            element.flexjs_wrapper = this;
-            
-            return positioner;
+			COMPILE::SWF
+			{
+				element = new WrappedSprite();
+				element.flexjs_wrapper = this;
+                return element;
+			}
+			COMPILE::JS
+			{
+	            if (element == null)
+	                element = document.createElement('div') as WrappedHTMLElement;
+	            if (positioner == null)
+	                positioner = element;
+	            positioner.style.display = 'block';
+	            positioner.style.position = 'relative';
+	            
+	            element.flexjs_wrapper = this;
+	            
+	            return positioner;
+			}
         }
         
         /**
@@ -1463,18 +1374,5 @@ package org.apache.flex.core
             ValuesManager.valuesImpl.applyStyles(this, newStyle);
         };
 
-        /**
-         * @param value The event containing new style properties.
-         * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement
-         * @flexjsignorecoercion org.apache.flex.core.IParent
-         */
-        COMPILE::JS
-        public function get parent():IParent
-        {
-            var p:WrappedHTMLElement = this.positioner.parentNode as WrappedHTMLElement;
-            var wrapper:IParent = p ? p.flexjs_wrapper as IParent : null;
-            return wrapper;
-        }
-
 	}
 }