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 2017/05/01 03:48:10 UTC

[11/50] [abbrv] git commit: [flex-asjs] [refs/heads/develop] - Merge branch 'develop' into dual. Clean build. Now to get it to run

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/9fd9b78b/frameworks/projects/Basic/src/main/flex/org/apache/flex/core/GroupBase.as
----------------------------------------------------------------------
diff --cc frameworks/projects/Basic/src/main/flex/org/apache/flex/core/GroupBase.as
index 0000000,0000000..e4dfb1f
new file mode 100644
--- /dev/null
+++ b/frameworks/projects/Basic/src/main/flex/org/apache/flex/core/GroupBase.as
@@@ -1,0 -1,0 +1,280 @@@
++////////////////////////////////////////////////////////////////////////////////
++//
++//  Licensed to the Apache Software Foundation (ASF) under one or more
++//  contributor license agreements.  See the NOTICE file distributed with
++//  this work for additional information regarding copyright ownership.
++//  The ASF licenses this file to You under the Apache License, Version 2.0
++//  (the "License"); you may not use this file except in compliance with
++//  the License.  You may obtain a copy of the License at
++//
++//      http://www.apache.org/licenses/LICENSE-2.0
++//
++//  Unless required by applicable law or agreed to in writing, software
++//  distributed under the License is distributed on an "AS IS" BASIS,
++//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
++//  See the License for the specific language governing permissions and
++//  limitations under the License.
++//
++////////////////////////////////////////////////////////////////////////////////
++package org.apache.flex.core
++{
++	import org.apache.flex.core.IContentViewHost;
++	import org.apache.flex.core.ILayoutParent;
++	import org.apache.flex.core.ILayoutHost;
++	import org.apache.flex.core.ILayoutView;
++	import org.apache.flex.core.ValuesManager;
++	import org.apache.flex.events.Event;
++	import org.apache.flex.events.ValueChangeEvent;
++	import org.apache.flex.states.State;
++	import org.apache.flex.utils.MXMLDataInterpreter;
++
++    /**
++     *  Indicates that the state change has completed.  All properties
++     *  that need to change have been changed, and all transitinos
++     *  that need to run have completed.  However, any deferred work
++     *  may not be completed, and the screen may not be updated until
++     *  code stops executing.
++     *  
++     *  @langversion 3.0
++     *  @playerversion Flash 10.2
++     *  @playerversion AIR 2.6
++     *  @productversion FlexJS 0.8
++     */
++    [Event(name="stateChangeComplete", type="org.apache.flex.events.Event")]
++    
++    /**
++     *  Indicates that the initialization of the container is complete.
++     *  
++     *  @langversion 3.0
++     *  @playerversion Flash 10.2
++     *  @playerversion AIR 2.6
++     *  @productversion FlexJS 0.8
++     */
++    [Event(name="initComplete", type="org.apache.flex.events.Event")]
++    
++    /**
++     *  Indicates that the children of the container is have been added.
++     *  
++     *  @langversion 3.0
++     *  @playerversion Flash 10.2
++     *  @playerversion AIR 2.6
++     *  @productversion FlexJS 0.8
++     */
++    [Event(name="childrenAdded", type="org.apache.flex.events.Event")]
++    
++    /**
++     *  The GroupBase class is the base class for most simple containers
++     *  in FlexJS.  It is usable as the root tag of MXML
++     *  documents and UI controls and containers are added to it.
++     *  
++     *  @langversion 3.0
++     *  @playerversion Flash 10.2
++     *  @playerversion AIR 2.6
++     *  @productversion FlexJS 0.8
++     */
++	public class GroupBase extends UIBase implements IStatesObject, IContainer, ILayoutParent, ILayoutView, IContentViewHost
++	{
++        /**
++         *  Constructor.
++         *  
++         *  @langversion 3.0
++         *  @playerversion Flash 10.2
++         *  @playerversion AIR 2.6
++         *  @productversion FlexJS 0.8
++         */
++		public function GroupBase()
++		{
++			super();            
++		}
++		
++		/**
++		 * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement
++		 */
++		COMPILE::JS
++		override protected function createElement():WrappedHTMLElement
++		{
++			element = document.createElement('div') as WrappedHTMLElement;
++			element.flexjs_wrapper = this;
++			
++			positioner = element;
++			
++			return element;
++		}
++		
++		/*
++		 * IContainer
++		 */
++        
++        /**
++         *  @private
++         */
++        public function childrenAdded():void
++        {
++            dispatchEvent(new Event("childrenAdded"));
++        }
++		
++		/*
++		 * Utility
++		 */
++		
++		/**
++		 * Dispatches a "layoutNeeded" event
++         *  
++         *  @langversion 3.0
++         *  @playerversion Flash 10.2
++         *  @playerversion AIR 2.6
++         *  @productversion FlexJS 0.8
++		 */
++		public function layoutNeeded():void
++		{
++			dispatchEvent( new Event("layoutNeeded") );
++		}
++		
++		/*
++		 * ILayoutParent
++		 */
++		
++		/**
++		 * Returns the ILayoutHost which is its view. From ILayoutParent.
++		 *
++		 *  @langversion 3.0
++		 *  @playerversion Flash 10.2
++		 *  @playerversion AIR 2.6
++		 *  @productversion FlexJS 0.8
++		 */
++		public function getLayoutHost():ILayoutHost
++		{
++			return view as ILayoutHost;
++		}
++		
++		/**
++		 * @copy org.apache.flex.core.IContentViewHost#strandChildren
++         *  
++         *  @langversion 3.0
++         *  @playerversion Flash 10.2
++         *  @playerversion AIR 2.6
++         *  @productversion FlexJS 0.8
++		 */
++		public function get strandChildren():IParent
++		{
++			return this;
++		}
++		
++        private var _states:Array;
++        
++        /**
++         *  The array of view states. These should
++         *  be instances of org.apache.flex.states.State.
++         *  
++         *  @langversion 3.0
++         *  @playerversion Flash 10.2
++         *  @playerversion AIR 2.6
++         *  @productversion FlexJS 0.8
++         */
++        public function get states():Array
++        {
++            return _states;
++        }
++
++        /**
++         *  @private
++         *  @flexjsignorecoercion Class
++         *  @flexjsignorecoercion org.apache.flex.core.IBead
++         */
++        public function set states(value:Array):void
++        {
++            _states = value;
++            _currentState = _states[0].name;
++            
++			try{
++				if (getBeadByType(IStatesImpl) == null)
++                {
++                    var c:Class = ValuesManager.valuesImpl.getValue(this, "iStatesImpl") as Class;
++                    var b:Object = new c();
++					addBead(b as IBead);
++                }
++			}
++			//TODO:  Need to handle this case more gracefully
++			catch(e:Error)
++			{
++                COMPILE::SWF
++                {
++                    trace(e.message);                        
++                }
++			}
++            
++        }
++        
++        /**
++         *  <code>true</code> if the array of states
++         *  contains a state with this name.
++         * 
++         *  @param state The state namem.
++         *  @return True if state in state array
++         *  
++         *  @langversion 3.0
++         *  @playerversion Flash 10.2
++         *  @playerversion AIR 2.6
++         *  @productversion FlexJS 0.8
++         */
++        public function hasState(state:String):Boolean
++        {
++            for each (var s:State in _states)
++            {
++                if (s.name == state)
++                    return true;
++            }
++            return false;
++        }
++        
++        private var _currentState:String;
++        
++        [Bindable("currentStateChange")]
++        /**
++         *  The name of the current state.
++         * 
++         *  @langversion 3.0
++         *  @playerversion Flash 10.2
++         *  @playerversion AIR 2.6
++         *  @productversion FlexJS 0.8
++         */
++        public function get currentState():String
++        {
++            return _currentState;   
++        }
++
++        /**
++         *  @private
++         */
++        public function set currentState(value:String):void
++        {
++            var event:ValueChangeEvent = new ValueChangeEvent("currentStateChange", false, false, _currentState, value)
++            _currentState = value;
++            dispatchEvent(event);
++        }
++        
++        private var _transitions:Array;
++        
++        /**
++         *  The array of transitions.
++         *  
++         *  @langversion 3.0
++         *  @playerversion Flash 10.2
++         *  @playerversion AIR 2.6
++         *  @productversion FlexJS 0.8
++         */
++        public function get transitions():Array
++        {
++            return _transitions;   
++        }
++        
++        /**
++         *  @private
++         */
++        public function set transitions(value:Array):void
++        {
++            _transitions = value;   
++        }
++
++    }
++}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/9fd9b78b/frameworks/projects/Basic/src/main/flex/org/apache/flex/core/IList.as
----------------------------------------------------------------------
diff --cc frameworks/projects/Basic/src/main/flex/org/apache/flex/core/IList.as
index 0000000,0000000..3162b3b
new file mode 100644
--- /dev/null
+++ b/frameworks/projects/Basic/src/main/flex/org/apache/flex/core/IList.as
@@@ -1,0 -1,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
++{
++	import org.apache.flex.core.IItemRendererParent;
++	import org.apache.flex.core.IItemRendererProvider;
++
++    /**
++     *  The IList interface is implemented by any component that supports being
++	 *  a "list" which means its content is generated by a factory and whose
++	 *  children are item renderers (IItemRenderer).
++     * 
++     *  @langversion 3.0
++     *  @playerversion Flash 10.2
++     *  @playerversion AIR 2.6
++     *  @productversion FlexJS 0.0
++     */
++	public interface IList extends IItemRendererProvider
++	{
++        /**
++         *  Returns the component within the list (maybe even the list shell itself)
++		 *  which will be the parent of each itemRenderer.
++         * 
++         *  @langversion 3.0
++         *  @playerversion Flash 10.2
++         *  @playerversion AIR 2.6
++         *  @productversion FlexJS 0.0
++         */
++		function get dataGroup():IItemRendererParent;
++		
++	}
++}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/9fd9b78b/frameworks/projects/Basic/src/main/flex/org/apache/flex/core/LayoutBase.as
----------------------------------------------------------------------
diff --cc frameworks/projects/Basic/src/main/flex/org/apache/flex/core/LayoutBase.as
index 0000000,0000000..dde6448
new file mode 100644
--- /dev/null
+++ b/frameworks/projects/Basic/src/main/flex/org/apache/flex/core/LayoutBase.as
@@@ -1,0 -1,0 +1,166 @@@
++////////////////////////////////////////////////////////////////////////////////
++//
++//  Licensed to the Apache Software Foundation (ASF) under one or more
++//  contributor license agreements.  See the NOTICE file distributed with
++//  this work for additional information regarding copyright ownership.
++//  The ASF licenses this file to You under the Apache License, Version 2.0
++//  (the "License"); you may not use this file except in compliance with
++//  the License.  You may obtain a copy of the License at
++//
++//      http://www.apache.org/licenses/LICENSE-2.0
++//
++//  Unless required by applicable law or agreed to in writing, software
++//  distributed under the License is distributed on an "AS IS" BASIS,
++//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
++//  See the License for the specific language governing permissions and
++//  limitations under the License.
++//
++////////////////////////////////////////////////////////////////////////////////
++package org.apache.flex.core
++{
++
++	import org.apache.flex.core.IBeadLayout;
++	import org.apache.flex.core.ILayoutChild;
++	import org.apache.flex.core.ILayoutHost;
++	import org.apache.flex.core.ILayoutParent;
++	import org.apache.flex.core.ILayoutView;
++	import org.apache.flex.core.IParent;
++	import org.apache.flex.core.IStrand;
++	import org.apache.flex.core.ValuesManager;
++    import org.apache.flex.utils.CSSUtils;
++
++    /**
++     *  This class is the base class for most, if not all, layouts. 
++     *
++     *  @langversion 3.0
++     *  @playerversion Flash 10.2
++     *  @playerversion AIR 2.6
++     *  @productversion FlexJS 0.8
++     */
++	public class LayoutBase implements IBeadLayout
++	{
++        /**
++         *  Constructor.
++         *
++         *  @langversion 3.0
++         *  @playerversion Flash 10.2
++         *  @playerversion AIR 2.6
++         *  @productversion FlexJS 0.8
++         */
++		public function LayoutBase()
++		{
++		}
++
++        /**
++		 * The strand/host container is also an ILayoutChild because
++         * it can have its size dictated by the host's parent which is
++         * important to know for layout optimization.
++         *
++         *  @langversion 3.0
++         *  @playerversion Flash 10.2
++         *  @playerversion AIR 2.6
++         *  @productversion FlexJS 0.8
++		 */
++        protected var host:ILayoutChild;
++
++        /**
++         *  @copy org.apache.flex.core.IBead#strand
++         *
++         *  @langversion 3.0
++         *  @playerversion Flash 10.2
++         *  @playerversion AIR 2.6
++         *  @productversion FlexJS 0.8
++		 * 
++		 * @flexjsignorecoercion org.apache.flex.core.ILayoutChild
++         */
++		public function set strand(value:IStrand):void
++		{
++            host = value as ILayoutChild;
++		}
++		
++		/**
++		 * Returns an object of margins for the given child.
++		 * 
++		 * @param child Object The element whose margins are required.
++		 * @param hostWidth Number The usable width dimension of the host.
++		 * @param hostHeight Number The usable height dimension of the host.
++		 * 
++		 * @return Object A structure of {top:Number, left:Number, bottom:Number, right:Number}
++         *
++         *  @langversion 3.0
++         *  @playerversion Flash 10.2
++         *  @playerversion AIR 2.6
++         *  @productversion FlexJS 0.8
++		 */
++		protected function childMargins(child:Object, hostWidth:Number, hostHeight:Number):Object
++		{
++			var margin:Object = ValuesManager.valuesImpl.getValue(child, "margin");
++			var marginLeft:Object = ValuesManager.valuesImpl.getValue(child, "margin-left");
++			var marginTop:Object = ValuesManager.valuesImpl.getValue(child, "margin-top");
++			var marginRight:Object = ValuesManager.valuesImpl.getValue(child, "margin-right");
++			var marginBottom:Object = ValuesManager.valuesImpl.getValue(child, "margin-bottom");
++			var ml:Number = CSSUtils.getLeftValue(marginLeft, margin, hostWidth);
++			var mr:Number = CSSUtils.getRightValue(marginRight, margin, hostWidth);
++			var mt:Number = CSSUtils.getTopValue(marginTop, margin, hostHeight);
++			var mb:Number = CSSUtils.getBottomValue(marginBottom, margin, hostHeight);
++			if (marginLeft == "auto")
++				ml = 0;
++			if (marginRight == "auto")
++				mr = 0;
++			
++			return {left:ml, top:mt, right:mr, bottom:mb};
++		}
++		
++		/**
++		 * Returns an object containing the child's positioning values.
++		 * 
++		 * @param child Object The element whose positions are required.
++		 * 
++		 * @return Object A structure of {top:Number, left:Number, bottom:Number, right:Number}
++         *
++         *  @langversion 3.0
++         *  @playerversion Flash 10.2
++         *  @playerversion AIR 2.6
++         *  @productversion FlexJS 0.8
++		 */
++		protected function childPositions(child:Object):Object
++		{
++			var left:Number = ValuesManager.valuesImpl.getValue(child, "left");
++			var right:Number = ValuesManager.valuesImpl.getValue(child, "right");
++			var top:Number = ValuesManager.valuesImpl.getValue(child, "top");
++			var bottom:Number = ValuesManager.valuesImpl.getValue(child, "bottom");
++			
++			return {top:top, left:left, bottom:bottom, right:right};
++		}
++		
++		/**
++		 * Returns the ILayoutView for the host.
++         *
++         *  @langversion 3.0
++         *  @playerversion Flash 10.2
++         *  @playerversion AIR 2.6
++         *  @productversion FlexJS 0.8
++		 * 
++		 * @flexjsignorecoercion org.apache.flex.core.ILayoutParent
++		 */
++		protected function get layoutView():ILayoutView
++		{
++			var viewBead:ILayoutHost = (host as ILayoutParent).getLayoutHost();
++			return viewBead.contentView;
++		}
++
++        /**
++         * @copy org.apache.flex.core.IBeadLayout#layout
++         *
++         *  @langversion 3.0
++         *  @playerversion Flash 10.2
++         *  @playerversion AIR 2.6
++         *  @productversion FlexJS 0.8
++         */
++		public function layout():Boolean
++		{
++            // override in subclass
++			return false;
++		}
++	}
++}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/9fd9b78b/frameworks/projects/Basic/src/main/flex/org/apache/flex/core/ListBase.as
----------------------------------------------------------------------
diff --cc frameworks/projects/Basic/src/main/flex/org/apache/flex/core/ListBase.as
index 562e74e,562e74e..3ec846a
--- a/frameworks/projects/Basic/src/main/flex/org/apache/flex/core/ListBase.as
+++ b/frameworks/projects/Basic/src/main/flex/org/apache/flex/core/ListBase.as
@@@ -17,15 -17,15 +17,12 @@@
  //
  ////////////////////////////////////////////////////////////////////////////////
  package org.apache.flex.core
