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/04 04:46:09 UTC

[1/3] git commit: [flex-asjs] [refs/heads/refactor-sprite] - implement event proxy for wrapped elements. Most events will be forwarded, but some events in bubble phase cannot be forwarded because you can't set the event.target in Flash. Instead, you wi

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


implement event proxy for wrapped elements.  Most events will be forwarded, but some events in bubble phase cannot be forwarded because you can't set the event.target in Flash.  Instead, you will have to use the isSameTarget method to compare targets


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

Branch: refs/heads/refactor-sprite
Commit: 68453ef1d189c52d37ddbe736b15e5efec2f809c
Parents: 5e60e10
Author: Alex Harui <ah...@apache.org>
Authored: Tue Aug 2 23:25:21 2016 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Tue Aug 2 23:25:21 2016 -0700

----------------------------------------------------------------------
 .../org/apache/flex/core/HTMLElementWrapper.as  | 44 ++++++++++++-
 .../org/apache/flex/events/ElementEvents.as     | 18 ++++++
 .../main/flex/org/apache/flex/events/Event.as   | 51 +++++++++++++--
 .../flex/org/apache/flex/events/IFlexJSEvent.as | 48 ++++++++++++++
 .../flex/org/apache/flex/events/MouseEvent.as   | 67 +++++++++++++++++++-
 .../org/apache/flex/events/ItemAddedEvent.as    |  3 +-
 .../org/apache/flex/events/ItemClickedEvent.as  |  3 +-
 .../org/apache/flex/events/ItemRemovedEvent.as  |  3 +-
 .../beads/controllers/DropDownListController.as | 21 +++---
 9 files changed, 235 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/68453ef1/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 1b42a83..8d5dfc2 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
@@ -26,7 +26,15 @@ package org.apache.flex.core
         import goog.events;
         import goog.events.EventTarget;
     }
-    import org.apache.flex.events.Event;        
+    COMPILE::SWF
+    {
+        import flash.events.Event;
+        import flash.events.IEventDispatcher;
+        import org.apache.flex.events.ElementEvents;
+        import org.apache.flex.events.IFlexJSEvent;
+    }
+    
+    import org.apache.flex.events.Event;
     import org.apache.flex.events.EventDispatcher;
 
     COMPILE::SWF
@@ -122,6 +130,40 @@ package org.apache.flex.core
             return null;
         }
         
+        override public function addEventListener(type:String, handler:Function, opt_capture:Boolean = false, priority:int = 0, weak:Boolean = false):void
+        {
+            var source:IEventDispatcher = getActualDispatcher_(type) as IEventDispatcher;
+            if (source != this)
+                source.addEventListener(type, forwarder, opt_capture);
+            
+            super.addEventListener(type, handler, opt_capture);
+        }
+        
+        override public function removeEventListener(type:String, handler:Function, opt_capture:Boolean = false):void
+        {
+            var source:IEventDispatcher = getActualDispatcher_(type) as IEventDispatcher;
+            if (source != this)
+                source.removeEventListener(type, handler, opt_capture);
+            
+            super.removeEventListener(type, handler, opt_capture);
+        }
+        
+        private function getActualDispatcher_(type:String):IEventDispatcher
+        {
+            var source:IEventDispatcher = this;
+            if (ElementEvents.elementEvents[type]) {
+                // mouse and keyboard events also dispatch off the element.
+                source = this.element as IEventDispatcher;
+            }
+            return source;
+        }
+        
+        private function forwarder(event:flash.events.Event):void
+        {
+            if (event is IFlexJSEvent)
+                event = IFlexJSEvent(event).cloneEvent() as flash.events.Event;
+            dispatchEvent(event);
+        }
     }
     
 	COMPILE::JS

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/68453ef1/frameworks/projects/Core/src/main/flex/org/apache/flex/events/ElementEvents.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/events/ElementEvents.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/events/ElementEvents.as
index ad510fc..157e3b0 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/events/ElementEvents.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/events/ElementEvents.as
@@ -23,6 +23,24 @@ package org.apache.flex.events
 	COMPILE::SWF
 	public class ElementEvents
 	{
+        //--------------------------------------
+        //   Static Property
+        //--------------------------------------
+        
+        static public const elementEvents:Object = {
+            'click': 1,
+            'change': 1,
+            'keyup': 1,
+            'keydown': 1,
+            'load': 1,
+            'mouseover': 1,
+            'mouseout': 1,
+            'mouseup': 1,
+            'mousedown': 1,
+            'mousemove': 1,
+            'rollover': 1,
+            'rollout': 1
+        };
 	}
 
 	COMPILE::JS

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/68453ef1/frameworks/projects/Core/src/main/flex/org/apache/flex/events/Event.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/events/Event.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/events/Event.as
index 5d8c81e..e27a88e 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/events/Event.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/events/Event.as
@@ -18,6 +18,8 @@
 ////////////////////////////////////////////////////////////////////////////////
 package org.apache.flex.events
 {
+    import org.apache.flex.core.IFlexJSElement;
+
     COMPILE::SWF {
         import flash.events.Event;
     }
@@ -40,7 +42,7 @@ package org.apache.flex.events
 	 * @productversion FlexJS 0.0
 	 */
 	COMPILE::SWF
-	public class Event extends flash.events.Event
+	public class Event extends flash.events.Event implements IFlexJSEvent
 	{
 
 		//--------------------------------------
@@ -83,7 +85,7 @@ package org.apache.flex.events
 		 */
 		public override function clone():flash.events.Event
 		{
-			return cloneEvent();
+			return cloneEvent() as flash.events.Event;
 		}
 
 		/**
@@ -94,14 +96,33 @@ package org.apache.flex.events
 		 * @playerversion AIR 2.6
 		 * @productversion FlexJS 0.0
 		 */
-		public function cloneEvent():org.apache.flex.events.Event
+		public function cloneEvent():IFlexJSEvent
 		{
 			return new org.apache.flex.events.Event(type, bubbles, cancelable);
 		}
+        
+        /**
+         * Determine if the target is the same as the event's target.  The event's target
+         * can sometimes be an internal target so this tests if the outer component
+         * matches the potential target
+         *
+         * @langversion 3.0
+         * @playerversion Flash 10.2
+         * @playerversion AIR 2.6
+         * @productversion FlexJS 0.0
+         */
+        public function isSameTarget(potentialTarget:IEventDispatcher):Boolean
+        {
+            if (potentialTarget === target) return true;
+            if (target is IFlexJSElement)
+                if (IFlexJSElement(target).flexjs_wrapper === potentialTarget) return true;
+            return false;
+        }
+        
 	}
 
     COMPILE::JS
-    public class Event extends goog.events.Event {
+    public class Event extends goog.events.Event implements IFlexJSEvent {
 
 		public static const CHANGE:String = "change";
 		public static const COMPLETE:String = "complete";
@@ -127,9 +148,29 @@ package org.apache.flex.events
 			throw new Error("stopImmediatePropagation");
 		}
 		
-		public function cloneEvent():org.apache.flex.events.Event
+		public function cloneEvent():IFlexJSEvent
 		{
 			return new org.apache.flex.events.Event(type, bubbles, cancelable);
 		}
+        
+        /**
+         * Determine if the target is the same as the event's target.  The event's target
+         * can sometimes be an internal target so this tests if the outer component
+         * matches the potential target
+         *
+         * @langversion 3.0
+         * @playerversion Flash 10.2
+         * @playerversion AIR 2.6
+         * @productversion FlexJS 0.0
+         * @flexjsignorecoercion Object
+         */
+        public function isSameTarget(potentialTarget:IEventDispatcher):Boolean
+        {
+            if (potentialTarget === target) return true;
+            if (target is IFlexJSElement)
+                if ((target as Object).flexjs_wrapper === potentialTarget) return true;
+            return false;
+        }
+
     }
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/68453ef1/frameworks/projects/Core/src/main/flex/org/apache/flex/events/IFlexJSEvent.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/events/IFlexJSEvent.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/events/IFlexJSEvent.as
new file mode 100644
index 0000000..f230477
--- /dev/null
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/events/IFlexJSEvent.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.events
+{
+
+	/**
+	 * This class simply wraps flash.events.Event so that
+	 * no flash packages are needed on the JS side.
+	 * At runtime, this class is not always the event object
+	 * that is dispatched.  In most cases we are dispatching
+	 * DOMEvents instead, so as long as you don't actually
+	 * check the typeof(event) it will work
+	 *
+	 * @langversion 3.0
+	 * @playerversion Flash 10.2
+	 * @playerversion AIR 2.6
+	 * @productversion FlexJS 0.0
+	 */
+	public interface IFlexJSEvent
+	{
+
+		/**
+		 * Create a copy/clone of the Event object.
+		 *
+		 * @langversion 3.0
+		 * @playerversion Flash 10.2
+		 * @playerversion AIR 2.6
+		 * @productversion FlexJS 0.0
+		 */
+		function cloneEvent():IFlexJSEvent;
+	}
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/68453ef1/frameworks/projects/Core/src/main/flex/org/apache/flex/events/MouseEvent.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/events/MouseEvent.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/events/MouseEvent.as
index e8b3d8c..a6f4e3c 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/events/MouseEvent.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/events/MouseEvent.as
@@ -20,6 +20,7 @@ package org.apache.flex.events
 {
     COMPILE::SWF
     {
+        import flash.events.Event;
         import flash.events.MouseEvent;
 		import flash.display.InteractiveObject;
     }
@@ -27,7 +28,8 @@ package org.apache.flex.events
     {
         import window.MouseEvent;
     }
-
+    
+    import org.apache.flex.core.IFlexJSElement;
     import org.apache.flex.core.IUIBase;
     import org.apache.flex.geom.Point;
     import org.apache.flex.utils.PointUtils;
@@ -42,7 +44,7 @@ package org.apache.flex.events
      *  @productversion FlexJS 0.0
 	 */
 	COMPILE::SWF
-	public class MouseEvent extends flash.events.MouseEvent
+	public class MouseEvent extends flash.events.MouseEvent implements IFlexJSEvent
 	{
         private static function platformConstant(s:String):String
         {
@@ -132,10 +134,53 @@ package org.apache.flex.events
             }
             return _stagePoint.y;
         }
+        
+        /**
+         * @private
+         */
+        public override function clone():flash.events.Event
+        {
+            return cloneEvent() as flash.events.Event;
+        }
+        
+        /**
+         * Create a copy/clone of the Event object.
+         *
+         * @langversion 3.0
+         * @playerversion Flash 10.2
+         * @playerversion AIR 2.6
+         * @productversion FlexJS 0.0
+         */
+        public function cloneEvent():IFlexJSEvent
+        {
+            return new org.apache.flex.events.MouseEvent(type, bubbles, cancelable,
+                localX, localY, relatedObject, ctrlKey, altKey, shiftKey,
+                buttonDown, delta
+                /* got errors for commandKey, commandKey, controlKey, clickCount*/);
+        }
+
+        /**
+         * Determine if the target is the same as the event's target.  The event's target
+         * can sometimes be an internal target so this tests if the outer component
+         * matches the potential target
+         *
+         * @langversion 3.0
+         * @playerversion Flash 10.2
+         * @playerversion AIR 2.6
+         * @productversion FlexJS 0.0
+         */
+        public function isSameTarget(potentialTarget:IEventDispatcher):Boolean
+        {
+            if (potentialTarget === target) return true;
+            if (target is IFlexJSElement)
+                if (IFlexJSElement(target).flexjs_wrapper === potentialTarget) return true;
+            return false;
+        }
+
 	}
 
 	COMPILE::JS
-	public class MouseEvent extends Event
+	public class MouseEvent extends Event implements IFlexJSEvent
 	{
 		private static function platformConstant(s:String):String
 		{
@@ -364,5 +409,21 @@ package org.apache.flex.events
 			return out;
 		};
 
+        /**
+         * Create a copy/clone of the Event object.
+         *
+         * @langversion 3.0
+         * @playerversion Flash 10.2
+         * @playerversion AIR 2.6
+         * @productversion FlexJS 0.0
+         */
+        override public function cloneEvent():IFlexJSEvent
+        {
+            return new org.apache.flex.events.MouseEvent(type, bubbles, cancelable,
+                localX, localY, relatedObject, ctrlKey, altKey, shiftKey,
+                buttonDown, delta
+            /* got errors for commandKey, commandKey, controlKey, clickCount*/);
+        }
+
 	}
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/68453ef1/frameworks/projects/HTML/src/main/flex/org/apache/flex/events/ItemAddedEvent.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/events/ItemAddedEvent.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/events/ItemAddedEvent.as
index a6ae756..d67c406 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/events/ItemAddedEvent.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/events/ItemAddedEvent.as
@@ -21,6 +21,7 @@ package org.apache.flex.events
 {
 
 	import org.apache.flex.events.CustomEvent;
+	import org.apache.flex.events.IFlexJSEvent;
 	
 	/**
 	 * The ItemAddedEvent is dispatched by IItemRendererParent objects whenenver an
@@ -78,7 +79,7 @@ package org.apache.flex.events
 		/**
 		 * @private
 		 */
-		override public function cloneEvent():org.apache.flex.events.Event
+		override public function cloneEvent():IFlexJSEvent
 		{
 			var newEvent:ItemAddedEvent = new ItemAddedEvent(type);
 			newEvent.item = item;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/68453ef1/frameworks/projects/HTML/src/main/flex/org/apache/flex/events/ItemClickedEvent.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/events/ItemClickedEvent.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/events/ItemClickedEvent.as
index febc798..0b7cdce 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/events/ItemClickedEvent.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/events/ItemClickedEvent.as
@@ -21,6 +21,7 @@ package org.apache.flex.events
 {
 
 	import org.apache.flex.events.CustomEvent;
+	import org.apache.flex.events.IFlexJSEvent;
 	
 	/**
 	 * The ItemClickedEvent is a custom event issued by an itemRenderer to
@@ -103,7 +104,7 @@ package org.apache.flex.events
 		/**
 		 * @private
 		 */
-		override public function cloneEvent():org.apache.flex.events.Event
+		override public function cloneEvent():IFlexJSEvent
 		{
 			var newEvent:ItemClickedEvent = new ItemClickedEvent(type);
 			newEvent.index = index;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/68453ef1/frameworks/projects/HTML/src/main/flex/org/apache/flex/events/ItemRemovedEvent.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/events/ItemRemovedEvent.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/events/ItemRemovedEvent.as
index 313f3f9..d5dcb80 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/events/ItemRemovedEvent.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/events/ItemRemovedEvent.as
@@ -21,6 +21,7 @@ package org.apache.flex.events
 {
 
 	import org.apache.flex.events.CustomEvent;
+	import org.apache.flex.events.IFlexJSEvent;
 	
 	/**
 	 * The ItemRemovedEvent is dispatched by IItemRendererParent objects whenenver an
@@ -78,7 +79,7 @@ package org.apache.flex.events
 		/**
 		 * @private
 		 */
-		override public function cloneEvent():org.apache.flex.events.Event
+		override public function cloneEvent():IFlexJSEvent
 		{
 			var newEvent:ItemRemovedEvent = new ItemRemovedEvent(type);
 			newEvent.item = item;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/68453ef1/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/controllers/DropDownListController.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/controllers/DropDownListController.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/controllers/DropDownListController.as
index c279dc5..c84d9d0 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/controllers/DropDownListController.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/controllers/DropDownListController.as
@@ -18,9 +18,6 @@
 ////////////////////////////////////////////////////////////////////////////////
 package org.apache.flex.html.beads.controllers
 {
-	import flash.display.DisplayObject;
-	import flash.geom.Point;
-	
 	import org.apache.flex.core.IBead;
 	import org.apache.flex.core.IBeadController;
 	import org.apache.flex.core.ISelectionModel;
@@ -30,8 +27,10 @@ package org.apache.flex.html.beads.controllers
 	import org.apache.flex.events.Event;
 	import org.apache.flex.events.IEventDispatcher;
 	import org.apache.flex.events.MouseEvent;
-	import org.apache.flex.html.beads.IDropDownListView;
-
+    import org.apache.flex.geom.Point;
+   	import org.apache.flex.html.beads.IDropDownListView;
+    import org.apache.flex.utils.PointUtils;
+    
     /**
      *  The DropDownListController class is the controller for
      *  org.apache.flex.html.DropDownList.  Controllers
@@ -81,22 +80,22 @@ package org.apache.flex.html.beads.controllers
             var viewBead:IDropDownListView = _strand.getBeadByType(IDropDownListView) as IDropDownListView;
             var selectionModel:ISelectionModel = _strand.getBeadByType(ISelectionModel) as ISelectionModel;
             var popUpModel:ISelectionModel = UIBase(viewBead.popUp).model as ISelectionModel;
-            DisplayObject(viewBead.popUp).width = DisplayObject(_strand).width;
+            IUIBase(viewBead.popUp).width = IUIBase(_strand).width;
             popUpModel.dataProvider = selectionModel.dataProvider;
             popUpModel.labelField = selectionModel.labelField;
             viewBead.popUpVisible = true; // adds to display list as well
             popUpModel.selectedIndex = selectionModel.selectedIndex;
-            var pt:Point = new Point(DisplayObject(_strand).x, DisplayObject(_strand).y + DisplayObject(_strand).height);
-            pt = DisplayObject(_strand).parent.localToGlobal(pt);
-			DisplayObject(viewBead.popUp).x = pt.x;
-			DisplayObject(viewBead.popUp).y = pt.y;
+            var pt:Point = new Point(IUIBase(_strand).x, IUIBase(_strand).y + IUIBase(_strand).height);
+            pt = PointUtils.localToGlobal(pt, IUIBase(_strand).parent);
+            IUIBase(viewBead.popUp).x = pt.x;
+            IUIBase(viewBead.popUp).y = pt.y;
             IEventDispatcher(viewBead.popUp).addEventListener("change", changeHandler);
             IUIBase(_strand).topMostEventDispatcher.addEventListener(org.apache.flex.events.MouseEvent.CLICK, dismissHandler);
         }
         
         private function dismissHandler(event:org.apache.flex.events.MouseEvent):void
         {
-            if (event.target == _strand) return;
+            if (event.isSameTarget(_strand as IEventDispatcher)) return;
             
             IUIBase(_strand).topMostEventDispatcher.removeEventListener(org.apache.flex.events.MouseEvent.CLICK, dismissHandler);
             var viewBead:IDropDownListView = _strand.getBeadByType(IDropDownListView) as IDropDownListView;


[2/3] git commit: [flex-asjs] [refs/heads/refactor-sprite] - get events working well enough to get DataBindingExample to function. Now to figure out how to fix up CSS

Posted by ah...@apache.org.
get events working well enough to get DataBindingExample to function.  Now to figure out how to fix up CSS


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

Branch: refs/heads/refactor-sprite
Commit: bd849c42b8561ea9a61b7b4e7fa4c1c9720129e6
Parents: 68453ef
Author: Alex Harui <ah...@apache.org>
Authored: Wed Aug 3 12:30:07 2016 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Wed Aug 3 12:30:07 2016 -0700

----------------------------------------------------------------------
 .../main/flex/org/apache/flex/core/UIBase.as    |  6 ++--
 .../flex/org/apache/flex/core/UIButtonBase.as   |  2 +-
 .../org/apache/flex/events/ElementEvents.as     | 14 ++++----
 .../org/apache/flex/html/beads/CSSButtonView.as | 25 ++++++++------
 .../html/beads/CSSImageAndTextButtonView.as     | 36 +++++++++++---------
 .../org/apache/flex/html/beads/CheckBoxView.as  |  2 +-
 .../apache/flex/html/beads/CloseButtonView.as   | 10 +++---
 .../flex/html/beads/DownArrowButtonView.as      | 28 ++++++++-------
 .../flex/html/beads/HScrollBarThumbView.as      | 20 ++++++-----
 .../flex/html/beads/HScrollBarTrackView.as      | 25 ++++++++------
 .../flex/html/beads/ImageAndTextButtonView.as   | 12 ++++---
 .../apache/flex/html/beads/ImageButtonView.as   | 20 ++++++-----
 .../flex/html/beads/LeftArrowButtonView.as      | 22 +++++++-----
 .../flex/html/beads/RightArrowButtonView.as     | 22 +++++++-----
 .../apache/flex/html/beads/SliderThumbView.as   | 14 +++++---
 .../apache/flex/html/beads/SliderTrackView.as   | 14 +++++---
 .../org/apache/flex/html/beads/TextAreaView.as  |  5 ++-
 .../apache/flex/html/beads/TextButtonView.as    |  8 +++--
 .../apache/flex/html/beads/UpArrowButtonView.as | 22 +++++++-----
 .../flex/html/beads/VScrollBarThumbView.as      | 30 +++++++++-------
 .../flex/html/beads/VScrollBarTrackView.as      | 25 ++++++++------
 .../html/beads/controllers/AlertController.as   |  4 ++-
 .../beads/controllers/ComboBoxController.as     | 15 ++++----
 23 files changed, 222 insertions(+), 159 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/bd849c42/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 fe303ab..d3d420e 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
@@ -152,12 +152,12 @@ package org.apache.flex.core
 		{
 			super();
             
+            createElement();
+            
             COMPILE::SWF
             {
                 MouseEventConverter.setupInstanceConverters(this);
-            }
-            
-            createElement();
+            }                
         }
         
         COMPILE::SWF

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/bd849c42/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 bd38d7f..85fc0fd 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
@@ -74,8 +74,8 @@ package org.apache.flex.core
 		{
 			// mouseChildren = true;
 			// mouseEnabled = true;
-            MouseEventConverter.setupInstanceConverters(this);
             createElement();
+            MouseEventConverter.setupInstanceConverters(this);
 		}
 
         protected function createElement():IFlexJSElement

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/bd849c42/frameworks/projects/Core/src/main/flex/org/apache/flex/events/ElementEvents.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/events/ElementEvents.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/events/ElementEvents.as
index 157e3b0..22b8029 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/events/ElementEvents.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/events/ElementEvents.as
@@ -33,13 +33,13 @@ package org.apache.flex.events
             'keyup': 1,
             'keydown': 1,
             'load': 1,
-            'mouseover': 1,
-            'mouseout': 1,
-            'mouseup': 1,
-            'mousedown': 1,
-            'mousemove': 1,
-            'rollover': 1,
-            'rollout': 1
+            'mouseOver': 1,
+            'mouseOut': 1,
+            'mouseUp': 1,
+            'mouseDown': 1,
+            'mouseMove': 1,
+            'rollOver': 1,
+            'rollOut': 1
         };
 	}
 

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/bd849c42/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/CSSButtonView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/CSSButtonView.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/CSSButtonView.as
index 7775f03..68fa746 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/CSSButtonView.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/CSSButtonView.as
@@ -18,7 +18,6 @@
 ////////////////////////////////////////////////////////////////////////////////
 package org.apache.flex.html.beads
 {
-    import flash.display.DisplayObject;
     import flash.display.Loader;
     import flash.display.Shape;
     import flash.display.SimpleButton;
@@ -28,8 +27,10 @@ package org.apache.flex.html.beads
     
     import org.apache.flex.core.BeadViewBase;
     import org.apache.flex.core.IBeadView;
+    import org.apache.flex.core.IChild;
     import org.apache.flex.core.IStrand;
     import org.apache.flex.core.ITextModel;
+    import org.apache.flex.core.IUIBase;
     import org.apache.flex.core.ValuesManager;
     import org.apache.flex.events.Event;
     import org.apache.flex.events.IEventDispatcher;
@@ -86,10 +87,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;
 
             setupBackground(overSprite, "hover");
             setupBackground(downSprite, "active");
@@ -114,19 +116,20 @@ package org.apache.flex.html.beads
 
 		private function setupSkin(sprite:Sprite, state:String = null):void
 		{
+            var host:IUIBase = IUIBase(_strand);
 			var padding:Object = ValuesManager.valuesImpl.getValue(_strand, "padding", state);
 			var paddingLeft:Object = ValuesManager.valuesImpl.getValue(_strand, "padding-left", state);
 			var paddingRight:Object = ValuesManager.valuesImpl.getValue(_strand, "padding-right", state);
 			var paddingTop:Object = ValuesManager.valuesImpl.getValue(_strand, "padding-top", state);
 			var paddingBottom:Object = ValuesManager.valuesImpl.getValue(_strand, "padding-bottom", state);
-			var pl:Number = CSSUtils.getLeftValue(paddingLeft, padding, DisplayObject(_strand).width);
-            var pr:Number = CSSUtils.getRightValue(paddingRight, padding, DisplayObject(_strand).width);
-            var pt:Number = CSSUtils.getTopValue(paddingTop, padding, DisplayObject(_strand).height);
-            var pb:Number = CSSUtils.getBottomValue(paddingBottom, padding, DisplayObject(_strand).height);
+			var pl:Number = CSSUtils.getLeftValue(paddingLeft, padding, host.width);
+            var pr:Number = CSSUtils.getRightValue(paddingRight, padding, host.width);
+            var pt:Number = CSSUtils.getTopValue(paddingTop, padding, host.height);
+            var pb:Number = CSSUtils.getBottomValue(paddingBottom, padding, host.height);
 			
 		    CSSBorderUtils.draw(sprite.graphics, 
-					DisplayObject(_strand).width + pl + pr, 
-					DisplayObject(_strand).height + pt + pb,
+					host.width + pl + pr, 
+					host.height + pt + pb,
                     _strand,
                     state, true);
 		}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/bd849c42/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 1c5bf89..4d73309 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
@@ -28,19 +28,20 @@ package org.apache.flex.html.beads
 	import flash.text.TextField;
 	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.IUIBase;
 	import org.apache.flex.core.ValuesManager;
 	import org.apache.flex.events.Event;
 	import org.apache.flex.events.IEventDispatcher;
 	import org.apache.flex.html.TextButton;
-    import org.apache.flex.html.beads.models.ImageAndTextModel;
+	import org.apache.flex.html.beads.models.ImageAndTextModel;
 	import org.apache.flex.utils.CSSUtils;
-    import org.apache.flex.utils.SolidBorderUtil;
-    import org.apache.flex.utils.StringTrimmer;
+	import org.apache.flex.utils.SolidBorderUtil;
+	import org.apache.flex.utils.StringTrimmer;
 
     /**
      *  The CSSTextButtonView class is the default view for
@@ -119,10 +120,11 @@ package org.apache.flex.html.beads
             upTextField.parentHandlesPadding = true;
             downTextField.parentHandlesPadding = true;
             overTextField.parentHandlesPadding = true;
-			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 (textModel.text !== null)
 				text = textModel.text;
 			if (textModel.html !== null)
@@ -145,8 +147,9 @@ package org.apache.flex.html.beads
         
 		private function setupSkin(sprite:Sprite, textField:CSSTextField, state:String = null):void
 		{
-			var sw:uint = IUIBase(_strand).width;
-			var sh:uint = IUIBase(_strand).height;
+            var host:IUIBase = IUIBase(_strand);
+			var sw:uint = host.width;
+			var sh:uint = host.height;
 			
 			textField.defaultTextFormat.leftMargin = 0;
 			textField.defaultTextFormat.rightMargin = 0;
@@ -203,10 +206,10 @@ package org.apache.flex.html.beads
 			var paddingRight:Object = ValuesManager.valuesImpl.getValue(_strand, "padding-right", state);
 			var paddingTop:Object = ValuesManager.valuesImpl.getValue(_strand, "padding-top", state);
 			var paddingBottom:Object = ValuesManager.valuesImpl.getValue(_strand, "padding-bottom", state);
-            var pl:Number = CSSUtils.getLeftValue(paddingLeft, padding, DisplayObject(_strand).width);
-            var pr:Number = CSSUtils.getRightValue(paddingRight, padding, DisplayObject(_strand).width);
-            var pt:Number = CSSUtils.getTopValue(paddingTop, padding, DisplayObject(_strand).height);
-            var pb:Number = CSSUtils.getBottomValue(paddingBottom, padding, DisplayObject(_strand).height);
+            var pl:Number = CSSUtils.getLeftValue(paddingLeft, padding, host.width);
+            var pr:Number = CSSUtils.getRightValue(paddingRight, padding, host.width);
+            var pt:Number = CSSUtils.getTopValue(paddingTop, padding, host.height);
+            var pb:Number = CSSUtils.getBottomValue(paddingBottom, padding, host.height);
             
 			var backgroundColor:Object = ValuesManager.valuesImpl.getValue(_strand, "background-color", state);
             var bgColor:uint;
@@ -332,8 +335,9 @@ package org.apache.flex.html.beads
 		
 		private function updateHitArea():void
 		{
-			var useWidth:uint = Math.max(DisplayObject(_strand).width, upTextField.textWidth);
-			var useHeight:uint = Math.max(DisplayObject(_strand).height, upTextField.textHeight);
+            var host:IUIBase = IUIBase(_strand);
+			var useWidth:uint = Math.max(host.width, upTextField.textWidth);
+			var useHeight:uint = Math.max(host.height, upTextField.textHeight);
 			
 			shape.graphics.clear();
 			shape.graphics.beginFill(0xCCCCCC);

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/bd849c42/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 6268e0d..b53f182 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
@@ -226,7 +226,7 @@ package org.apache.flex.html.beads
 			
 			layoutControl();
 			
-            var button:SimpleButton = IChild(value).$displayObject as SimpleButton;
+            var button:SimpleButton = IChild(_strand).$displayObject as SimpleButton;
 			if( value ) {
                 button.upState = upAndSelectedSprite;
                 button.downState = downAndSelectedSprite;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/bd849c42/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/CloseButtonView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/CloseButtonView.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/CloseButtonView.as
index 7d3fb19..c8be3ec 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/CloseButtonView.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/CloseButtonView.as
@@ -24,6 +24,7 @@ package org.apache.flex.html.beads
 	
 	import org.apache.flex.core.BeadViewBase;
 	import org.apache.flex.core.IBeadView;
+	import org.apache.flex.core.IChild;
 	import org.apache.flex.core.IStrand;
 	import org.apache.flex.html.Button;
 	import org.apache.flex.html.TitleBar;
@@ -87,10 +88,11 @@ package org.apache.flex.html.beads
 			shape.graphics.beginFill(0xCCCCCC);
 			shape.graphics.drawRect(0, 0, 11, 11);
 			shape.graphics.endFill();
-			SimpleButton(value).upState = upView;
-			SimpleButton(value).downState = downView;
-			SimpleButton(value).overState = overView;
-			SimpleButton(value).hitTestState = shape;
+            var button:SimpleButton = IChild(value).$displayObject as SimpleButton;
+			button.upState = upView;
+			button.downState = downView;
+			button.overState = overView;
+			button.hitTestState = shape;
 		}
 				
 		private var upView:Shape;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/bd849c42/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/DownArrowButtonView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/DownArrowButtonView.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/DownArrowButtonView.as
index c68a633..802f13d 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/DownArrowButtonView.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/DownArrowButtonView.as
@@ -21,11 +21,13 @@ package org.apache.flex.html.beads
 	import flash.display.Graphics;
 	import flash.display.Shape;
 	import flash.display.SimpleButton;
-
-    import org.apache.flex.core.BeadViewBase;
+	
+	import org.apache.flex.core.BeadViewBase;
+	import org.apache.flex.core.IBeadView;
+	import org.apache.flex.core.IChild;
 	import org.apache.flex.core.IStrand;
-    import org.apache.flex.core.IBeadView;
-    import org.apache.flex.events.Event;
+    import org.apache.flex.events.IEventDispatcher;
+	import org.apache.flex.events.Event;
 	
     /**
      *  The DownArrowButtonView class is the view for
@@ -89,13 +91,14 @@ package org.apache.flex.html.beads
 			shape.graphics.beginFill(0xCCCCCC);
 			shape.graphics.drawRect(0, 0, ScrollBarView.FullSize, ScrollBarView.FullSize);
 			shape.graphics.endFill();
-			SimpleButton(value).upState = upView;
-			SimpleButton(value).downState = downView;
-			SimpleButton(value).overState = overView;
-			SimpleButton(value).hitTestState = shape;
+            var button:SimpleButton = IChild(value).$displayObject as SimpleButton;
+			button.upState = upView;
+			button.downState = downView;
+			button.overState = overView;
+			button.hitTestState = shape;
 
-            SimpleButton(_strand).addEventListener("widthChanged",sizeChangeHandler);
-            SimpleButton(_strand).addEventListener("heightChanged",sizeChangeHandler);
+            IEventDispatcher(_strand).addEventListener("widthChanged",sizeChangeHandler);
+            IEventDispatcher(_strand).addEventListener("heightChanged",sizeChangeHandler);
         }
 				
 		private var upView:Shape;
@@ -104,8 +107,9 @@ package org.apache.flex.html.beads
         
         private function sizeChangeHandler(event:Event):void
         {
-            SimpleButton(_strand).scaleX = SimpleButton(_strand).width / ScrollBarView.FullSize;
-            SimpleButton(_strand).scaleY = SimpleButton(_strand).height / ScrollBarView.FullSize;
+            var button:SimpleButton = IChild(_strand).$displayObject as SimpleButton;
+            button.scaleX = button.width / ScrollBarView.FullSize;
+            button.scaleY = button.height / ScrollBarView.FullSize;
         }
 	}
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/bd849c42/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/HScrollBarThumbView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/HScrollBarThumbView.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/HScrollBarThumbView.as
index 05a41b6..6f2acac 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/HScrollBarThumbView.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/HScrollBarThumbView.as
@@ -25,7 +25,9 @@ package org.apache.flex.html.beads
 	
 	import org.apache.flex.core.BeadViewBase;
 	import org.apache.flex.core.IBeadView;
+	import org.apache.flex.core.IChild;
 	import org.apache.flex.core.IStrand;
+    import org.apache.flex.core.IUIBase;
 	import org.apache.flex.events.Event;
 	import org.apache.flex.events.IEventDispatcher;
 	import org.apache.flex.html.supportClasses.ScrollBar;
@@ -55,7 +57,7 @@ package org.apache.flex.html.beads
 		
 		private function drawView(g:Graphics, bgColor:uint):void
 		{
-            var ww:Number = DisplayObject(_strand).width;
+            var ww:Number = IUIBase(_strand).width;
             g.clear();
 			g.lineStyle(1);
 			g.beginFill(bgColor);
@@ -89,19 +91,21 @@ package org.apache.flex.html.beads
 			shape.graphics.beginFill(0xCCCCCC);
 			shape.graphics.drawRect(0, 0, ScrollBarView.FullSize, ScrollBarView.FullSize);
 			shape.graphics.endFill();
-			SimpleButton(value).upState = upView;
-			SimpleButton(value).downState = downView;
-			SimpleButton(value).overState = overView;
-			SimpleButton(value).hitTestState = shape;
+            var button:SimpleButton = IChild(value).$displayObject as SimpleButton;
+			button.upState = upView;
+			button.downState = downView;
+			button.overState = overView;
+			button.hitTestState = shape;
             IEventDispatcher(_strand).addEventListener("widthChanged", widthChangedHandler);
 		}
 
         private function widthChangedHandler(event:Event):void
         {
-			DisplayObject(_strand).scaleY = 1.0;
-			DisplayObject(_strand).scaleX = 1.0;
+            var button:SimpleButton = IChild(_strand).$displayObject as SimpleButton;
+			button.scaleY = 1.0;
+			button.scaleX = 1.0;
 			
-            var ww:Number = DisplayObject(_strand).width;
+            var ww:Number = button.width;
             drawView(upView.graphics, 0xc8c8c8);
             drawView(downView.graphics, 0xc8c8c8);
             drawView(overView.graphics, 0xb8b8b8);

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/bd849c42/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/HScrollBarTrackView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/HScrollBarTrackView.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/HScrollBarTrackView.as
index de6a3af..19934b7 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/HScrollBarTrackView.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/HScrollBarTrackView.as
@@ -23,10 +23,12 @@ package org.apache.flex.html.beads
 	import flash.display.Shape;
 	import flash.display.SimpleButton;
 	
-    import org.apache.flex.core.BeadViewBase;
+	import org.apache.flex.core.BeadViewBase;
 	import org.apache.flex.core.IBeadView;
+	import org.apache.flex.core.IChild;
 	import org.apache.flex.core.IStrand;
 	import org.apache.flex.events.Event;
+    import org.apache.flex.events.IEventDispatcher;
 	
     /**
      *  The HScrollBarTrackView class is the view for
@@ -53,7 +55,8 @@ package org.apache.flex.html.beads
 		
 		private function drawView(g:Graphics, bgColor:uint):void
 		{
-			var w:Number = SimpleButton(_strand).width;
+            var button:SimpleButton = IChild(_strand).$displayObject as SimpleButton;
+			var w:Number = button.width;
 			
 			g.clear();
 			g.lineStyle(1, 0x808080);
@@ -65,10 +68,11 @@ package org.apache.flex.html.beads
 
 		private function widthChangeHandler(event:Event):void
 		{
-			DisplayObject(_strand).scaleY = 1.0;
-			DisplayObject(_strand).scaleX = 1.0;
+            var button:SimpleButton = IChild(_strand).$displayObject as SimpleButton;
+			button.scaleY = 1.0;
+			button.scaleX = 1.0;
 			
-			var w:Number = SimpleButton(_strand).width;
+			var w:Number = button.width;
 			
 			drawView(upView.graphics, 0xf8f8f8);
 			drawView(downView.graphics, 0xd8d8d8);
@@ -102,12 +106,13 @@ package org.apache.flex.html.beads
 			drawView(downView.graphics, 0xd8d8d8);
 			drawView(overView.graphics, 0xe8e8e8);
 			
-			SimpleButton(value).addEventListener("widthChanged", widthChangeHandler);
+			IEventDispatcher(value).addEventListener("widthChanged", widthChangeHandler);
 			shape = new Shape();
-			SimpleButton(value).upState = upView;
-			SimpleButton(value).downState = downView;
-			SimpleButton(value).overState = overView;
-			SimpleButton(value).hitTestState = shape;
+            var button:SimpleButton = IChild(value).$displayObject as SimpleButton;
+			button.upState = upView;
+			button.downState = downView;
+			button.overState = overView;
+			button.hitTestState = shape;
 		}
 
 		private var upView:Shape;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/bd849c42/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 3083465..6334f64 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
@@ -31,11 +31,12 @@ package org.apache.flex.html.beads
 	import org.apache.flex.core.CSSTextField;
 	import org.apache.flex.core.IBead;
 	import org.apache.flex.core.IBeadView;
+	import org.apache.flex.core.IChild;
 	import org.apache.flex.core.IStrand;
 	import org.apache.flex.core.IStrandWithModel;
 	import org.apache.flex.core.ValuesManager;
 	import org.apache.flex.html.beads.models.ImageAndTextModel;
-    import org.apache.flex.utils.SolidBorderUtil;
+	import org.apache.flex.utils.SolidBorderUtil;
 	
 	/**
 	 *  The ImageButtonView class provides an image-only view
@@ -97,10 +98,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;
 			
 			setupBackground(upSprite, upTextField, 0xCCCCCC);
 			setupBackground(overSprite, overTextField, 0xFFCCCC, "hover");

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/bd849c42/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 eecc607..9f67971 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
@@ -30,13 +30,16 @@ COMPILE::SWF {
 	import org.apache.flex.core.UIButtonBase;
 }
 
+    import flash.display.SimpleButton;
+    
     import org.apache.flex.core.BeadViewBase;
-	import org.apache.flex.core.IBead;
-	import org.apache.flex.core.IBeadView;
-	import org.apache.flex.core.IStrand;
+    import org.apache.flex.core.IBead;
+    import org.apache.flex.core.IBeadView;
+    import org.apache.flex.core.IChild;
+    import org.apache.flex.core.IStrand;
     import org.apache.flex.core.ValuesManager;
     import org.apache.flex.events.Event;
-	import org.apache.flex.events.IEventDispatcher;
+    import org.apache.flex.events.IEventDispatcher;
 
 	/**
 	 *  The ImageButtonView class provides an image-only view
@@ -85,10 +88,11 @@ COMPILE::SWF {
 				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;
 
 				setupBackground(upSprite);
 				setupBackground(overSprite, "hover");

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/bd849c42/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/LeftArrowButtonView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/LeftArrowButtonView.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/LeftArrowButtonView.as
index 9fca051..eece6fb 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/LeftArrowButtonView.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/LeftArrowButtonView.as
@@ -25,8 +25,10 @@ package org.apache.flex.html.beads
 	
 	import org.apache.flex.core.BeadViewBase;
 	import org.apache.flex.core.IBeadView;
+	import org.apache.flex.core.IChild;
 	import org.apache.flex.core.IStrand;
-    import org.apache.flex.events.Event;
+	import org.apache.flex.events.Event;
+    import org.apache.flex.events.IEventDispatcher;
 	
     /**
      *  The LeftArrowButtonView class is the view for
@@ -90,13 +92,14 @@ package org.apache.flex.html.beads
 			shape.graphics.beginFill(0xCCCCCC);
 			shape.graphics.drawRect(0, 0, ScrollBarView.FullSize, ScrollBarView.FullSize);
 			shape.graphics.endFill();
-			SimpleButton(value).upState = upView;
-			SimpleButton(value).downState = downView;
-			SimpleButton(value).overState = overView;
-			SimpleButton(value).hitTestState = shape;
+            var button:SimpleButton = IChild(value).$displayObject as SimpleButton;
+			button.upState = upView;
+			button.downState = downView;
+			button.overState = overView;
+			button.hitTestState = shape;
             
-            SimpleButton(_strand).addEventListener("widthChanged",sizeChangeHandler);
-            SimpleButton(_strand).addEventListener("heightChanged",sizeChangeHandler);
+            IEventDispatcher(_strand).addEventListener("widthChanged",sizeChangeHandler);
+            IEventDispatcher(_strand).addEventListener("heightChanged",sizeChangeHandler);
 		}
         
 		private var upView:Shape;
@@ -105,8 +108,9 @@ package org.apache.flex.html.beads
 		
         private function sizeChangeHandler(event:Event):void
         {
-            SimpleButton(_strand).scaleX = SimpleButton(_strand).width / ScrollBarView.FullSize;
-            SimpleButton(_strand).scaleY = SimpleButton(_strand).height / ScrollBarView.FullSize;
+            var button:SimpleButton = IChild(_strand).$displayObject as SimpleButton;
+            button.scaleX = button.width / ScrollBarView.FullSize;
+            button.scaleY = button.height / ScrollBarView.FullSize;
         }
 	}
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/bd849c42/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/RightArrowButtonView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/RightArrowButtonView.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/RightArrowButtonView.as
index 225c37c..eb242c1 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/RightArrowButtonView.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/RightArrowButtonView.as
@@ -25,8 +25,10 @@ package org.apache.flex.html.beads
 	
 	import org.apache.flex.core.BeadViewBase;
 	import org.apache.flex.core.IBeadView;
+	import org.apache.flex.core.IChild;
 	import org.apache.flex.core.IStrand;
-    import org.apache.flex.events.Event;
+	import org.apache.flex.events.Event;
+    import org.apache.flex.events.IEventDispatcher;
 	
     /**
      *  The RightArrowButtonView class is the view for
@@ -90,13 +92,14 @@ package org.apache.flex.html.beads
 			shape.graphics.beginFill(0xCCCCCC);
 			shape.graphics.drawRect(0, 0, ScrollBarView.FullSize, ScrollBarView.FullSize);
 			shape.graphics.endFill();
-			SimpleButton(value).upState = upView;
-			SimpleButton(value).downState = downView;
-			SimpleButton(value).overState = overView;
-			SimpleButton(value).hitTestState = shape;
+            var button:SimpleButton = IChild(value).$displayObject as SimpleButton;
+			button.upState = upView;
+			button.downState = downView;
+			button.overState = overView;
+			button.hitTestState = shape;
             
-            SimpleButton(_strand).addEventListener("widthChanged",sizeChangeHandler);
-            SimpleButton(_strand).addEventListener("heightChanged",sizeChangeHandler);
+            IEventDispatcher(_strand).addEventListener("widthChanged",sizeChangeHandler);
+            IEventDispatcher(_strand).addEventListener("heightChanged",sizeChangeHandler);
 		}
         
 		private var upView:Shape;
@@ -105,8 +108,9 @@ package org.apache.flex.html.beads
 		
         private function sizeChangeHandler(event:Event):void
         {
-            SimpleButton(_strand).scaleX = SimpleButton(_strand).width / ScrollBarView.FullSize;
-            SimpleButton(_strand).scaleY = SimpleButton(_strand).height / ScrollBarView.FullSize;
+            var button:SimpleButton = IChild(_strand).$displayObject as SimpleButton;
+            button.scaleX = button.width / ScrollBarView.FullSize;
+            button.scaleY = button.height / ScrollBarView.FullSize;
         }
 	}
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/bd849c42/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 e9b4ea5..fa5d235 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
@@ -33,6 +33,8 @@ package org.apache.flex.html.beads
     }
     import org.apache.flex.events.Event;
     import org.apache.flex.events.IEventDispatcher;
+    import org.apache.flex.core.IChild;
+    import flash.display.SimpleButton;
 	
 	/**
 	 *  The SliderThumbView class creates the draggable input element for the 
@@ -70,10 +72,11 @@ package org.apache.flex.html.beads
         COMPILE::SWF
 		private function drawView(g:Graphics, bgColor:uint):void
 		{
+            var button:SimpleButton = IChild(_strand).$displayObject as SimpleButton;
 			g.clear();
 			g.lineStyle(1,0x000000);
 			g.beginFill(bgColor);
-			g.drawCircle(SimpleButton(_strand).width/2, SimpleButton(_strand).height/2, 10);
+			g.drawCircle(button.width/2, button.height/2, 10);
 			g.endFill();
 		}
 		
@@ -101,10 +104,11 @@ package org.apache.flex.html.beads
                 drawView(downView.graphics, 0x999999);
                 drawView(overView.graphics, 0xDDDDDD);
                 
-                SimpleButton(value).upState = upView;
-                SimpleButton(value).downState = downView;
-                SimpleButton(value).overState = overView;
-                SimpleButton(value).hitTestState = hitArea;
+                var button:SimpleButton = IChild(value).$displayObject as SimpleButton;
+                button.upState = upView;
+                button.downState = downView;
+                button.overState = overView;
+                button.hitTestState = hitArea;
                 
                 IEventDispatcher(value).addEventListener("widthChanged",sizeChangeHandler);
                 IEventDispatcher(value).addEventListener("heightChanged",sizeChangeHandler);                

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/bd849c42/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/SliderTrackView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/SliderTrackView.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/SliderTrackView.as
index 4290ac7..e423896 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/SliderTrackView.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/SliderTrackView.as
@@ -35,6 +35,8 @@ package org.apache.flex.html.beads
 	}
 	import org.apache.flex.events.Event;
 	import org.apache.flex.events.IEventDispatcher;
+	import org.apache.flex.core.IChild;
+	import flash.display.SimpleButton;
 	
 	/**
 	 *  The SliderTrackView class creates the track area for the org.apache.flex.html.Slider
@@ -72,10 +74,11 @@ package org.apache.flex.html.beads
 		COMPILE::SWF
 		private function drawView(g:Graphics, bgColor:uint):void
 		{
+            var button:SimpleButton = IChild(_strand).$displayObject as SimpleButton;
 			g.clear();
 			g.lineStyle(1,0x000000);
 			g.beginFill(bgColor);
-			g.drawRect(0, 0, SimpleButton(_strand).width, SimpleButton(_strand).height);
+			g.drawRect(0, 0, button.width, button.height);
 			g.endFill();
 		}
 		
@@ -101,10 +104,11 @@ package org.apache.flex.html.beads
 				drawView(downView.graphics, 0x808080);
 				drawView(overView.graphics, 0xEEEEEE);
 				
-				SimpleButton(value).upState = upView;
-				SimpleButton(value).downState = downView;
-				SimpleButton(value).overState = overView;
-				SimpleButton(value).hitTestState = hitArea;
+                var button:SimpleButton = IChild(value).$displayObject as SimpleButton;
+				button.upState = upView;
+				button.downState = downView;
+				button.overState = overView;
+				button.hitTestState = hitArea;
 				
 				IEventDispatcher(value).addEventListener("widthChanged",sizeChangeHandler);
 				IEventDispatcher(value).addEventListener("heightChanged",sizeChangeHandler);					

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/bd849c42/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 f3b5359..2c4e76f 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
@@ -18,7 +18,6 @@
 ////////////////////////////////////////////////////////////////////////////////
 package org.apache.flex.html.beads
 {
-	import flash.display.DisplayObject;
 	import flash.events.Event;
 	import flash.events.IEventDispatcher;
 	import flash.text.TextField;
@@ -170,7 +169,7 @@ package org.apache.flex.html.beads
             if( !isNaN(ww) && ww > 0 )
                 _border.width = ww;
             
-            ww -= DisplayObject(vScrollBar).width;
+            ww -= vScrollBar.width;
 			if( !isNaN(ww) && ww > 0 )
 				textField.width = ww;
 			
@@ -181,7 +180,7 @@ package org.apache.flex.html.beads
 				_border.height = hh;
 			}
 			
-			var sb:DisplayObject = DisplayObject(vScrollBar);
+			var sb:VScrollBar = vScrollBar;
 			sb.y = 1;
 			sb.x = textField.width - 1;
 			sb.height = textField.height;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/bd849c42/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 e3d84dd..5790139 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
@@ -23,9 +23,10 @@ package org.apache.flex.html.beads
 	import flash.display.SimpleButton;
 	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.ITextModel;
 	import org.apache.flex.events.Event;
@@ -131,8 +132,9 @@ package org.apache.flex.html.beads
 		
 		private function sizeChangeHandler(event:Event):void
 		{
-			upTextField.width = downTextField.width = overTextField.width = DisplayObject(_strand).width;
-			upTextField.height= downTextField.height= overTextField.height= DisplayObject(_strand).height;
+            var button:SimpleButton = IChild(_strand).$displayObject as SimpleButton;
+			upTextField.width = downTextField.width = overTextField.width = button.width;
+			upTextField.height= downTextField.height= overTextField.height= button.height;
 		}
 		
         /**

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/bd849c42/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/UpArrowButtonView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/UpArrowButtonView.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/UpArrowButtonView.as
index 8e6ff4a..9acb60a 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/UpArrowButtonView.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/UpArrowButtonView.as
@@ -25,8 +25,10 @@ package org.apache.flex.html.beads
 	
 	import org.apache.flex.core.BeadViewBase;
 	import org.apache.flex.core.IBeadView;
+	import org.apache.flex.core.IChild;
 	import org.apache.flex.core.IStrand;
-    import org.apache.flex.events.Event;
+	import org.apache.flex.events.Event;
+    import org.apache.flex.events.IEventDispatcher;
 	
     /**
      *  The UpArrowButtonView class is the view for
@@ -90,13 +92,14 @@ package org.apache.flex.html.beads
 			shape.graphics.beginFill(0xCCCCCC);
 			shape.graphics.drawRect(0, 0, ScrollBarView.FullSize, ScrollBarView.FullSize);
 			shape.graphics.endFill();
-			SimpleButton(value).upState = upView;
-			SimpleButton(value).downState = downView;
-			SimpleButton(value).overState = overView;
-			SimpleButton(value).hitTestState = shape;
+            var button:SimpleButton = IChild(value).$displayObject as SimpleButton;
+			button.upState = upView;
+			button.downState = downView;
+			button.overState = overView;
+			button.hitTestState = shape;
             
-            SimpleButton(_strand).addEventListener("widthChanged",sizeChangeHandler);
-            SimpleButton(_strand).addEventListener("heightChanged",sizeChangeHandler);
+            IEventDispatcher(_strand).addEventListener("widthChanged",sizeChangeHandler);
+            IEventDispatcher(_strand).addEventListener("heightChanged",sizeChangeHandler);
 		}
         
 		private var upView:Shape;
@@ -105,8 +108,9 @@ package org.apache.flex.html.beads
 		
         private function sizeChangeHandler(event:Event):void
         {
-            SimpleButton(_strand).scaleX = SimpleButton(_strand).width / ScrollBarView.FullSize;
-            SimpleButton(_strand).scaleY = SimpleButton(_strand).height / ScrollBarView.FullSize;
+            var button:SimpleButton = IChild(_strand).$displayObject as SimpleButton;
+            button.scaleX = button.width / ScrollBarView.FullSize;
+            button.scaleY = button.height / ScrollBarView.FullSize;
         }
 	}
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/bd849c42/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/VScrollBarThumbView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/VScrollBarThumbView.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/VScrollBarThumbView.as
index 0f70b37..c119de7 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/VScrollBarThumbView.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/VScrollBarThumbView.as
@@ -18,16 +18,18 @@
 ////////////////////////////////////////////////////////////////////////////////
 package org.apache.flex.html.beads
 {
+	import flash.display.DisplayObject;
 	import flash.display.Graphics;
 	import flash.display.Shape;
 	import flash.display.SimpleButton;
-    import flash.display.DisplayObject;
-
-    import org.apache.flex.core.BeadViewBase;
-    import org.apache.flex.core.IBeadView;
+	
+	import org.apache.flex.core.BeadViewBase;
+	import org.apache.flex.core.IBeadView;
+	import org.apache.flex.core.IChild;
 	import org.apache.flex.core.IStrand;
+    import org.apache.flex.core.IUIBase;
 	import org.apache.flex.events.Event;
-	import org.apache.flex.events.IEventDispatcher;	
+	import org.apache.flex.events.IEventDispatcher;
 	
     /**
      *  The VScrollBarThumbView class is the view for
@@ -54,7 +56,7 @@ package org.apache.flex.html.beads
 		
 		private function drawView(g:Graphics, bgColor:uint):void
 		{
-            var hh:Number = DisplayObject(_strand).height;
+            var hh:Number = IUIBase(_strand).height;
             g.clear();
 			g.lineStyle(1);
 			g.beginFill(bgColor);
@@ -88,19 +90,21 @@ package org.apache.flex.html.beads
 			shape.graphics.beginFill(0xCCCCCC);
 			shape.graphics.drawRect(0, 0, ScrollBarView.FullSize, ScrollBarView.FullSize);
 			shape.graphics.endFill();
-			SimpleButton(value).upState = upView;
-			SimpleButton(value).downState = downView;
-			SimpleButton(value).overState = overView;
-			SimpleButton(value).hitTestState = shape;
+            var button:SimpleButton = IChild(value).$displayObject as SimpleButton;
+			button.upState = upView;
+			button.downState = downView;
+			button.overState = overView;
+			button.hitTestState = shape;
             IEventDispatcher(_strand).addEventListener("heightChanged", heightChangedHandler);
 		}
 
         private function heightChangedHandler(event:Event):void
         {
-			DisplayObject(_strand).scaleY = 1.0;
-			DisplayObject(_strand).scaleX = 1.0;
+            var button:SimpleButton = IChild(_strand).$displayObject as SimpleButton;
+			button.scaleY = 1.0;
+			button.scaleX = 1.0;
 			
-            var hh:Number = DisplayObject(_strand).height;
+            var hh:Number = button.height;
             drawView(upView.graphics, 0xc8c8c8);
             drawView(downView.graphics, 0xc8c8c8);
             drawView(overView.graphics, 0xb8b8b8);

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/bd849c42/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/VScrollBarTrackView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/VScrollBarTrackView.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/VScrollBarTrackView.as
index 3510251..e08944a 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/VScrollBarTrackView.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/VScrollBarTrackView.as
@@ -23,10 +23,12 @@ package org.apache.flex.html.beads
 	import flash.display.Shape;
 	import flash.display.SimpleButton;
 	
-    import org.apache.flex.core.BeadViewBase;
+	import org.apache.flex.core.BeadViewBase;
 	import org.apache.flex.core.IBeadView;
+	import org.apache.flex.core.IChild;
 	import org.apache.flex.core.IStrand;
 	import org.apache.flex.events.Event;
+    import org.apache.flex.events.IEventDispatcher;
 	
     /**
      *  The VScrollBarTrackView class is the view for
@@ -53,7 +55,8 @@ package org.apache.flex.html.beads
 		
 		private function drawView(g:Graphics, bgColor:uint):void
 		{
-			var h:Number = SimpleButton(_strand).height;
+            var button:SimpleButton = IChild(_strand).$displayObject as SimpleButton;
+			var h:Number = button.height;
 			
 			g.clear();
 			g.lineStyle(1, 0x808080);
@@ -65,10 +68,11 @@ package org.apache.flex.html.beads
 
 		private function heightChangeHandler(event:Event):void
 		{
-			DisplayObject(_strand).scaleY = 1.0;
-			DisplayObject(_strand).scaleX = 1.0;
+            var button:SimpleButton = IChild(_strand).$displayObject as SimpleButton;
+			button.scaleY = 1.0;
+			button.scaleX = 1.0;
 			
-			var h:Number = SimpleButton(_strand).height;
+			var h:Number = button.height;
 			
 			drawView(upView.graphics, 0xf8f8f8);
 			drawView(downView.graphics, 0xd8d8d8);
@@ -102,12 +106,13 @@ package org.apache.flex.html.beads
 			drawView(downView.graphics, 0xd8d8d8);
 			drawView(overView.graphics, 0xe8e8e8);
 			
-			SimpleButton(value).addEventListener("heightChanged", heightChangeHandler);
+			IEventDispatcher(value).addEventListener("heightChanged", heightChangeHandler);
 			shape = new Shape();
-			SimpleButton(value).upState = upView;
-			SimpleButton(value).downState = downView;
-			SimpleButton(value).overState = overView;
-			SimpleButton(value).hitTestState = shape;
+            var button:SimpleButton = IChild(value).$displayObject as SimpleButton;
+			button.upState = upView;
+			button.downState = downView;
+			button.overState = overView;
+			button.hitTestState = shape;
 		}
 
 		private var upView:Shape;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/bd849c42/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/controllers/AlertController.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/controllers/AlertController.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/controllers/AlertController.as
index 3982d0f..44fda3a 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/controllers/AlertController.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/controllers/AlertController.as
@@ -21,9 +21,11 @@ package org.apache.flex.html.beads.controllers
     import flash.display.DisplayObject;
     
 	import org.apache.flex.core.IBeadController;
+    import org.apache.flex.core.IChild;
 	import org.apache.flex.core.IStrand;
 	import org.apache.flex.events.Event;
 	import org.apache.flex.events.IEventDispatcher;
+    import org.apache.flex.utils.UIUtils;
 
 	/**
 	 *  The AlertControler class bead handles the close event on the org.apache.flex.html.Alert 
@@ -82,7 +84,7 @@ package org.apache.flex.html.beads.controllers
 		 */
         private function handleAlertClose(event:Event):void
         {
-            DisplayObject(_strand).parent.removeChild(DisplayObject(_strand));
+            UIUtils.removePopUp(IChild(_strand));
         }
 	}
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/bd849c42/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/controllers/ComboBoxController.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/controllers/ComboBoxController.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/controllers/ComboBoxController.as
index 12fb59c..9e91772 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/controllers/ComboBoxController.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/controllers/ComboBoxController.as
@@ -23,9 +23,10 @@ package org.apache.flex.html.beads.controllers
 	import org.apache.flex.core.IBeadController;
 	import org.apache.flex.core.ISelectionModel;
 	import org.apache.flex.core.IStrand;
+	import org.apache.flex.core.IUIBase;
 	import org.apache.flex.events.Event;
 	import org.apache.flex.events.IEventDispatcher;
-    import org.apache.flex.events.MouseEvent;
+	import org.apache.flex.events.MouseEvent;
 	import org.apache.flex.html.beads.IComboBoxView;
 
 	/**
@@ -74,17 +75,19 @@ package org.apache.flex.html.beads.controllers
 		 */
         private function clickHandler(event:MouseEvent):void
         {
+            var host:IUIBase = IUIBase(_strand);
             var viewBead:IComboBoxView = _strand.getBeadByType(IComboBoxView) as IComboBoxView;
             viewBead.popUpVisible = true;
             var selectionModel:ISelectionModel = _strand.getBeadByType(ISelectionModel) as ISelectionModel;
             var popUpModel:ISelectionModel = viewBead.popUp.getBeadByType(ISelectionModel) as ISelectionModel;
             popUpModel.dataProvider = selectionModel.dataProvider;
             popUpModel.selectedIndex = selectionModel.selectedIndex;
-			DisplayObject(viewBead.popUp).width = DisplayObject(_strand).width;
-			DisplayObject(viewBead.popUp).height = 200;
-			DisplayObject(viewBead.popUp).x = DisplayObject(_strand).x;
-			DisplayObject(viewBead.popUp).y = DisplayObject(_strand).y;
-            IEventDispatcher(viewBead.popUp).addEventListener("change", changeHandler);
+            var popUp:IUIBase = IUIBase(viewBead.popUp);
+			popUp.width = host.width;
+            popUp.height = 200;
+            popUp.x = host.x;
+            popUp.y = host.y;
+            popUp.addEventListener("change", changeHandler);
         }
         
 		/**


[3/3] git commit: [flex-asjs] [refs/heads/refactor-sprite] - fix a few more bugs in DataBindingExample

Posted by ah...@apache.org.
fix a few more bugs in DataBindingExample


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

Branch: refs/heads/refactor-sprite
Commit: 184ef2d81096e19c9f8f552601c2335efef2e0f9
Parents: bd849c4
Author: Alex Harui <ah...@apache.org>
Authored: Wed Aug 3 21:45:52 2016 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Wed Aug 3 21:45:52 2016 -0700

----------------------------------------------------------------------
 .../Core/src/main/flex/org/apache/flex/core/Application.as       | 1 +
 .../Core/src/main/flex/org/apache/flex/core/CSSTextField.as      | 2 ++
 .../flex/org/apache/flex/events/utils/MouseEventConverter.as     | 4 ++--
 3 files changed, 5 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/184ef2d8/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 693b442..aea6c38 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
@@ -141,6 +141,7 @@ package org.apache.flex.core
 		{
 			element = r;	
 			MouseEventConverter.setupAllConverters(r.stage);
+            MouseEventConverter.setupAllConverters(r.stage, false);
 			initHandler();
 		}
 		

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/184ef2d8/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 f50a2c6..6ec8158 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
@@ -109,6 +109,8 @@ package org.apache.flex.core
 		override public function set text(value:String):void
 		{
 			var sp:Object = parent;
+            if (sp is IFlexJSElement)
+                sp = sp.flexjs_wrapper;
 			if (styleParent)
 				sp = styleParent;
 			sp.addEventListener("classNameChanged", updateStyles);

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/184ef2d8/frameworks/projects/Core/src/main/flex/org/apache/flex/events/utils/MouseEventConverter.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/events/utils/MouseEventConverter.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/events/utils/MouseEventConverter.as
index 48ff1fa..72f4ff1 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/events/utils/MouseEventConverter.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/events/utils/MouseEventConverter.as
@@ -150,10 +150,10 @@ package org.apache.flex.events.utils
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.0
          */
-        public static function setupAllConverters(target:IEventDispatcher):void
+        public static function setupAllConverters(target:IEventDispatcher, capture:Boolean = true):void
         {
             for each (var eventType:String in allConvertedEvents)
-                target.addEventListener(eventType, eventHandler, true, 9999);
+                target.addEventListener(eventType, eventHandler, capture, 9999);
         }
 
         /**