--{
--	import org.apache.flex.core.IMXMLDocument;
--	import org.apache.flex.core.ValuesManager;
--	import org.apache.flex.core.ILayoutParent;
--	import org.apache.flex.events.Event;
--	import org.apache.flex.events.ValueChangeEvent;
--	import org.apache.flex.states.State;
--	import org.apache.flex.utils.MXMLDataInterpreter;
--    
++{    
++	/*
++	 *************
++	 * THIS CLASS IS NO LONGER NEEDED. INHERIT FROM DataContainerBase
++	 */
++	
      /**
       *  The ListBase class is the base class for most lists
       *  in FlexJS.
@@@ -35,7 -35,7 +32,7 @@@
       *  @playerversion AIR 2.6
       *  @productversion FlexJS 0.0
       */
--	public class ListBase extends UIBase implements IContentViewHost, ILayoutParent
++	public class ListBase extends DataContainerBase
  	{
          /**
           *  Constructor.
@@@ -47,89 -47,89 +44,7 @@@
           */
  		public function ListBase()
  		{
--			super();
--            
--			_strandChildren = new ListBaseStrandChildren(this);
++			super();            
  		}
--		
--		private var _strandChildren:ListBaseStrandChildren;
--		
--		/**
--		 * @private
--		 */
--		public function get strandChildren():IParent
--		{
--			return _strandChildren;
--		}
--		
--		/**
--		 * @private
--		 */
--		public function getLayoutHost():ILayoutHost
--		{
--			return view as ILayoutHost; 
--		}
--		
--		/**
--		 * @private
--         * @suppress {undefinedNames}
--		 * Support strandChildren.
--		 */
--		public function $numElements():int
--		{
--			return super.numElements();
--		}
--		
--		
--		/**
--		 * @private
--         * @suppress {undefinedNames}
--		 * Support strandChildren.
--		 */
--		public function $addElement(c:IChild, dispatchEvent:Boolean = true):void
--		{
--			super.addElement(c, dispatchEvent);
--		}
--		
--		/**
--		 * @private
--         * @suppress {undefinedNames}
--		 * Support strandChildren.
--		 */
--		public function $addElementAt(c:IChild, index:int, dispatchEvent:Boolean = true):void
--		{
--			super.addElementAt(c, index, dispatchEvent);
--		}
--		
--		/**
--		 * @private
--         * @suppress {undefinedNames}
--		 * Support strandChildren.
--		 */
--		public function $removeElement(c:IChild, dispatchEvent:Boolean = true):void
--		{
--			super.removeElement(c, dispatchEvent);
--		}
--		
--		/**
--		 * @private
--         * @suppress {undefinedNames}
--		 * Support strandChildren.
--		 */
--		public function $getElementIndex(c:IChild):int
--		{
--			return super.getElementIndex(c);
--		}
--		
--		/**
--		 * @private
--         * @suppress {undefinedNames}
--		 * Support strandChildren.
--		 */
--		public function $getElementAt(index:int):IChild
--		{
--			return super.getElementAt(index);
--		}
--
      }
  }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/9fd9b78b/frameworks/projects/Basic/src/main/flex/org/apache/flex/core/UIBase.as
----------------------------------------------------------------------
diff --cc frameworks/projects/Basic/src/main/flex/org/apache/flex/core/UIBase.as
index ca34c66,842ec95..d917b8d
--- a/frameworks/projects/Basic/src/main/flex/org/apache/flex/core/UIBase.as
+++ b/frameworks/projects/Basic/src/main/flex/org/apache/flex/core/UIBase.as
@@@ -158,6 -157,6 +158,7 @@@ package org.apache.flex.cor
              COMPILE::SWF
              {
                  MouseEventConverter.setupInstanceConverters(this);
++                doubleClickEnabled = true; // make JS and flash consistent
              }
              
              COMPILE::JS
@@@ -651,7 -646,7 +652,7 @@@
          COMPILE::JS
          public function set x(value:Number):void
          {
--            positioner.style.position = 'absolute';
++            //positioner.style.position = 'absolute';
              positioner.style.left = value.toString() + 'px';
          }
  
@@@ -684,7 -679,7 +685,7 @@@
  			}
  			COMPILE::JS
  			{
--				positioner.style.position = 'absolute';
++				//positioner.style.position = 'absolute';
  				positioner.style.left = value.toString() + 'px';
  			}
          }
@@@ -707,7 -702,7 +708,7 @@@
          COMPILE::JS
          public function set y(value:Number):void
          {
--            positioner.style.position = 'absolute';
++            //positioner.style.position = 'absolute';
              positioner.style.top = value.toString() + 'px';
          }
          
@@@ -740,7 -735,7 +741,7 @@@
  			}
  			COMPILE::JS
  			{
--				positioner.style.position = 'absolute';
++				//positioner.style.position = 'absolute';
  				positioner.style.top = value.toString() + 'px';				
  			}
          }
@@@ -1192,6 -1177,6 +1193,10 @@@
              COMPILE::JS
              {
                  var children:Array = internalChildren();
++                if (children.length == 0)
++                {
++                    return null;
++                }
                  return children[index].flexjs_wrapper;
              }
          }        
@@@ -1469,7 -1454,7 +1474,7 @@@
              if (positioner == null)
                  positioner = element;
              positioner.style.display = 'block';
--            positioner.style.position = 'relative';
++            //positioner.style.position = 'relative';
              
              element.flexjs_wrapper = this;
              

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/9fd9b78b/frameworks/projects/Basic/src/main/flex/org/apache/flex/core/UIButtonBase.as
----------------------------------------------------------------------
diff --cc frameworks/projects/Basic/src/main/flex/org/apache/flex/core/UIButtonBase.as
index de37c99,de37c99..9643b58
--- a/frameworks/projects/Basic/src/main/flex/org/apache/flex/core/UIButtonBase.as
+++ b/frameworks/projects/Basic/src/main/flex/org/apache/flex/core/UIButtonBase.as
@@@ -103,14 -103,14 +103,12 @@@ package org.apache.flex.cor
  		 */
  		override public function set x(value:Number):void
  		{
--			if (super.x != value) {
--				super.x = _x = value;
--                if (!style)
--                    style = { left: value };
--                else
--                    style.left = value;
--				dispatchEvent(new Event("xChanged"));
--			}
++			super.x = _x = value;
++			if (!style)
++				style = { left: value };
++			else
++				style.left = value;
++			dispatchEvent(new Event("xChanged"));
  		}
  		
          private var _y:Number;
@@@ -120,14 -120,14 +118,12 @@@
  		 */
  		override public function set y(value:Number):void
  		{
--			if (super.y != value) {
--				super.y = _y = value;
--                if (!style)
--                    style = { top: value };
--                else
--                    style.top = value;
--				dispatchEvent(new Event("yChanged"));
--			}
++			super.y = _y = value;
++			if (!style)
++				style = { top: value };
++			else
++				style.top = value;
++			dispatchEvent(new Event("yChanged"));
  		}
  		
  		/**
@@@ -750,7 -750,7 +746,7 @@@
  				_model = bead as IBeadModel;
              else if (bead is IBeadView)
                  _view = bead as IBeadView;
--			bead.strand = this;
++			//bead.strand = this; // super.addBead already did this!
  		}
  		
          /**

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/9fd9b78b/frameworks/projects/Basic/src/main/flex/org/apache/flex/core/View.as
----------------------------------------------------------------------
diff --cc frameworks/projects/Basic/src/main/flex/org/apache/flex/core/View.as
index 2d0f2c4,2d0f2c4..27882f3
--- a/frameworks/projects/Basic/src/main/flex/org/apache/flex/core/View.as
+++ b/frameworks/projects/Basic/src/main/flex/org/apache/flex/core/View.as
@@@ -17,7 -17,7 +17,18 @@@
  //
  ////////////////////////////////////////////////////////////////////////////////
  package org.apache.flex.core
--{    
++{    	
++	import org.apache.flex.core.IMXMLDocument;
++	import org.apache.flex.core.ValuesManager;
++	import org.apache.flex.events.Event;
++	import org.apache.flex.utils.MXMLDataInterpreter;
++	
++	/**
++	 * The default property uses when additional MXML content appears within an element's
++	 * definition in an MXML file.
++	 */
++	[DefaultProperty("mxmlContent")]
++	
      /**
       *  The View class is the class for most views in a FlexJS
       *  application.  It is generally used as the root tag of MXML
@@@ -29,6 -29,6 +40,84 @@@
       *  @productversion FlexJS 0.0
       */
  	public class View extends ViewBase
--	{
++	{		
++		public function View()
++		{
++			super();
++		}
++		
++		private var _mxmlDescriptor:Array;
++		private var _mxmlDocument:Object = this;
++		private var _initialized:Boolean;
++		
++		/**
++		 * @private
++		 */
++		override public function addedToParent():void
++		{
++			if (!_initialized)
++			{
++				// each MXML file can also have styles in fx:Style block
++				ValuesManager.valuesImpl.init(this);
++			}
++			
++			super.addedToParent();
++			
++			if (!_initialized)
++			{
++				MXMLDataInterpreter.generateMXMLInstances(_mxmlDocument, this, MXMLDescriptor);
++				
++				dispatchEvent(new Event("initBindings"));
++				dispatchEvent(new Event("initComplete"));
++				_initialized = true;
++				
++				// - why was this added here? childrenAdded(); //?? Is this necessary since MXMLDataInterpreter will already have called it
++			}
++		}
++		
++		/**
++		 *  @copy org.apache.flex.core.Application#MXMLDescriptor
++		 *  
++		 *  @langversion 3.0
++		 *  @playerversion Flash 10.2
++		 *  @playerversion AIR 2.6
++		 *  @productversion FlexJS 0.8
++		 */
++		public function get MXMLDescriptor():Array
++		{
++			return _mxmlDescriptor;
++		}
++		
++		/**
++		 *  @private
++		 */
++		public function setMXMLDescriptor(document:Object, value:Array):void
++		{
++			_mxmlDocument = document;
++			_mxmlDescriptor = value;
++		}
++		
++		/**
++		 *  @copy org.apache.flex.core.Application#generateMXMLAttributes()
++		 *  
++		 *  @langversion 3.0
++		 *  @playerversion Flash 10.2
++		 *  @playerversion AIR 2.6
++		 *  @productversion FlexJS 0.8
++		 */
++		public function generateMXMLAttributes(data:Array):void
++		{
++			MXMLDataInterpreter.generateMXMLProperties(this, data);
++		}
++		
++		/**
++		 *  @copy org.apache.flex.core.ItemRendererClassFactory#mxmlContent
++		 *  
++		 *  @langversion 3.0
++		 *  @playerversion Flash 10.2
++		 *  @playerversion AIR 2.6
++		 *  @productversion FlexJS 0.8
++		 */
++		public var mxmlContent:Array;
      }
  }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/9fd9b78b/frameworks/projects/Basic/src/main/flex/org/apache/flex/core/ViewBase.as
----------------------------------------------------------------------
diff --cc frameworks/projects/Basic/src/main/flex/org/apache/flex/core/ViewBase.as
index b385d74,73092af..cd9b835
--- a/frameworks/projects/Basic/src/main/flex/org/apache/flex/core/ViewBase.as
+++ b/frameworks/projects/Basic/src/main/flex/org/apache/flex/core/ViewBase.as
@@@ -23,36 -23,36 +23,36 @@@ package org.apache.flex.cor
      //--------------------------------------
      //  Events
      //--------------------------------------
--    
++
      /**
       *  Dispatched at startup. Attributes and sub-instances of
       *  the MXML document have been created and assigned.
       *  The component lifecycle is different
       *  than the Flex SDK.  There is no creationComplete event.
--     *  
++     *
       *  @langversion 3.0
       *  @playerversion Flash 10.2
       *  @playerversion AIR 2.6
       *  @productversion FlexJS 0.0
       */
  	[Event(name="initComplete", type="org.apache.flex.events.Event")]
--    
++
  	[DefaultProperty("mxmlContent")]
--    
++
      /**
       *  The ViewBase class is the base class for most views in a FlexJS
       *  application.
--     *  
++     *
       *  @langversion 3.0
       *  @playerversion Flash 10.2
       *  @playerversion AIR 2.6
       *  @productversion FlexJS 0.0
       */
--	public class ViewBase extends ContainerBase implements IPopUpHost, IApplicationView, ILayoutParent
++	public class ViewBase extends GroupBase implements IPopUpHost, IApplicationView
  	{
          /**
           *  Constructor.
--         *  
++         *
           *  @langversion 3.0
           *  @playerversion Flash 10.2
           *  @playerversion AIR 2.6
@@@ -61,19 -61,19 +61,19 @@@
  		public function ViewBase()
  		{
  			super();
--            
++
  			className = "flexjs";
  		}
--		
++
  		private var _applicationModel:Object;
--		
++
  		[Bindable("modelChanged")]
--        
++
          /**
           *  A reference to the Application's model.  Usually,
           *  a view is displaying the main model for an
           *  application.
--         *  
++         *
           *  @langversion 3.0
           *  @playerversion Flash 10.2
           *  @playerversion AIR 2.6
@@@ -83,7 -83,7 +83,7 @@@
  		{
  			return _applicationModel;
  		}
--        
++
          /**
           *  @private
           */
@@@ -92,20 -92,20 +92,6 @@@
              _applicationModel = value;
              dispatchEvent(new Event("modelChanged"));
          }
--		
--		/**
--		 * Implements the ILayoutParent protocol by returning the bead that
--		 * is acting as the host for layout.
--         *  
--         *  @langversion 3.0
--         *  @playerversion Flash 10.2
--         *  @playerversion AIR 2.6
--         *  @productversion FlexJS 0.0
--		 */
--		public function getLayoutHost():ILayoutHost
--		{
- 			return view as ILayoutHost;
 -			return getBeadByType(ILayoutHost) as ILayoutHost;
--		}
  
      }
  }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/9fd9b78b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/ButtonBar.as
----------------------------------------------------------------------
diff --cc frameworks/projects/Basic/src/main/flex/org/apache/flex/html/ButtonBar.as
index e4c58e7,e4c58e7..0dffead
--- a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/ButtonBar.as
+++ b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/ButtonBar.as
@@@ -18,23 -18,23 +18,26 @@@
  ////////////////////////////////////////////////////////////////////////////////
  package org.apache.flex.html
  {
++	import org.apache.flex.html.beads.models.ButtonBarModel;
++	
      COMPILE::JS
      {
--        import org.apache.flex.core.WrappedHTMLElement;            
++        import org.apache.flex.core.WrappedHTMLElement;
      }
  
  	/**
  	 *  The ButtonBar class is a component that displays a set of Buttons. The ButtonBar
--	 *  is actually a List with a default horizontal layout and an itemRenderer that 
++	 *  is actually a List with a default horizontal layout and an itemRenderer that
  	 *  produces Buttons. The ButtonBar uses the following beads:
--	 * 
++	 *
  	 *  org.apache.flex.core.IBeadModel: the data model for the ButtonBar, including the dataProvider.
  	 *  org.apache.flex.core.IBeadView: constructs the parts of the component.
  	 *  org.apache.flex.core.IBeadController: handles input events.
  	 *  org.apache.flex.core.IBeadLayout: sizes and positions the component parts.
  	 *  org.apache.flex.core.IDataProviderItemRendererMapper: produces itemRenderers.
  	 *  org.apache.flex.core.IItemRenderer: the class or class factory to use.
--	 *  
++	 *
++     *  @toplevel
  	 *  @langversion 3.0
  	 *  @playerversion Flash 10.2
  	 *  @playerversion AIR 2.6
@@@ -54,7 -54,7 +57,25 @@@
  		{
  			super();
  		}
--        
++		
++		public function get buttonWidths():Array
++		{
++			return ButtonBarModel(model).buttonWidths;
++		}
++		public function set buttonWidths(value:Array):void
++		{
++			ButtonBarModel(model).buttonWidths = value;
++		}
++		
++		public function get widthType():Number
++		{
++			return ButtonBarModel(model).widthType;
++		}
++		public function set widthType(value:Number):void
++		{
++			ButtonBarModel(model).widthType = value;
++		}
++
          /**
           * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement
           */
@@@ -62,14 -62,14 +83,12 @@@
          override protected function createElement():WrappedHTMLElement
          {
              element = document.createElement('div') as WrappedHTMLElement;
--            element.style.overflow = 'auto';
              positioner = element;
--            positioner.style.position = 'relative';
--            
++
              className = 'ButtonBar';
--            
++
              element.flexjs_wrapper = this;
--            
++
              return element;
          }
  	}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/9fd9b78b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/ButtonBase.as
----------------------------------------------------------------------
diff --cc frameworks/projects/Basic/src/main/flex/org/apache/flex/html/ButtonBase.as
index a30f0cf,a30f0cf..72d19e1
--- a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/ButtonBase.as
+++ b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/ButtonBase.as
@@@ -84,7 -84,7 +84,6 @@@ package org.apache.flex.htm
              element.setAttribute('type', 'button');
              
              positioner = element;
--            positioner.style.position = 'relative';
              element.flexjs_wrapper = this;
              
              /* AJH comment out until we figure out why it is needed

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/9fd9b78b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/CSSCheckBox.as
----------------------------------------------------------------------
diff --cc frameworks/projects/Basic/src/main/flex/org/apache/flex/html/CSSCheckBox.as
index 0000000,0000000..40c0b7a
new file mode 100644
--- /dev/null
+++ b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/CSSCheckBox.as
@@@ -1,0 -1,0 +1,219 @@@
++////////////////////////////////////////////////////////////////////////////////
++//
++//  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.html
++{
++    COMPILE::SWF
++    {
++        import flash.events.MouseEvent;
++    }
++
++	import org.apache.flex.core.IStrand;
++	import org.apache.flex.core.IToggleButtonModel;
++	import org.apache.flex.core.IUIBase;
++    COMPILE::SWF
++    {
++        import org.apache.flex.core.UIButtonBase;
++    }
++    COMPILE::JS
++    {
++        import org.apache.flex.core.UIBase;
++        import org.apache.flex.core.WrappedHTMLElement;
++		import org.apache.flex.html.supportClasses.CheckBoxIcon;
++    }
++	import org.apache.flex.events.Event;
++	import org.apache.flex.events.MouseEvent;
++
++    //--------------------------------------
++    //  Events
++    //--------------------------------------
++
++    /**
++     *  Dispatched when the user checks or un-checks the CSSCheckBox.
++     *
++     *  @langversion 3.0
++     *  @playerversion Flash 10.2
++     *  @playerversion AIR 2.6
++     *  @productversion FlexJS 0.0
++     */
++	[Event(name="change", type="org.apache.flex.events.Event")]
++
++    /**
++     *  The CSSCheckBox class implements the common user interface
++     *  control.  The CSSCheckBox includes its text label and is styleable using CSS.
++     * To style the checkbox control, a `checkClassName` should be specified which corresponds to a CSS class name.
++     *
++     *  @toplevel
++     *  @langversion 3.0
++     *  @playerversion Flash 10.2
++     *  @playerversion AIR 2.6
++     *  @productversion FlexJS 0.0
++     */
++    COMPILE::SWF
++	public class CSSCheckBox extends UIButtonBase implements IStrand
++	{
++        /**
++         *  Constructor.
++         *
++         *  @langversion 3.0
++         *  @playerversion Flash 10.2
++         *  @playerversion AIR 2.6
++         *  @productversion FlexJS 0.0
++         */
++		public function CSSCheckBox()
++		{
++			super();
++
++			addEventListener(org.apache.flex.events.MouseEvent.CLICK, internalMouseHandler);
++		}
++
++        /**
++         *  The text label for the CSSCheckBox.
++         *
++         *  @langversion 3.0
++         *  @playerversion Flash 10.2
++         *  @playerversion AIR 2.6
++         *  @productversion FlexJS 0.0
++         */
++		public function get text():String
++		{
++			return IToggleButtonModel(model).text;
++		}
++
++        /**
++         *  @private
++         */
++		public function set text(value:String):void
++		{
++			IToggleButtonModel(model).text = value;
++		}
++
++        [Bindable("change")]
++        /**
++         *  <code>true</code> if the check mark is displayed.
++         *
++         *  @default false
++         *  @langversion 3.0
++         *  @playerversion Flash 10.2
++         *  @playerversion AIR 2.6
++         *  @productversion FlexJS 0.0
++         */
++		public function get selected():Boolean
++		{
++			return IToggleButtonModel(model).selected;
++		}
++
++        /**
++         *  @private
++         */
++		public function set selected(value:Boolean):void
++		{
++			IToggleButtonModel(model).selected = value;
++		}
++
++		private function internalMouseHandler(event:org.apache.flex.events.MouseEvent) : void
++		{
++			selected = !selected;
++			dispatchEvent(new Event("change"));
++		}
++        private var _checkClassName:String;
++        public function get checkClassName():String
++        {
++            return _checkClassName;
++        }
++        public function set checkClassName(value:String):void
++        {
++            _checkClassName = value;
++        }
++        
++	}
++
++    COMPILE::JS
++    public class CSSCheckBox extends UIBase
++    {
++
++		private var _label:WrappedHTMLElement;
++		private var _icon:CheckBoxIcon;
++		private var _styleDiv:WrappedHTMLElement;
++        private var _textNode:WrappedHTMLElement
++
++		private static var _checkNumber:Number = 0;
++
++        /**
++         * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement
++         */
++        override protected function createElement():WrappedHTMLElement
++        {
++            element = document.createElement('label') as WrappedHTMLElement;
++			_label = element;
++			_icon = new CheckBoxIcon();
++            element.appendChild(_icon.element);
++            // Add a span to allow checkbox styling
++            _styleDiv = document.createElement('div') as WrappedHTMLElement;
++            if(_checkClassName)
++                _styleDiv.setAttribute("class",_checkClassName)
++            element.appendChild(_styleDiv);
++            _textNode = document.createTextNode('') as WrappedHTMLElement;
++            element.appendChild(_textNode);
++
++            positioner = element;
++            //positioner.style.position = 'relative';
++            element.flexjs_wrapper = this;
++			_icon.element.flexjs_wrapper = this;
++            _styleDiv.flexjs_wrapper = this;
++
++            className = 'CSSCheckBox';
++            typeNames = 'CSSCheckBox';
++
++            return element;
++        }
++
++        private var _checkClassName:String;
++        public function get checkClassName():String
++        {
++            return _checkClassName;
++        }
++        public function set checkClassName(value:String):void
++        {
++            _checkClassName = value;
++            if(_styleDiv)
++                _styleDiv.setAttribute("class",_checkClassName);
++        }
++
++        public function get text():String
++        {
++            return _textNode.nodeValue;
++        }
++
++        public function set text(value:String):void
++        {
++            _textNode.nodeValue = value;
++        }
++
++        public function get selected():Boolean
++        {
++            return (_icon.element as HTMLInputElement).checked;
++        }
++
++        public function set selected(value:Boolean):void
++        {
++           (_icon.element as HTMLInputElement).checked = value;
++        }
++    }
++
++}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/9fd9b78b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/CheckBox.as
----------------------------------------------------------------------
diff --cc frameworks/projects/Basic/src/main/flex/org/apache/flex/html/CheckBox.as
index 5b8e0a5,632b539..ef78a05
--- a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/CheckBox.as
+++ b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/CheckBox.as
@@@ -57,6 -57,6 +57,7 @@@ package org.apache.flex.htm
       *  The CheckBox class implements the common user interface
       *  control.  The CheckBox includes its text label.
       *
++     *  @toplevel
       *  @langversion 3.0
       *  @playerversion Flash 10.2
       *  @playerversion AIR 2.6
@@@ -168,7 -153,7 +155,7 @@@
              element.appendChild(document.createTextNode(''));
  
              positioner = element;
--            positioner.style.position = 'relative';
++            //positioner.style.position = 'relative';
              element.flexjs_wrapper = this;
  			_icon.element.flexjs_wrapper = this;
  

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/9fd9b78b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/Container.as
----------------------------------------------------------------------
diff --cc frameworks/projects/Basic/src/main/flex/org/apache/flex/html/Container.as
index fe35dde,ee30b7f..cbcf526
--- a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/Container.as
+++ b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/Container.as
@@@ -19,19 -19,17 +19,18 @@@
  package org.apache.flex.html
  {
  	import org.apache.flex.core.ContainerBase;
--	import org.apache.flex.core.IChrome;
--	import org.apache.flex.core.IContainer;
-     import org.apache.flex.core.ILayoutParent;
-     import org.apache.flex.core.ILayoutHost;
--	import org.apache.flex.core.IUIBase;
--    COMPILE::JS
--    {
--        import org.apache.flex.core.WrappedHTMLElement;            
--    }
++	import org.apache.flex.core.IMXMLDocument;
++	import org.apache.flex.core.ValuesManager;
  	import org.apache.flex.events.Event;
++	import org.apache.flex.utils.MXMLDataInterpreter;
  	
++	/**
++	 * The default property uses when additional MXML content appears within an element's
++	 * definition in an MXML file.
++	 */
  	[DefaultProperty("mxmlContent")]
--    
++
++	
      /**
       *  The Container class implements a basic container for
       *  other controls and containers.  The position and size
@@@ -60,6 -58,6 +59,7 @@@
       *  control and not a Container because the Alert does not
       *  support an arbitrary set of children.
       *  
++     *  @toplevel
       *  @see org.apache.flex.html.beads.layout
       *  @see org.apache.flex.html.supportClasses.ScrollingViewport
       *  @langversion 3.0
@@@ -67,7 -65,7 +67,7 @@@
       *  @playerversion AIR 2.6
       *  @productversion FlexJS 0.0
       */    
- 	public class Container extends ContainerBase implements ILayoutParent
 -	public class Container extends ContainerBase
++	public class Container extends ContainerBase implements IMXMLDocument
  	{
          /**
           *  Constructor.
@@@ -81,35 -79,30 +81,79 @@@
  		{
  			super();
  		}
--
-         public function getLayoutHost():ILayoutHost
-         {
-             return view as ILayoutHost; 
-         }
-             
--        /**
--         * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement
--         */
--        COMPILE::JS
--        override protected function createElement():WrappedHTMLElement
--        {
--            element = document.createElement('div') as WrappedHTMLElement;
--            
--            positioner = element;
--            
--            // absolute positioned children need a non-null
--            // position value in the parent.  It might
--            // get set to 'absolute' if the container is
--            // also absolutely positioned
--            positioner.style.position = 'relative';
--            element.flexjs_wrapper = this;
--            
--            /*addEventListener('childrenAdded',
--            runLayoutHandler);
--            addEventListener('elementRemoved',
--            runLayoutHandler);*/
--            
--            return element;
--        }        
++		
++		private var _mxmlDescriptor:Array;
++		private var _mxmlDocument:Object = this;
++		private var _initialized:Boolean;
++		
++		/**
++		 * @private
++		 */
++		override public function addedToParent():void
++		{
++			if (!_initialized)
++			{
++				// each MXML file can also have styles in fx:Style block
++				ValuesManager.valuesImpl.init(this);
++			}
++			
++			super.addedToParent();
++			
++			if (!_initialized)
++			{
++				MXMLDataInterpreter.generateMXMLInstances(_mxmlDocument, this, MXMLDescriptor);
++				
++				dispatchEvent(new Event("initBindings"));
++				dispatchEvent(new Event("initComplete"));
++				_initialized = true;
++				
++				//?? why is this here? childrenAdded(); //?? Is this needed since MXMLDataInterpreter will have already called it
++			}
++		}
++		
++		/**
++		 *  @copy org.apache.flex.core.Application#MXMLDescriptor
++		 *  
++		 *  @langversion 3.0
++		 *  @playerversion Flash 10.2
++		 *  @playerversion AIR 2.6
++		 *  @productversion FlexJS 0.8
++		 */
++		public function get MXMLDescriptor():Array
++		{
++			return _mxmlDescriptor;
++		}
++		
++		/**
++		 *  @private
++		 */
++		public function setMXMLDescriptor(document:Object, value:Array):void
++		{
++			_mxmlDocument = document;
++			_mxmlDescriptor = value;
++		}
++		
++		/**
++		 *  @copy org.apache.flex.core.Application#generateMXMLAttributes()
++		 *  
++		 *  @langversion 3.0
++		 *  @playerversion Flash 10.2
++		 *  @playerversion AIR 2.6
++		 *  @productversion FlexJS 0.8
++		 */
++		public function generateMXMLAttributes(data:Array):void
++		{
++			MXMLDataInterpreter.generateMXMLProperties(this, data);
++		}
++		
++		/**
++		 *  @copy org.apache.flex.core.ItemRendererClassFactory#mxmlContent
++		 *  
++		 *  @langversion 3.0
++		 *  @playerversion Flash 10.2
++		 *  @playerversion AIR 2.6
++		 *  @productversion FlexJS 0.8
++		 */
++		public var mxmlContent:Array;
  	}
  }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/9fd9b78b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/ControlBar.as
----------------------------------------------------------------------
diff --cc frameworks/projects/Basic/src/main/flex/org/apache/flex/html/ControlBar.as
index da65539,da65539..588bd8c
--- a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/ControlBar.as
+++ b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/ControlBar.as
@@@ -18,36 -18,36 +18,36 @@@
  ////////////////////////////////////////////////////////////////////////////////
  package org.apache.flex.html
  {
--	
++
  	import org.apache.flex.core.IBeadLayout;
  	import org.apache.flex.core.IChrome;
--	import org.apache.flex.core.IContainer;
  	import org.apache.flex.core.ValuesManager;
      COMPILE::JS
      {
--        import org.apache.flex.core.WrappedHTMLElement;            
++        import org.apache.flex.core.WrappedHTMLElement;
      }
  
  	/**
  	 *  The ControlBar class is used within a Panel as a place to position
--	 *  additional controls. The ControlBar appears at the bottom of the 
++	 *  additional controls. The ControlBar appears at the bottom of the
  	 *  org.apache.flex.html.Panel
  	 *  and is not part of the Panel's scrollable content area. The ControlBar
  	 *  is a Container and implements the org.apache.flex.core.IChrome interface, indicating that is
  	 *  outside of the Container's content area. The ControlBar uses the following
  	 *  beads:
--	 * 
++	 *
  	 *  org.apache.flex.core.IBeadModel: the data model for the component.
  	 *  org.apache.flex.core.IMeasurementBead: helps determine the overlay size of the ControlBar for layout.
  	 *  org.apache.flex.core.IBorderBead: if present, displays a border around the component.
  	 *  org.apache.flex.core.IBackgroundBead: if present, displays a solid background below the ControlBar.
--	 *  
++	 *
++     *  @toplevel
  	 *  @langversion 3.0
  	 *  @playerversion Flash 10.2
  	 *  @playerversion AIR 2.6
  	 *  @productversion FlexJS 0.0
  	 */
--	public class ControlBar extends Container implements IContainer, IChrome
++	public class ControlBar extends Group implements IChrome
  	{
  		/**
  		 *  constructor.
@@@ -60,40 -60,40 +60,36 @@@
  		public function ControlBar()
  		{
  			super();
--			
++
  			className = "ControlBar";
  		}
--		
++
  		/**
  		 * @private
  		 */
  		override public function addedToParent():void
  		{
--			super.addedToParent();	
++			super.addedToParent();
  			
  			if( getBeadByType(IBeadLayout) == null ) {
  				var layout:IBeadLayout = new (ValuesManager.valuesImpl.getValue(this, "iBeadLayout")) as IBeadLayout;
  				addBead(layout);
  			}
  		}
--        
++
          /**
           * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement
           */
          COMPILE::JS
          override protected function createElement():WrappedHTMLElement
          {
--            element = document.createElement('div') as WrappedHTMLElement;
--            element.className = 'ControlBar';
--            element.style.display = 'inline';
--            typeNames = 'ControlBar';
--            
--            positioner = element;
--            positioner.style.position = 'relative';
--            element.flexjs_wrapper = this;
--            
++			element = document.createElement('div') as WrappedHTMLElement;
++			
++			positioner = element;
++			element.flexjs_wrapper = this;
++
              return element;
--        }        
++        }
  
  	}
  }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/9fd9b78b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/DataContainer.as
----------------------------------------------------------------------
diff --cc frameworks/projects/Basic/src/main/flex/org/apache/flex/html/DataContainer.as
index 5d33d55,0000000..231ba42
mode 100644,000000..100644
--- a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/DataContainer.as
+++ b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/DataContainer.as
@@@ -1,255 -1,0 +1,145 @@@
 +////////////////////////////////////////////////////////////////////////////////
 +//
 +//  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.html
 +{
++	import org.apache.flex.core.DataContainerBase;
++	
 +	import org.apache.flex.core.ContainerBaseStrandChildren;
 +	import org.apache.flex.core.IContentViewHost;
++	import org.apache.flex.core.IChild;
 +	import org.apache.flex.core.IDataProviderItemRendererMapper;
 +	import org.apache.flex.core.IFactory;
 +	import org.apache.flex.core.IItemRendererClassFactory;
- 	import org.apache.flex.core.IItemRendererProvider;
++	import org.apache.flex.core.IItemRenderer;
++	import org.apache.flex.core.IItemRendererParent;
++	import org.apache.flex.core.ILayoutView;
++	import org.apache.flex.core.IList;
 +	import org.apache.flex.core.IListPresentationModel;
 +	import org.apache.flex.core.IRollOverModel;
 +	import org.apache.flex.core.IDataProviderModel;
 +	import org.apache.flex.core.ListBase;
 +	import org.apache.flex.core.UIBase;
 +	import org.apache.flex.core.ValuesManager;
 +    COMPILE::JS
 +    {
 +        import org.apache.flex.core.WrappedHTMLElement;
 +        import org.apache.flex.html.beads.ListView;
 +        import org.apache.flex.html.supportClasses.DataGroup;
 +    }
 +	import org.apache.flex.events.Event;
 +	import org.apache.flex.events.IEventDispatcher;
 +	import org.apache.flex.html.beads.models.ListPresentationModel;
- 	
++	import org.apache.flex.html.beads.IListView;
++
 +	/**
 +	 *  Indicates that the initialization of the list is complete.
- 	 *  
++	 *
 +	 *  @langversion 3.0
 +	 *  @playerversion Flash 10.2
 +	 *  @playerversion AIR 2.6
 +	 *  @productversion FlexJS 0.0
 +	 */
 +	[Event(name="initComplete", type="org.apache.flex.events.Event")]
- 	
++
 +	/**
- 	 *  The List class is a component that displays multiple data items. The List uses
++	 *  The DataContainer class is a component that displays multiple data items. The DataContainer uses
 +	 *  the following bead types:
- 	 * 
++	 *
 +	 *  org.apache.flex.core.IBeadModel: the data model, which includes the dataProvider.
 +	 *  org.apache.flex.core.IBeadView:  the bead that constructs the visual parts of the list.
 +	 *  org.apache.flex.core.IBeadController: the bead that handles input and output.
 +	 *  org.apache.flex.core.IBeadLayout: the bead responsible for the size and position of the itemRenderers.
 +	 *  org.apache.flex.core.IDataProviderItemRendererMapper: the bead responsible for creating the itemRenders.
 +	 *  org.apache.flex.core.IItemRenderer: the class or factory used to display an item in the list.
- 	 *  
++	 *
 +	 *  @langversion 3.0
 +	 *  @playerversion Flash 10.2
 +	 *  @playerversion AIR 2.6
 +	 *  @productversion FlexJS 0.0
 +	 */
- 	public class DataContainer extends ListBase implements IItemRendererProvider
++	public class DataContainer extends DataContainerBase
 +	{
 +		/**
 +		 *  constructor.
 +		 *
 +		 *  @langversion 3.0
 +		 *  @playerversion Flash 10.2
 +		 *  @playerversion AIR 2.6
 +		 *  @productversion FlexJS 0.0
 +		 */
 +		public function DataContainer()
 +		{
 +			super();
- 			addEventListener("beadsAdded", beadsAddedHandler);
 +		}
- 		
++
 +		/**
 +		 *  The name of field within the data used for display. Each item of the
 +		 *  data should have a property with this name.
 +		 *
 +		 *  @langversion 3.0
 +		 *  @playerversion Flash 10.2
 +		 *  @playerversion AIR 2.6
 +		 *  @productversion FlexJS 0.0
 +		 */
 +		public function get labelField():String
 +		{
 +			return IDataProviderModel(model).labelField;
 +		}
 +		public function set labelField(value:String):void
 +		{
 +            IDataProviderModel(model).labelField = value;
 +		}
- 		
++
 +		/**
 +		 *  The data being display by the List.
 +		 *
 +		 *  @langversion 3.0
 +		 *  @playerversion Flash 10.2
 +		 *  @playerversion AIR 2.6
 +		 *  @productversion FlexJS 0.0
 +		 */
 +        public function get dataProvider():Object
 +        {
 +            return IDataProviderModel(model).dataProvider;
 +        }
 +        public function set dataProvider(value:Object):void
 +        {
 +            IDataProviderModel(model).dataProvider = value;
 +        }
 +
- 			
++
 +		/**
 +		 *  The presentation model for the list.
 +		 *
 +		 *  @langversion 3.0
 +		 *  @playerversion Flash 10.2
 +		 *  @playerversion AIR 2.6
 +		 *  @productversion FlexJS 0.0
 +		 */
 +		public function get presentationModel():IListPresentationModel
 +		{
 +			var presModel:IListPresentationModel = getBeadByType(IListPresentationModel) as IListPresentationModel;
 +			if (presModel == null) {
 +				presModel = new ListPresentationModel();
 +				addBead(presModel);
 +			}
 +			return presModel;
 +		}
- 		
- 		/**
- 		 *  The default height of each cell in every column
- 		 *
- 		 *  @langversion 3.0
- 		 *  @playerversion Flash 10.2
- 		 *  @playerversion AIR 2.6
- 		 *  @productversion FlexJS 0.0
- 		 */
- 		public function get rowHeight():Number
- 		{
- 			return presentationModel.rowHeight;
- 		}
- 		public function set rowHeight(value:Number):void
- 		{
- 			presentationModel.rowHeight = value;
- 		}
- 				
- 		private var _itemRenderer:IFactory;
- 		
- 		/**
- 		 *  The class or factory used to display each item.
- 		 *
- 		 *  @langversion 3.0
- 		 *  @playerversion Flash 10.2
- 		 *  @playerversion AIR 2.6
- 		 *  @productversion FlexJS 0.0
- 		 */
- 		public function get itemRenderer():IFactory
- 		{
- 			return _itemRenderer;
- 		}
- 		public function set itemRenderer(value:IFactory):void
- 		{
- 			_itemRenderer = value;
- 		}
- 		
- 		/**
- 		 * Returns whether or not the itemRenderer property has been set.
- 		 *
- 		 *  @see org.apache.flex.core.IItemRendererProvider
- 		 *
- 		 *  @langversion 3.0
- 		 *  @playerversion Flash 10.2
- 		 *  @playerversion AIR 2.6
- 		 *  @productversion FlexJS 0.0
- 		 */
- 		public function get hasItemRenderer():Boolean
- 		{
- 			var result:Boolean = false;
- 			
- 			COMPILE::SWF {
- 				result = _itemRenderer != null;
- 			}
- 			
- 			COMPILE::JS {
- 				var test:* = _itemRenderer;
- 				result = _itemRenderer !== null && test !== undefined;
- 			}
- 			
- 			return result;
- 		}
- 		
- 		
- 		/**
- 		 * @private
- 		 */
- 		override public function addedToParent():void
- 		{
-             super.addedToParent();
-             		
- 			dispatchEvent(new Event("initComplete"));
- 		}
-         
- 		/**
- 		 * @private
- 		 */
- 	    private function beadsAddedHandler(e:Event):void
- 		{
-             if (getBeadByType(IDataProviderItemRendererMapper) == null)
-             {
-                 var mapper:IDataProviderItemRendererMapper = new (ValuesManager.valuesImpl.getValue(this, "iDataProviderItemRendererMapper")) as IDataProviderItemRendererMapper;
-                 addBead(mapper);
-             }
- 			var itemRendererFactory:IItemRendererClassFactory = getBeadByType(IItemRendererClassFactory) as IItemRendererClassFactory;
- 			if (!itemRendererFactory)
- 			{
- 				itemRendererFactory = new (ValuesManager.valuesImpl.getValue(this, "iItemRendererClassFactory")) as IItemRendererClassFactory;
- 				addBead(itemRendererFactory);
- 			}
- 		}
- 		
-         /**
-          * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement
-          */
-         COMPILE::JS
-         override protected function createElement():WrappedHTMLElement
-         {
-             super.createElement();
-             className = 'List';
-             
-             return element;
-         }        
- 
-         /**
-          * @flexjsignorecoercion org.apache.flex.html.beads.ListView 
-          * @flexjsignorecoercion org.apache.flex.html.supportClasses.DataGroup 
-          */
-         COMPILE::JS
-         override public function internalChildren():Array
-         {
-             var listView:ListView = getBeadByType(ListView) as ListView;
-             var dg:DataGroup = listView.dataGroup as DataGroup;
-             var renderers:Array = dg.internalChildren();
-             return renderers;
-         };
 +   	}
 +}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/9fd9b78b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/DataGrid.as
----------------------------------------------------------------------
diff --cc frameworks/projects/Basic/src/main/flex/org/apache/flex/html/DataGrid.as
index fcb4029,c271134..fda1b46
--- a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/DataGrid.as
+++ b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/DataGrid.as
@@@ -22,7 -22,6 +22,7 @@@ package org.apache.flex.htm
  	import org.apache.flex.core.IDataGridModel;
  	import org.apache.flex.core.IDataGridPresentationModel;
  	import org.apache.flex.core.UIBase;
-     import org.apache.flex.core.ValuesManager;
++	import org.apache.flex.core.ValuesManager;
  	import org.apache.flex.html.beads.models.DataGridPresentationModel;
  	
  	[Event(name="change", type="org.apache.flex.events.Event")]
@@@ -35,12 -34,12 +35,13 @@@
  	 *  view bead (usually org.apache.flex.html.beads.DataGridView) constructs these parts while 
  	 *  itemRenderer factories contruct the elements to display the data in each cell.
  	 *  
++     *  @toplevel
  	 *  @langversion 3.0
  	 *  @playerversion Flash 10.2
  	 *  @playerversion AIR 2.6
  	 *  @productversion FlexJS 0.0
  	 */
--	public class DataGrid extends UIBase
++	public class DataGrid extends Group
  	{
  		/**
  		 *  constructor.
@@@ -104,18 -103,8 +105,17 @@@
  		{
  			return IDataGridModel(model).selectedIndex;
  		}
-         public function set selectedIndex(value:int):void
-         {
-             IDataGridModel(model).selectedIndex = value;
-         }
- 
++		public function set selectedIndex(value:int):void
++		{
++			IDataGridModel(model).selectedIndex = value;
++		}
++		
++		/**
++		 * @private
++		 */
++		private var _presentationModel:IDataGridPresentationModel;
  		
  		/**
-          * @private
-          */
-         private var _presentationModel:IDataGridPresentationModel;
-                
-         /**
  		 *  The DataGrid's presentation model
  		 *
  		 *  @langversion 3.0
@@@ -125,22 -114,16 +125,22 @@@
  		 */
  		public function get presentationModel():IDataGridPresentationModel
  		{
-             if (_presentationModel == null) {
-                 var c:Class = ValuesManager.valuesImpl.getValue(this, "iDataGridPresentationModel");
-                 if (c) {
-                     var presModel:Object = new c();
-                     _presentationModel = presModel as IDataGridPresentationModel;
-                     if (_presentationModel != null) {
-                         addBead(_presentationModel as IBead);
-                     }
-                 }
-             }
-             return _presentationModel;
-         }
-         
-         public function set presentationModel(value:IDataGridPresentationModel):void
-         {
-             _presentationModel = value;
 -			var beadMod:IBead = getBeadByType(IDataGridPresentationModel);
 -			var presModel:IDataGridPresentationModel;
 -			
 -			if (beadMod == null) {
 -				presModel = new DataGridPresentationModel();
 -				addBead(presModel);
 -			} else {
 -				presModel = beadMod as IDataGridPresentationModel;
++			if (_presentationModel == null) {
++				var c:Class = ValuesManager.valuesImpl.getValue(this, "iDataGridPresentationModel");
++				if (c) {
++					var presModel:Object = new c();
++					_presentationModel = presModel as IDataGridPresentationModel;
++					if (_presentationModel != null) {
++						addBead(_presentationModel as IBead);
++					}
++				}
+ 			}
 -			return presModel;
++			
++			return _presentationModel;
++		}
++		public function set presentationModel(value:IDataGridPresentationModel):void
++		{
++			_presentationModel = value;
  		}
  				
  		/**

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/9fd9b78b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/DateChooser.as
----------------------------------------------------------------------
diff --cc frameworks/projects/Basic/src/main/flex/org/apache/flex/html/DateChooser.as
index 4f0bdfe,62b5a3e..971ed75
--- a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/DateChooser.as
+++ b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/DateChooser.as
@@@ -19,7 -19,7 +19,7 @@@
  package org.apache.flex.html
  {
  	import org.apache.flex.core.IDateChooserModel;
--	import org.apache.flex.core.UIBase;
++	import org.apache.flex.html.Group;
  
  	/**
  	 * The change event is dispatched when the selectedDate is changed.
@@@ -29,12 -29,12 +29,13 @@@
  	/**
  	 *  The DateChooser class is a component that displays a calendar.
  	 *
++     *  @toplevel
  	 *  @langversion 3.0
  	 *  @playerversion Flash 10.2
  	 *  @playerversion AIR 2.6
  	 *  @productversion FlexJS 0.0
  	 */
--	public class DateChooser extends UIBase
++	public class DateChooser extends Group
  	{
  		/**
  		 *  constructor.
@@@ -47,14 -47,11 +48,9 @@@
  		public function DateChooser()
  		{
  			super();
 -			className = "DateChooser";
--
--			// fix the DateChooser's size
--			width = 280;
--			height = 240;
-             
-             // default to today
-             selectedDate = new Date();
- 
++			
++			// default to today
++			selectedDate = new Date();
  		}
  
  		/**

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/9fd9b78b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/DropDownList.as
----------------------------------------------------------------------
diff --cc frameworks/projects/Basic/src/main/flex/org/apache/flex/html/DropDownList.as
index dd069b2,dd069b2..d547f27
--- a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/DropDownList.as
+++ b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/DropDownList.as
@@@ -23,24 -23,24 +23,25 @@@ package org.apache.flex.htm
      COMPILE::JS
      {
          import goog.events;
--        import org.apache.flex.core.WrappedHTMLElement;            
++        import org.apache.flex.core.WrappedHTMLElement;
          import org.apache.flex.html.beads.models.ArraySelectionModel;
      }
--    
++
      //--------------------------------------
      //  Events
      //--------------------------------------
--    
++
      /**
       *  Dispatched when the user selects an item.
--     *  
++     *
++     *  @toplevel
       *  @langversion 3.0
       *  @playerversion Flash 10.2
       *  @playerversion AIR 2.6
       *  @productversion FlexJS 0.0
       */
      [Event(name="change", type="org.apache.flex.events.Event")]
--    
++
      /**
       *  The DropDownList class implements the basic equivalent of
       *  the <code>&lt;select&gt;</code> tag in HTML.
@@@ -48,23 -48,23 +49,23 @@@
       *  choose from an array of strings.  More complex controls
       *  would display icons as well as strings, or colors instead
       *  of strings or just about anything.
--     * 
--     *  The default behavior only lets the user choose one and 
++     *
++     *  The default behavior only lets the user choose one and
       *  only one item.  More complex controls would allow
       *  mutiple selection by not dismissing the dropdown as soon
       *  as a selection is made.
--     * 
--     *  
++     *
++     *
       *  @langversion 3.0
       *  @playerversion Flash 10.2
       *  @playerversion AIR 2.6
       *  @productversion FlexJS 0.0
--     */    
++     */
  	public class DropDownList extends Button
  	{
          /**
           *  Constructor.
--         *  
++         *
           *  @langversion 3.0
           *  @playerversion Flash 10.2
           *  @playerversion AIR 2.6
@@@ -77,12 -77,12 +78,12 @@@
                  model = new ArraySelectionModel();
              }
  		}
--		
++
          /**
           *  The data set to be displayed.  Usually a simple
           *  array of strings.  A more complex component
           *  would allow more complex data and data sets.
--         *  
++         *
           *  @langversion 3.0
           *  @playerversion Flash 10.2
           *  @playerversion AIR 2.6
@@@ -108,14 -108,14 +109,14 @@@
                  var n:int;
                  var opt:HTMLOptionElement;
                  var dd:HTMLSelectElement = element as HTMLSelectElement;
--                
++
                  model.dataProvider = value;
                  dp = dd.options;
                  n = dp.length;
                  for (i = 0; i < n; i++) {
                      dd.remove(0);
                  }
--                
++
                  var lf:String = labelField;
                  n = value.length;
                  for (i = 0; i < n; i++) {
@@@ -129,11 -129,11 +130,11 @@@
  
              }
          }
--        
++
          [Bindable("change")]
          /**
           *  @copy org.apache.flex.core.ISelectionModel#selectedIndex
--         *  
++         *
           *  @langversion 3.0
           *  @playerversion Flash 10.2
           *  @playerversion AIR 2.6
@@@ -156,12 -156,12 +157,12 @@@
                  (element as HTMLSelectElement).selectedIndex = ISelectionModel(model).selectedIndex;
              }
          }
--        
++
  
          [Bindable("change")]
          /**
           *  @copy org.apache.flex.core.ISelectionModel#selectedItem
--         *  
++         *
           *  @langversion 3.0
           *  @playerversion Flash 10.2
           *  @playerversion AIR 2.6
@@@ -184,7 -184,7 +185,7 @@@
                  (element as HTMLSelectElement).selectedIndex = ISelectionModel(model).selectedIndex;
              }
          }
--                        
++
          /**
           *  The name of field within the data used for display. Each item of the
           *  data should have a property with this name.
@@@ -202,7 -202,7 +203,7 @@@
          {
              ISelectionModel(model).labelField = value;
          }
--        
++
          /**
           * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement
           * @flexjsignorecoercion HTMLSelectElement
@@@ -214,15 -214,15 +215,15 @@@
              (element as HTMLSelectElement).size = 1;
              goog.events.listen(element, 'change',
                  changeHandler);
--            
++
              positioner = element;
--            positioner.style.position = 'relative';
--            
++            //positioner.style.position = 'relative';
++
              element.flexjs_wrapper = this;
--            
++
              return element;
--        } 
--        
++        }
++
          /**
           * @flexjsignorecoercion HTMLSelectElement
           */

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/9fd9b78b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/Form.as
----------------------------------------------------------------------
diff --cc frameworks/projects/Basic/src/main/flex/org/apache/flex/html/Form.as
index d7b0459,d7b0459..96fe42a
--- a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/Form.as
+++ b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/Form.as
@@@ -18,28 -18,28 +18,29 @@@
  ////////////////////////////////////////////////////////////////////////////////
  package org.apache.flex.html
  {
--    import org.apache.flex.core.ContainerBase;
--    
++    import org.apache.flex.html.Container;
++
      COMPILE::JS
      {
          import org.apache.flex.core.WrappedHTMLElement;
      }
--    
++
      [DefaultProperty("mxmlContent")]
  
      /**
       *  The Form class is a simple form.
--     *  
++     *
++     *  @toplevel
       *  @langversion 3.0
       *  @playerversion Flash 10.2
       *  @playerversion AIR 2.6
       *  @productversion FlexJS 0.0
       */
--    public class Form extends ContainerBase
++    public class Form extends Container
  	{
          /**
           *  Constructor.
--         *  
++         *
           *  @langversion 3.0
           *  @playerversion Flash 10.2
           *  @playerversion AIR 2.6
@@@ -49,23 -49,23 +50,23 @@@
          {
              super();
          }
--        
++
          /**
           * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement
           */
          COMPILE::JS
          override protected function createElement():WrappedHTMLElement
--        {HTMLFormElement
++        {
              element = document.createElement('form') as WrappedHTMLElement;
--             
++
              positioner = element;
--             
--            positioner.style.position = 'relative';
++
++            //positioner.style.position = 'relative';
              element.flexjs_wrapper = this;
              return element;
          }
  
--        
++
          private var _action:String = "#";
  
          [Bindable("actionChange")]
@@@ -95,5 -95,5 +96,5 @@@
                  this.dispatchEvent('actionChange');
              }
          }
--    }        
--}
++    }
++}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/9fd9b78b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/Group.as
----------------------------------------------------------------------
diff --cc frameworks/projects/Basic/src/main/flex/org/apache/flex/html/Group.as
index 0000000,0000000..2b3ddb9
new file mode 100644
--- /dev/null
+++ b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/Group.as
@@@ -1,0 -1,0 +1,145 @@@
++////////////////////////////////////////////////////////////////////////////////
++//
++//  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.html
++{
++	import org.apache.flex.core.IMXMLDocument;
++	import org.apache.flex.core.GroupBase;
++	import org.apache.flex.core.ValuesManager;
++	import org.apache.flex.events.Event;
++	import org.apache.flex.utils.MXMLDataInterpreter;
++
++	/**
++	 *  Indicates that the children of the container is have been added.
++	 *
++	 *  @langversion 3.0
++	 *  @playerversion Flash 10.2
++	 *  @playerversion AIR 2.6
++	 *  @productversion FlexJS 0.8
++	 */
++	[Event(name="childrenAdded", type="org.apache.flex.events.Event")]
++	
++	/**
++	 * The default property uses when additional MXML content appears within an element's
++	 * definition in an MXML file.
++	 */
++	[DefaultProperty("mxmlContent")]
++
++    /**
++     *  The Group class provides a light-weight container for visual elements. By default
++	 *  the Group does not have a layout, allowing its children to be sized and positioned
++	 *  using styles or CSS.
++     *
++     *  @toplevel
++     *  @see org.apache.flex.html.beads.layout
++     *  @see org.apache.flex.html.supportClasses.ScrollingViewport
++     *  @langversion 3.0
++     *  @playerversion Flash 10.2
++     *  @playerversion AIR 2.6
++     *  @productversion FlexJS 0.8
++     */
++	public class Group extends GroupBase implements IMXMLDocument
++	{
++        /**
++         *  Constructor.
++         *
++         *  @langversion 3.0
++         *  @playerversion Flash 10.2
++         *  @playerversion AIR 2.6
++         *  @productversion FlexJS 0.8
++         */
++		public function Group()
++		{
++			super();
++		}
++		
++		private var _mxmlDescriptor:Array;
++		private var _mxmlDocument:Object = this;
++		private var _initialized:Boolean;
++		
++		/**
++		 * @private
++		 */
++		override public function addedToParent():void
++		{
++			if (!_initialized)
++			{
++				// each MXML file can also have styles in fx:Style block
++				ValuesManager.valuesImpl.init(this);
++			}
++			
++			super.addedToParent();
++			
++			if (!_initialized)
++			{
++				MXMLDataInterpreter.generateMXMLInstances(_mxmlDocument, this, MXMLDescriptor);
++				
++				dispatchEvent(new Event("initBindings"));
++				dispatchEvent(new Event("initComplete"));
++				_initialized = true;
++				
++				//?? why was this added here? childrenAdded(); //?? Is this needed since MXMLDataInterpreter will already have called it
++			}
++		}
++		
++		/**
++		 *  @copy org.apache.flex.core.Application#MXMLDescriptor
++		 *  
++		 *  @langversion 3.0
++		 *  @playerversion Flash 10.2
++		 *  @playerversion AIR 2.6
++		 *  @productversion FlexJS 0.8
++		 */
++		public function get MXMLDescriptor():Array
++		{
++			return _mxmlDescriptor;
++		}
++		
++		/**
++		 *  @private
++		 */
++		public function setMXMLDescriptor(document:Object, value:Array):void
++		{
++			_mxmlDocument = document;
++			_mxmlDescriptor = value;
++		}
++		
++		/**
++		 *  @copy org.apache.flex.core.Application#generateMXMLAttributes()
++		 *  
++		 *  @langversion 3.0
++		 *  @playerversion Flash 10.2
++		 *  @playerversion AIR 2.6
++		 *  @productversion FlexJS 0.8
++		 */
++		public function generateMXMLAttributes(data:Array):void
++		{
++			MXMLDataInterpreter.generateMXMLProperties(this, data);
++		}
++		
++		/**
++		 *  @copy org.apache.flex.core.ItemRendererClassFactory#mxmlContent
++		 *  
++		 *  @langversion 3.0
++		 *  @playerversion Flash 10.2
++		 *  @playerversion AIR 2.6
++		 *  @productversion FlexJS 0.8
++		 */
++		public var mxmlContent:Array;
++	}
++}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/9fd9b78b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/HContainer.as
----------------------------------------------------------------------
diff --cc frameworks/projects/Basic/src/main/flex/org/apache/flex/html/HContainer.as
index 9f38883,9f38883..2a19648
--- a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/HContainer.as
+++ b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/HContainer.as
@@@ -38,12 -38,12 +38,13 @@@ package org.apache.flex.htm
       *  </basic:Container>
       *  </code>
       *  
++     *  @toplevel
       *  @langversion 3.0
       *  @playerversion Flash 10.2
       *  @playerversion AIR 2.6
       *  @productversion FlexJS 0.0
       */    
--	public class HContainer extends Container implements IContainer
++	public class HContainer extends Container
  	{
          /**
           *  Constructor.

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/9fd9b78b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/HRule.as
----------------------------------------------------------------------
diff --cc frameworks/projects/Basic/src/main/flex/org/apache/flex/html/HRule.as
index 7c2fb2f,7c2fb2f..3017a34
--- a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/HRule.as
+++ b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/HRule.as
@@@ -17,26 -17,26 +17,27 @@@
  //
  ////////////////////////////////////////////////////////////////////////////////
  package org.apache.flex.html
--{	
++{
  	import org.apache.flex.core.UIBase;
      COMPILE::JS
      {
--        import org.apache.flex.core.WrappedHTMLElement;            
++        import org.apache.flex.core.WrappedHTMLElement;
      }
--	
++
      /**
       *  The HRule class displays a horizontal line
       *
++     *  @toplevel
       *  @langversion 3.0
       *  @playerversion Flash 10.2
       *  @playerversion AIR 2.6
       *  @productversion FlexJS 0.0
--     */    
++     */
  	public class HRule extends UIBase
  	{
          /**
           *  Constructor.
--         *  
++         *
           *  @langversion 3.0
           *  @playerversion Flash 10.2
           *  @playerversion AIR 2.6
@@@ -46,7 -46,7 +47,7 @@@
  		{
  			super();
          }
--        
++
          /**
           * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement
           */
@@@ -55,9 -55,9 +56,9 @@@
          {
              element = document.createElement('hr') as WrappedHTMLElement;
              positioner = element;
--            positioner.style.position = 'relative';
++            //positioner.style.position = 'relative';
              element.flexjs_wrapper = this;
              return element;
--        }        
++        }
  	}
  }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/9fd9b78b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/Image.as
----------------------------------------------------------------------
diff --cc frameworks/projects/Basic/src/main/flex/org/apache/flex/html/Image.as
index dc53a51,9268f9d..6b206c1
--- a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/Image.as
+++ b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/Image.as
@@@ -18,27 -18,28 +18,23 @@@
  ////////////////////////////////////////////////////////////////////////////////
  package org.apache.flex.html
  {
-     import org.apache.flex.core.ImageBase;
 -	import org.apache.flex.core.IImageModel;
 -	import org.apache.flex.core.UIBase;
++	import org.apache.flex.core.ImageBase;
++
      COMPILE::JS
      {
--        import org.apache.flex.core.WrappedHTMLElement;            
--        import org.apache.flex.html.beads.models.ImageModel;
--        import org.apache.flex.html.beads.ImageView;
++        import org.apache.flex.core.WrappedHTMLElement;
      }
--	
--	/**
--	 *  The Image class is a component that displays a bitmap. The Image uses
--	 *  the following beads:
--	 * 
--	 *  org.apache.flex.core.IBeadModel: the data model for the Image, including the source property.
--	 *  org.apache.flex.core.IBeadView: constructs the visual elements of the component.
--	 *  
--	 *  @langversion 3.0
--	 *  @playerversion Flash 10.2
--	 *  @playerversion AIR 2.6
--	 *  @productversion FlexJS 0.0
--	 */
 -	public class Image extends UIBase
++
++	  /**
++	   *  Load Images.
++	   *
++	   *  @toplevel
++	   *  @langversion 3.0
++	   *  @playerversion Flash 10.2
++	   *  @playerversion AIR 2.6
++	   *  @productversion FlexJS 0.0
++	   */
 +	public class Image extends ImageBase
  	{
  		/**
  		 *  constructor.
@@@ -52,7 -53,25 +48,7 @@@
  		{
  			super();
  		}
--		
 -		/**
 -		 *  The location of the bitmap, usually a URL.
 -		 *
 -		 *  @langversion 3.0
 -		 *  @playerversion Flash 10.2
 -		 *  @playerversion AIR 2.6
 -		 *  @productversion FlexJS 0.0
 -         *  @flexjsignorecoercion org.apache.flex.core.IImageModel
 -		 */
 -		public function get src():String
 -		{
 -			return (model as IImageModel).url;
 -		}
 -		public function set src(value:String):void
 -		{
 -			(model as IImageModel).url = value;
 -		}
 -        
++
          /**
           * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement
           */
@@@ -62,26 -81,13 +58,25 @@@
              element = document.createElement('img') as WrappedHTMLElement;
              element.className = 'Image';
              typeNames = 'Image';
--            
++
              positioner = element;
--            positioner.style.position = 'relative';
++            //positioner.style.position = 'relative';
              element.flexjs_wrapper = this;
--         
-             return element;
-         }
-         
-         COMPILE::JS
-         override public function get imageElement():Element
-         {
++
              return element;
 -        }        
 +        }
-         
-         COMPILE::JS
-         override public function applyImageData(binaryDataAsString:String):void
-         {
-             (element as HTMLImageElement).src = binaryDataAsString;
-         }
 +
++		COMPILE::JS
++		override public function get imageElement():Element
++		{
++			return element;
++		}
++
++		COMPILE::JS
++		override public function applyImageData(binaryDataAsString:String):void
++		{
++			(element as HTMLImageElement).src = binaryDataAsString;
++		}
  
  	}
  }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/9fd9b78b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/ImageAndTextButton.as
----------------------------------------------------------------------
diff --cc frameworks/projects/Basic/src/main/flex/org/apache/flex/html/ImageAndTextButton.as
index 8bdcc6a,8bdcc6a..ccdbc3b
--- a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/ImageAndTextButton.as
+++ b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/ImageAndTextButton.as
@@@ -22,23 -22,23 +22,24 @@@ package org.apache.flex.htm
      import org.apache.flex.html.beads.models.ImageAndTextModel;
      COMPILE::JS
      {
--        import org.apache.flex.core.WrappedHTMLElement;            
++        import org.apache.flex.core.WrappedHTMLElement;
      }
--	
++
      /**
       *  The ImageTextButton class implements a basic button that
       *  displays and image and text.
--     *  
++     *
++     *  @toplevel
       *  @langversion 3.0
       *  @playerversion Flash 10.2
       *  @playerversion AIR 2.6
       *  @productversion FlexJS 0.0
--     */    
++     */
  	public class ImageAndTextButton extends TextButton
  	{
          /**
           *  Constructor.
--         *  
++         *
           *  @langversion 3.0
           *  @playerversion Flash 10.2
           *  @playerversion AIR 2.6
@@@ -48,7 -48,7 +49,7 @@@
  		{
  			super();
  		}
--		
++
          /**
           *  @private
           */
@@@ -57,7 -57,7 +58,7 @@@
          {
              return ImageAndTextModel(model).text;
          }
--        
++
          /**
           *  @private
           */
@@@ -67,13 -67,13 +68,13 @@@
              ImageAndTextModel(model).text = value;
              COMPILE::JS
              {
--                setInnerHTML();                    
++                setInnerHTML();
              }
          }
--        
++
          /**
           *  The URL of an icon to use in the button
--         *  
++         *
           *  @langversion 3.0
           *  @playerversion Flash 10.2
           *  @playerversion AIR 2.6
@@@ -83,7 -83,7 +84,7 @@@
          {
              return ImageAndTextModel(model).image;
          }
--        
++
          /**
           *  @private
           */
@@@ -92,10 -92,10 +93,10 @@@
              ImageAndTextModel(model).image = value;
              COMPILE::JS
              {
--                setInnerHTML();                    
++                setInnerHTML();
              }
          }
--        
++
          /**
           * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement
           */
@@@ -104,13 -104,13 +105,13 @@@
          {
              element = document.createElement('button') as WrappedHTMLElement;
              element.setAttribute('type', 'button');
--            
++
              positioner = element;
--            positioner.style.position = 'relative';
++            //positioner.style.position = 'relative';
              element.flexjs_wrapper = this;
--            
++
              return element;
--        }        
++        }
  
          /**
           */