Major overhaul of containers and layouts.

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

Branch: refs/heads/tlf
Commit: 679eccb563df6903a88dab0207dc0f7e051f208f
Parents: 5bc85ae
Author: Peter Ent <[email protected]>
Authored: Tue Mar 21 11:25:01 2017 -0400
Committer: Peter Ent <[email protected]>
Committed: Tue Mar 21 11:25:01 2017 -0400

----------------------------------------------------------------------
 .../src/main/flex/org/apache/flex/html/VRule.as |  14 +-
 .../projects/Core/src/main/flex/CoreClasses.as  |   1 +
 .../flex/org/apache/flex/core/IContainer.as     |   6 +
 .../org/apache/flex/core/IItemRendererParent.as |   4 +-
 .../flex/org/apache/flex/core/ILayoutHost.as    |   6 +-
 .../flex/org/apache/flex/core/ILayoutObject.as  |  86 ++++
 .../main/flex/org/apache/flex/core/IViewport.as |   2 +-
 .../org/apache/flex/core/SimpleCSSStyles.as     |   8 +-
 .../projects/HTML/src/main/flex/HTMLClasses.as  |   5 +-
 .../flex/org/apache/flex/core/ContainerBase.as  |  21 +-
 .../main/flex/org/apache/flex/core/GroupBase.as |  28 +-
 .../src/main/flex/org/apache/flex/core/IList.as |  48 ++
 .../main/flex/org/apache/flex/core/ListBase.as  | 100 ++--
 .../main/flex/org/apache/flex/core/UIBase.as    |  10 +-
 .../src/main/flex/org/apache/flex/core/View.as  |   5 +-
 .../main/flex/org/apache/flex/core/ViewBase.as  |   2 +-
 .../main/flex/org/apache/flex/html/ButtonBar.as |  38 +-
 .../flex/org/apache/flex/html/ButtonBase.as     |   1 -
 .../main/flex/org/apache/flex/html/CheckBox.as  |   2 +-
 .../main/flex/org/apache/flex/html/Container.as | 121 +++--
 .../flex/org/apache/flex/html/ControlBar.as     |  39 +-
 .../flex/org/apache/flex/html/DropDownList.as   |  54 +-
 .../src/main/flex/org/apache/flex/html/Form.as  |  22 +-
 .../src/main/flex/org/apache/flex/html/Group.as |  12 +-
 .../flex/org/apache/flex/html/HContainer.as     |   2 +-
 .../src/main/flex/org/apache/flex/html/HRule.as |  16 +-
 .../src/main/flex/org/apache/flex/html/Image.as |  14 +-
 .../org/apache/flex/html/ImageAndTextButton.as  |  34 +-
 .../flex/org/apache/flex/html/ImageButton.as    |  12 +-
 .../src/main/flex/org/apache/flex/html/List.as  | 130 ++++-
 .../flex/org/apache/flex/html/MXMLBeadView.as   |   4 +-
 .../flex/org/apache/flex/html/NumericStepper.as |   2 +-
 .../src/main/flex/org/apache/flex/html/Panel.as |  86 +++-
 .../org/apache/flex/html/PanelWithControlBar.as |  48 +-
 .../flex/org/apache/flex/html/RadioButton.as    |   2 +-
 .../flex/org/apache/flex/html/SimpleList.as     |  18 +-
 .../main/flex/org/apache/flex/html/Slider.as    |  40 +-
 .../main/flex/org/apache/flex/html/Spinner.as   |   2 +-
 .../main/flex/org/apache/flex/html/TextArea.as  |  26 +-
 .../main/flex/org/apache/flex/html/TextInput.as |  44 +-
 .../main/flex/org/apache/flex/html/TitleBar.as  |   5 +-
 .../flex/org/apache/flex/html/VContainer.as     |   2 +-
 .../src/main/flex/org/apache/flex/html/VRule.as |  14 +-
 .../html/beads/AccordionItemRendererView.as     |   4 +-
 .../org/apache/flex/html/beads/AccordionView.as |   1 +
 .../org/apache/flex/html/beads/ContainerView.as | 306 ++++-------
 .../apache/flex/html/beads/DataContainerView.as |   5 +-
 .../org/apache/flex/html/beads/DataGridView.as  |  13 +-
 .../DataItemRendererFactoryForArrayData.as      |  31 +-
 .../DataItemRendererFactoryForArrayList.as      |  46 +-
 .../DataItemRendererFactoryForColumnData.as     |  26 +-
 .../org/apache/flex/html/beads/GroupView.as     | 152 +++++-
 .../flex/org/apache/flex/html/beads/ListView.as |  96 +++-
 .../org/apache/flex/html/beads/PanelView.as     | 195 +++++--
 .../flex/html/beads/PanelWithControlBarView.as  | 154 ++----
 .../TextItemRendererFactoryForArrayData.as      |  12 +-
 ...extItemRendererFactoryForStringVectorData.as |  24 +-
 .../apache/flex/html/beads/TitleBarView.mxml    |   8 +-
 .../flex/html/beads/layouts/BasicLayout.as      |  11 +-
 .../flex/html/beads/layouts/ButtonBarLayout.as  |  70 ++-
 .../flex/html/beads/layouts/DataGridLayout.as   |  63 ++-
 .../beads/layouts/DataGridPercentageLayout.as   | 167 ++++--
 .../FlexibleFirstChildHorizontalLayout.as       | 192 +++----
 .../html/beads/layouts/HorizontalFlexLayout.as  | 117 ++++-
 .../html/beads/layouts/HorizontalFlowLayout.as  |   1 +
 .../flex/html/beads/layouts/HorizontalLayout.as | 317 ++++--------
 .../layouts/OneFlexibleChildHorizontalLayout.as | 345 +++++++------
 .../layouts/OneFlexibleChildVerticalLayout.as   | 503 +++++++------------
 .../flex/html/beads/layouts/TileLayout.as       |   9 +-
 .../html/beads/layouts/VerticalColumnLayout.as  |   3 +-
 .../html/beads/layouts/VerticalFlexLayout.as    | 119 ++++-
 .../flex/html/beads/layouts/VerticalLayout.as   | 266 +++-------
 .../flex/html/beads/models/ButtonBarModel.as    | 102 ++++
 .../ButtonBarButtonItemRenderer.as              |   1 +
 .../flex/html/supportClasses/CheckBoxIcon.as    |   2 +-
 .../html/supportClasses/ClippingViewport.as     |  11 +-
 .../html/supportClasses/ContainerContentArea.as |  50 +-
 .../flex/html/supportClasses/DataContentBead.as | 124 +++++
 .../DataGridButtonBarButtonItemRenderer.as      |  11 +
 .../flex/html/supportClasses/DataGroup.as       |  10 +-
 .../html/supportClasses/DataItemRenderer.as     |   2 +-
 .../html/supportClasses/GroupContentProxy.as    |  91 ++++
 .../html/supportClasses/MXMLItemRenderer.as     |   5 +-
 .../html/supportClasses/PanelLayoutProxy.as     | 132 +++++
 .../flex/html/supportClasses/RadioButtonIcon.as |   2 +-
 .../html/supportClasses/ScrollingViewport.as    | 317 ++++++------
 .../html/supportClasses/StringItemRenderer.as   |  54 +-
 .../apache/flex/html/supportClasses/Viewport.as |  56 ++-
 .../main/flex/org/apache/flex/svg/DOMWrapper.as |   6 +-
 .../org/apache/flex/svg/GraphicContainer.as     |  60 +--
 .../flex/org/apache/flex/svg/GraphicShape.as    |   8 +-
 .../src/main/flex/org/apache/flex/svg/Image.as  |  24 +-
 .../HTML/src/main/resources/defaults.css        | 126 +++--
 93 files changed, 3255 insertions(+), 2331 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/679eccb5/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/VRule.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/VRule.as 
b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/VRule.as
index d727f2a..89e372d 100644
--- a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/VRule.as
+++ b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/VRule.as
@@ -21,9 +21,9 @@ 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 VRule class displays a vertical line
      *
@@ -31,12 +31,12 @@ package org.apache.flex.html
      *  @playerversion Flash 10.2
      *  @playerversion AIR 2.6
      *  @productversion FlexJS 0.0
-     */    
+     */
        public class VRule extends UIBase
        {
         /**
          *  Constructor.
-         *  
+         *
          *  @langversion 3.0
          *  @playerversion Flash 10.2
          *  @playerversion AIR 2.6
@@ -46,7 +46,7 @@ package org.apache.flex.html
                {
                        super();
         }
-        
+
         /**
          * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement
          */
@@ -60,9 +60,9 @@ package org.apache.flex.html
             element.style.borderBottom = 'none';
             element.style.borderRight = 'none';
             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/679eccb5/frameworks/projects/Core/src/main/flex/CoreClasses.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/CoreClasses.as 
b/frameworks/projects/Core/src/main/flex/CoreClasses.as
index 018a180..da4d657 100644
--- a/frameworks/projects/Core/src/main/flex/CoreClasses.as
+++ b/frameworks/projects/Core/src/main/flex/CoreClasses.as
@@ -77,6 +77,7 @@ internal class CoreClasses
     import org.apache.flex.core.IItemRendererProvider; IItemRendererProvider;
     import org.apache.flex.core.ILayoutChild; ILayoutChild;
        import org.apache.flex.core.ILayoutHost; ILayoutHost;
+       import org.apache.flex.core.ILayoutObject; ILayoutObject;
        import org.apache.flex.core.ILayoutParent; ILayoutParent;
     import org.apache.flex.core.IListPresentationModel; IListPresentationModel;
        import org.apache.flex.core.IMeasurementBead; IMeasurementBead;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/679eccb5/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IContainer.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IContainer.as 
b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IContainer.as
index e3b6c9d..44be7ad 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IContainer.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IContainer.as
@@ -43,5 +43,11 @@ package org.apache.flex.core
          *  @productversion FlexJS 0.0
          */
                function childrenAdded():void;
+               
+               /**
+                * This method is for internal use only
+                */
+               COMPILE::SWF
+               function $addElement(c:IChild, dispatchEvent:Boolean = 
true):void;
        }
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/679eccb5/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IItemRendererParent.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IItemRendererParent.as
 
b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IItemRendererParent.as
index 18656ef..a7640e2 100644
--- 
a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IItemRendererParent.as
+++ 
b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IItemRendererParent.as
@@ -45,8 +45,10 @@ package org.apache.flex.core
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.0
          */
+               function addItemRenderer(renderer:IItemRenderer):void;
+               function removeItemRenderer(renderer:IItemRenderer):void;
                function getItemRendererForIndex(index:int):IItemRenderer;
-               function removeAllElements():void;
+               function removeAllItemRenderers():void;
                function updateAllItemRenderers():void;
        }
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/679eccb5/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ILayoutHost.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ILayoutHost.as 
b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ILayoutHost.as
index 3f36723..15afca2 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ILayoutHost.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ILayoutHost.as
@@ -32,13 +32,13 @@ package org.apache.flex.core
        public interface ILayoutHost
        {
         /**
-         *  The container that parents all of the content.
+         *  The container whose children are to be the subject of the layout.
          * 
          *  @langversion 3.0
          *  @playerversion Flash 10.2
          *  @playerversion AIR 2.6
-         *  @productversion FlexJS 0.0
+         *  @productversion FlexJS 0.8
          */
-               function get contentView():IParentIUIBase;
+               function get contentView():ILayoutObject;
        }
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/679eccb5/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ILayoutObject.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ILayoutObject.as 
b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ILayoutObject.as
new file mode 100644
index 0000000..c621b35
--- /dev/null
+++ 
b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ILayoutObject.as
@@ -0,0 +1,86 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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
+{
+    /**
+     *  The ILayoutObject interface is implemented by any component that
+        *  has ILayoutChild children.
+     * 
+     *  @langversion 3.0
+     *  @playerversion Flash 10.2
+     *  @playerversion AIR 2.6
+     *  @productversion FlexJS 0.8
+     */
+       public interface ILayoutObject
+       {
+               /**
+                * Returns the width of the layout object's content area. This
+                * value may be NaN if the width is unknown.
+            * 
+            *  @langversion 3.0
+            *  @playerversion Flash 10.2
+            *  @playerversion AIR 2.6
+            *  @productversion FlexJS 0.8
+                */
+               function get width():Number;
+               
+               /**
+                * Returns the height of the layout object's content area. This
+                * value may be NaN if the height is unknown.
+            * 
+            *  @langversion 3.0
+            *  @playerversion Flash 10.2
+            *  @playerversion AIR 2.6
+            *  @productversion FlexJS 0.8
+                */
+               function get height():Number;
+               
+               /**
+                * Returns the number of element children that can be laid out.
+            * 
+            *  @langversion 3.0
+            *  @playerversion Flash 10.2
+            *  @playerversion AIR 2.6
+            *  @productversion FlexJS 0.8
+                */
+               function get numElements():int;
+               
+               /**
+                * Returns the element child at the given index.
+            * 
+            *  @langversion 3.0
+            *  @playerversion Flash 10.2
+            *  @playerversion AIR 2.6
+            *  @productversion FlexJS 0.8
+                */
+               function getElementAt(index:int):IChild;
+               
+               COMPILE::JS {
+                       /**
+                        * Returns the native element of the layout object 
itself.
+            * 
+            *  @langversion 3.0
+            *  @playerversion Flash 10.2
+            *  @playerversion AIR 2.6
+            *  @productversion FlexJS 0.8
+                        */
+                       function get element():WrappedHTMLElement;
+               }
+       }
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/679eccb5/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IViewport.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IViewport.as 
b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IViewport.as
index a274f52..ee681d4 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IViewport.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IViewport.as
@@ -74,7 +74,7 @@ package org.apache.flex.core
             *  @playerversion AIR 2.6
             *  @productversion FlexJS 0.0
          */
-        function layoutViewportAfterContentLayout():Size;
+        function layoutViewportAfterContentLayout(contentSize:Size):void;
 
        }
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/679eccb5/frameworks/projects/Core/src/main/flex/org/apache/flex/core/SimpleCSSStyles.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/SimpleCSSStyles.as
 
b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/SimpleCSSStyles.as
index 6e83b2d..dc64469 100644
--- 
a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/SimpleCSSStyles.as
+++ 
b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/SimpleCSSStyles.as
@@ -72,7 +72,10 @@ package org.apache.flex.core
             "borderColor": 1,
             "borderStyle": 1,
             "borderRadius": 1,
-            "borderWidth": 1
+            "borderWidth": 1,
+                       "flexGrow": 1,
+                       "flexShrink": 1,
+                       "order": 1
         };
                
         public var top:*;
@@ -102,5 +105,8 @@ package org.apache.flex.core
         public var borderStyle:*;
         public var borderRadius:*;
         public var borderWidth:*;
+               public var flexGrow:*;
+               public var flexShrink:*;
+               public var order:*;
        }
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/679eccb5/frameworks/projects/HTML/src/main/flex/HTMLClasses.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/HTMLClasses.as 
b/frameworks/projects/HTML/src/main/flex/HTMLClasses.as
index 41cb877..0d40ef5 100644
--- a/frameworks/projects/HTML/src/main/flex/HTMLClasses.as
+++ b/frameworks/projects/HTML/src/main/flex/HTMLClasses.as
@@ -66,9 +66,10 @@ internal class HTMLClasses
            import org.apache.flex.html.beads.NumericStepperView; 
NumericStepperView;
        }
        import org.apache.flex.html.beads.PanelView; PanelView;
+       import org.apache.flex.html.supportClasses.PanelLayoutProxy; 
PanelLayoutProxy;
+       import org.apache.flex.html.beads.PanelWithControlBarView; 
PanelWithControlBarView;
        import org.apache.flex.html.beads.AccordionItemRendererView; 
AccordionItemRendererView;
        import org.apache.flex.html.beads.SliderView; SliderView;
-    import org.apache.flex.html.beads.PanelWithControlBarView; 
PanelWithControlBarView;
        COMPILE::SWF
        {
                import org.apache.flex.html.beads.RadioButtonView; 
RadioButtonView;
@@ -150,6 +151,7 @@ internal class HTMLClasses
        {
                import org.apache.flex.html.beads.layouts.HScrollBarLayout; 
HScrollBarLayout;
        import org.apache.flex.html.beads.layouts.VScrollBarLayout; 
VScrollBarLayout;
+               import 
org.apache.flex.html.supportClasses.ContainerContentArea; ContainerContentArea;
        }
        import org.apache.flex.html.beads.layouts.TileLayout; TileLayout;
     import org.apache.flex.html.beads.TextItemRendererFactoryForArrayData; 
TextItemRendererFactoryForArrayData;
@@ -192,7 +194,6 @@ internal class HTMLClasses
        import org.apache.flex.html.beads.models.WebBrowserModel; 
WebBrowserModel;
 
        import org.apache.flex.core.ListBase; ListBase;
-       import org.apache.flex.core.ListBaseStrandChildren; 
ListBaseStrandChildren;
        import org.apache.flex.core.FilledRectangle; FilledRectangle;
     import org.apache.flex.core.UIBase; UIBase;
     import org.apache.flex.core.SimpleApplication; SimpleApplication;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/679eccb5/frameworks/projects/HTML/src/main/flex/org/apache/flex/core/ContainerBase.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/core/ContainerBase.as 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/core/ContainerBase.as
index e150ac1..67c83ec 100644
--- 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/core/ContainerBase.as
+++ 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/core/ContainerBase.as
@@ -18,6 +18,7 @@
 
////////////////////////////////////////////////////////////////////////////////
 package org.apache.flex.core
 {
+       import org.apache.flex.core.IChrome;
        import org.apache.flex.core.IMXMLDocument;
        import org.apache.flex.core.ValuesManager;
        import org.apache.flex.events.Event;
@@ -84,8 +85,6 @@ package org.apache.flex.core
                public function ContainerBase()
                {
                        super();
-            
-                       _strandChildren = new ContainerBaseStrandChildren(this);
                }
                
                private var _strandChildren:ContainerBaseStrandChildren;
@@ -95,6 +94,9 @@ package org.apache.flex.core
                 */
                public function get strandChildren():IParent
                {
+                       if (_strandChildren == null) {
+                               _strandChildren = new 
ContainerBaseStrandChildren(this);
+                       }
                        return _strandChildren;
                }
         
@@ -134,6 +136,11 @@ package org.apache.flex.core
          */
         override public function addElement(c:IChild, dispatchEvent:Boolean = 
true):void
         {
+                       if (c is IChrome) {
+                               super.addElement(c, dispatchEvent);
+                               return;
+                       }
+                       
                        var contentView:IParent = view as IParent;
                        if (contentView != null) {
                                contentView.addElement(c, dispatchEvent);
@@ -150,6 +157,11 @@ package org.apache.flex.core
          */
         override public function addElementAt(c:IChild, index:int, 
dispatchEvent:Boolean = true):void
         {
+                       if (c is IChrome) {
+                               super.addElementAt(c, index, dispatchEvent);
+                               return;
+                       }
+                       
                        var contentView:IParent = view as IParent;
                        if (contentView != null) {
                                contentView.addElementAt(c, index, 
dispatchEvent);
@@ -166,6 +178,11 @@ package org.apache.flex.core
          */
         override public function removeElement(c:IChild, dispatchEvent:Boolean 
= true):void
         {
+                       if (c is IChrome) {
+                               super.removeElement(c, dispatchEvent);
+                               return;
+                       }
+                       
                        var contentView:IParent = view as IParent;
                        if (contentView != null) {
                                contentView.removeElement(c, dispatchEvent);

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/679eccb5/frameworks/projects/HTML/src/main/flex/org/apache/flex/core/GroupBase.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/core/GroupBase.as 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/core/GroupBase.as
index 7b945cc..f36b938 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/core/GroupBase.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/core/GroupBase.as
@@ -35,7 +35,7 @@ package org.apache.flex.core
      *  @langversion 3.0
      *  @playerversion Flash 10.2
      *  @playerversion AIR 2.6
-     *  @productversion FlexJS 0.0
+     *  @productversion FlexJS 0.8
      */
     [Event(name="stateChangeComplete", type="org.apache.flex.events.Event")]
     
@@ -45,7 +45,7 @@ package org.apache.flex.core
      *  @langversion 3.0
      *  @playerversion Flash 10.2
      *  @playerversion AIR 2.6
-     *  @productversion FlexJS 0.0
+     *  @productversion FlexJS 0.8
      */
     [Event(name="initComplete", type="org.apache.flex.events.Event")]
     
@@ -55,7 +55,7 @@ package org.apache.flex.core
      *  @langversion 3.0
      *  @playerversion Flash 10.2
      *  @playerversion AIR 2.6
-     *  @productversion FlexJS 0.0
+     *  @productversion FlexJS 0.8
      */
     [Event(name="childrenAdded", type="org.apache.flex.events.Event")]
     
@@ -73,9 +73,9 @@ package org.apache.flex.core
      *  @langversion 3.0
      *  @playerversion Flash 10.2
      *  @playerversion AIR 2.6
-     *  @productversion FlexJS 0.0
+     *  @productversion FlexJS 0.8
      */
-       public class GroupBase extends UIBase implements IMXMLDocument, 
IStatesObject, IContainer
+       public class GroupBase extends UIBase implements IMXMLDocument, 
IStatesObject
        {
         /**
          *  Constructor.
@@ -83,7 +83,7 @@ package org.apache.flex.core
          *  @langversion 3.0
          *  @playerversion Flash 10.2
          *  @playerversion AIR 2.6
-         *  @productversion FlexJS 0.0
+         *  @productversion FlexJS 0.8
          */
                public function GroupBase()
                {
@@ -129,6 +129,8 @@ package org.apache.flex.core
                                dispatchEvent(new Event("initBindings"));
                                dispatchEvent(new Event("initComplete"));
                                _initialized = true;
+                               
+                               childrenAdded();
                        }
                }
 
@@ -142,7 +144,7 @@ package org.apache.flex.core
          *  @langversion 3.0
          *  @playerversion Flash 10.2
          *  @playerversion AIR 2.6
-         *  @productversion FlexJS 0.0
+         *  @productversion FlexJS 0.8
          */
                public function get MXMLDescriptor():Array
                {
@@ -164,7 +166,7 @@ package org.apache.flex.core
          *  @langversion 3.0
          *  @playerversion Flash 10.2
          *  @playerversion AIR 2.6
-         *  @productversion FlexJS 0.0
+         *  @productversion FlexJS 0.8
          */
                public function generateMXMLAttributes(data:Array):void
                {
@@ -177,7 +179,7 @@ package org.apache.flex.core
          *  @langversion 3.0
          *  @playerversion Flash 10.2
          *  @playerversion AIR 2.6
-         *  @productversion FlexJS 0.0
+         *  @productversion FlexJS 0.8
          */
                public var mxmlContent:Array;
                
@@ -190,7 +192,7 @@ package org.apache.flex.core
          *  @langversion 3.0
          *  @playerversion Flash 10.2
          *  @playerversion AIR 2.6
-         *  @productversion FlexJS 0.0
+         *  @productversion FlexJS 0.8
          */
         public function get states():Array
         {
@@ -236,7 +238,7 @@ package org.apache.flex.core
          *  @langversion 3.0
          *  @playerversion Flash 10.2
          *  @playerversion AIR 2.6
-         *  @productversion FlexJS 0.0
+         *  @productversion FlexJS 0.8
          */
         public function hasState(state:String):Boolean
         {
@@ -257,7 +259,7 @@ package org.apache.flex.core
          *  @langversion 3.0
          *  @playerversion Flash 10.2
          *  @playerversion AIR 2.6
-         *  @productversion FlexJS 0.0
+         *  @productversion FlexJS 0.8
          */
         public function get currentState():String
         {
@@ -282,7 +284,7 @@ package org.apache.flex.core
          *  @langversion 3.0
          *  @playerversion Flash 10.2
          *  @playerversion AIR 2.6
-         *  @productversion FlexJS 0.0
+         *  @productversion FlexJS 0.8
          */
         public function get transitions():Array
         {

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/679eccb5/frameworks/projects/HTML/src/main/flex/org/apache/flex/core/IList.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/core/IList.as 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/core/IList.as
new file mode 100644
index 0000000..3162b3b
--- /dev/null
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/core/IList.as
@@ -0,0 +1,48 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package org.apache.flex.core
+{
+       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/679eccb5/frameworks/projects/HTML/src/main/flex/org/apache/flex/core/ListBase.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/core/ListBase.as 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/core/ListBase.as
index 3487822..2c8ccc3 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/core/ListBase.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/core/ListBase.as
@@ -19,6 +19,7 @@
 package org.apache.flex.core
 {
        import org.apache.flex.core.IMXMLDocument;
+       import org.apache.flex.core.IContainer;
        import org.apache.flex.core.ValuesManager;
        import org.apache.flex.events.Event;
        import org.apache.flex.events.ValueChangeEvent;
@@ -34,7 +35,7 @@ package org.apache.flex.core
      *  @playerversion AIR 2.6
      *  @productversion FlexJS 0.0
      */
-       public class ListBase extends UIBase implements IContentViewHost, 
ILayoutParent
+       public class ListBase extends UIBase implements ILayoutParent, 
IParentIUIBase, IContainer
        {
         /**
          *  Constructor.
@@ -46,45 +47,50 @@ package org.apache.flex.core
          */
                public function ListBase()
                {
-                       super();
-            
-                       _strandChildren = new ListBaseStrandChildren(this);
+                       super();            
                }
                
-               private var _strandChildren:ListBaseStrandChildren;
-               
                /**
-                * @private
+                * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement
                 */
-               public function get strandChildren():IParent
+               COMPILE::JS
+               override protected function createElement():WrappedHTMLElement
                {
-                       return _strandChildren;
+                       element = document.createElement('div') as 
WrappedHTMLElement;
+                       element.flexjs_wrapper = this;
+                       
+                       positioner = element;
+                       
+                       return element;
                }
                
                /**
-                * @private
+                * 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; 
-               }
+               } 
                
                /**
                 * @private
-         * @suppress {undefinedNames}
-                * Support strandChildren.
                 */
-               public function $numElements():int
+               public function childrenAdded():void
                {
-                       return super.numElements();
+                       dispatchEvent(new Event("childrenAdded"));
                }
                
-               
                /**
                 * @private
-         * @suppress {undefinedNames}
-                * Support strandChildren.
+                * This is a hidden function used by ContainerView to insert 
the nested contentView
+                * into this outer shell.
                 */
+               COMPILE::SWF
                public function $addElement(c:IChild, dispatchEvent:Boolean = 
true):void
                {
                        super.addElement(c, dispatchEvent);
@@ -92,42 +98,68 @@ package org.apache.flex.core
                
                /**
                 * @private
-         * @suppress {undefinedNames}
-                * Support strandChildren.
                 */
-               public function $addElementAt(c:IChild, index:int, 
dispatchEvent:Boolean = true):void
+               COMPILE::SWF
+               override public function addElement(c:IChild, 
dispatchEvent:Boolean = true):void
+               {
+                       var layoutHost:ILayoutHost = view as ILayoutHost;
+                       var contentView:IParent = layoutHost.contentView as 
IParent;
+                       contentView.addElement(c, dispatchEvent);
+               }
+               
+               /**
+                * @private
+                */
+               COMPILE::SWF
+               override public function addElementAt(c:IChild, index:int, 
dispatchEvent:Boolean = true):void
+               {
+                       var layoutHost:ILayoutHost = view as ILayoutHost;
+                       var contentView:IParent = layoutHost.contentView as 
IParent;
+                       contentView.addElementAt(c, index, dispatchEvent);
+               }
+               
+               /**
+                * @private
+                */
+               COMPILE::SWF
+               override public function getElementIndex(c:IChild):int
                {
-                       super.addElementAt(c, index, dispatchEvent);
+                       var layoutHost:ILayoutHost = view as ILayoutHost;
+                       var contentView:IParent = layoutHost.contentView as 
IParent;
+                       return contentView.getElementIndex(c);
                }
                
                /**
                 * @private
-         * @suppress {undefinedNames}
-                * Support strandChildren.
                 */
-               public function $removeElement(c:IChild, dispatchEvent:Boolean 
= true):void
+               COMPILE::SWF
+               override public function removeElement(c:IChild, 
dispatchEvent:Boolean = true):void
                {
-                       super.removeElement(c, dispatchEvent);
+                       var layoutHost:ILayoutHost = view as ILayoutHost;
+                       var contentView:IParent = layoutHost.contentView as 
IParent;
+                       contentView.removeElement(c, dispatchEvent);
                }
                
                /**
                 * @private
-         * @suppress {undefinedNames}
-                * Support strandChildren.
                 */
-               public function $getElementIndex(c:IChild):int
+               COMPILE::SWF
+               override public function get numElements():int
                {
-                       return super.getElementIndex(c);
+                       var layoutHost:ILayoutHost = view as ILayoutHost;
+                       var contentView:IParent = layoutHost.contentView as 
IParent;
+                       return contentView.numElements;
                }
                
                /**
                 * @private
-         * @suppress {undefinedNames}
-                * Support strandChildren.
                 */
-               public function $getElementAt(index:int):IChild
+               COMPILE::SWF
+               override public function getElementAt(index:int):IChild
                {
-                       return super.getElementAt(index);
+                       var layoutHost:ILayoutHost = view as ILayoutHost;
+                       var contentView:IParent = layoutHost.contentView as 
IParent;
+                       return contentView.getElementAt(index);
                }
 
     }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/679eccb5/frameworks/projects/HTML/src/main/flex/org/apache/flex/core/UIBase.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/core/UIBase.as 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/core/UIBase.as
index d9804b2..af9e255 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/core/UIBase.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/core/UIBase.as
@@ -637,7 +637,7 @@ package org.apache.flex.core
         COMPILE::JS
         public function set x(value:Number):void
         {
-            positioner.style.position = 'absolute';
+//            positioner.style.position = 'absolute';
             positioner.style.left = value + 'px';
         }
 
@@ -670,7 +670,7 @@ package org.apache.flex.core
                        }
                        COMPILE::JS
                        {
-                               positioner.style.position = 'absolute';
+//                             positioner.style.position = 'absolute';
                                positioner.style.left = value + 'px';
                        }
         }
@@ -693,7 +693,7 @@ package org.apache.flex.core
         COMPILE::JS
         public function set y(value:Number):void
         {
-            positioner.style.position = 'absolute';
+//            positioner.style.position = 'absolute';
             positioner.style.top = value + 'px';
         }
         
@@ -726,7 +726,7 @@ package org.apache.flex.core
                        }
                        COMPILE::JS
                        {
-                               positioner.style.position = 'absolute';
+//                             positioner.style.position = 'absolute';
                                positioner.style.top = value + 'px';            
                
                        }
         }
@@ -1358,7 +1358,7 @@ package org.apache.flex.core
             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/679eccb5/frameworks/projects/HTML/src/main/flex/org/apache/flex/core/View.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/core/View.as 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/core/View.as
index 2d0f2c4..453a1d6 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/core/View.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/core/View.as
@@ -17,7 +17,7 @@
 //
 
////////////////////////////////////////////////////////////////////////////////
 package org.apache.flex.core
-{    
+{      
     /**
      *  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,7 @@ package org.apache.flex.core
      *  @productversion FlexJS 0.0
      */
        public class View extends ViewBase
-       {
+       {               
+               
     }
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/679eccb5/frameworks/projects/HTML/src/main/flex/org/apache/flex/core/ViewBase.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/core/ViewBase.as 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/core/ViewBase.as
index f058c4a..1af670e 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/core/ViewBase.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/core/ViewBase.as
@@ -48,7 +48,7 @@ package org.apache.flex.core
      *  @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, ILayoutParent, ILayoutObject
        {
         /**
          *  Constructor.

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/679eccb5/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/ButtonBar.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/ButtonBar.as 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/ButtonBar.as
index 8266415..0dffead 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/ButtonBar.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/ButtonBar.as
@@ -18,23 +18,25 @@
 
////////////////////////////////////////////////////////////////////////////////
 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
@@ -55,7 +57,25 @@ package org.apache.flex.html
                {
                        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
          */
@@ -63,14 +83,12 @@ package org.apache.flex.html
         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/679eccb5/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/ButtonBase.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/ButtonBase.as 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/ButtonBase.as
index a30f0cf..72d19e1 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/ButtonBase.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/ButtonBase.as
@@ -84,7 +84,6 @@ package org.apache.flex.html
             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/679eccb5/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/CheckBox.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/CheckBox.as 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/CheckBox.as
index be39c33..ef78a05 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/CheckBox.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/CheckBox.as
@@ -155,7 +155,7 @@ package org.apache.flex.html
             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/679eccb5/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/Container.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/Container.as 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/Container.as
index 0e0e178..73c6fd7 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/Container.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/Container.as
@@ -18,20 +18,14 @@
 
////////////////////////////////////////////////////////////////////////////////
 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.events.Event;
        
-       [DefaultProperty("mxmlContent")]
-    
+       COMPILE::SWF {
+               import org.apache.flex.core.IChild;
+               import org.apache.flex.core.ILayoutHost;
+               import org.apache.flex.core.IParent;
+       }
+       
     /**
      *  The Container class implements a basic container for
      *  other controls and containers.  The position and size
@@ -68,7 +62,7 @@ package org.apache.flex.html
      *  @playerversion AIR 2.6
      *  @productversion FlexJS 0.0
      */    
-       public class Container extends ContainerBase implements ILayoutParent
+       public class Container extends Group implements IContainer
        {
         /**
          *  Constructor.
@@ -81,36 +75,83 @@ package org.apache.flex.html
                public function Container()
                {
                        super();
+               } 
+               
+               /**
+                * @private
+                * This is a hidden function used by ContainerView to insert 
the nested contentView
+                * into this outer shell.
+                */
+               COMPILE::SWF
+               public function $addElement(c:IChild, dispatchEvent:Boolean = 
true):void
+               {
+                       super.addElement(c, dispatchEvent);
                }
                
-               public function getLayoutHost():ILayoutHost
+               /**
+                * @private
+                */
+               COMPILE::SWF
+               override public function addElement(c:IChild, 
dispatchEvent:Boolean = true):void
                {
-                       return view as ILayoutHost; 
+                       var layoutHost:ILayoutHost = view as ILayoutHost;
+                       var contentView:IParent = layoutHost.contentView as 
IParent;
+                       contentView.addElement(c, dispatchEvent);
+               }
+               
+               /**
+                * @private
+                */
+               COMPILE::SWF
+               override public function addElementAt(c:IChild, index:int, 
dispatchEvent:Boolean = true):void
+               {
+                       var layoutHost:ILayoutHost = view as ILayoutHost;
+                       var contentView:IParent = layoutHost.contentView as 
IParent;
+                       contentView.addElementAt(c, index, dispatchEvent);
+               }
+               
+               /**
+                * @private
+                */
+               COMPILE::SWF
+               override public function getElementIndex(c:IChild):int
+               {
+                       var layoutHost:ILayoutHost = view as ILayoutHost;
+                       var contentView:IParent = layoutHost.contentView as 
IParent;
+                       return contentView.getElementIndex(c);
+               }
+               
+               /**
+                * @private
+                */
+               COMPILE::SWF
+               override public function removeElement(c:IChild, 
dispatchEvent:Boolean = true):void
+               {
+                       var layoutHost:ILayoutHost = view as ILayoutHost;
+                       var contentView:IParent = layoutHost.contentView as 
IParent;
+                       contentView.removeElement(c, dispatchEvent);
+               }
+               
+               /**
+                * @private
+                */
+               COMPILE::SWF
+               override public function get numElements():int
+               {
+                       var layoutHost:ILayoutHost = view as ILayoutHost;
+                       var contentView:IParent = layoutHost.contentView as 
IParent;
+                       return contentView.numElements;
+               }
+               
+               /**
+                * @private
+                */
+               COMPILE::SWF
+               override public function getElementAt(index:int):IChild
+               {
+                       var layoutHost:ILayoutHost = view as ILayoutHost;
+                       var contentView:IParent = layoutHost.contentView as 
IParent;
+                       return contentView.getElementAt(index);
                }
-
-        /**
-         * @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;
-        }        
        }
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/679eccb5/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/ControlBar.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/ControlBar.as 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/ControlBar.as
index c6de512..6aaa9d5 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/ControlBar.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/ControlBar.as
@@ -18,37 +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.
@@ -61,40 +60,36 @@ package org.apache.flex.html
                public function ControlBar()
                {
                        super();
-                       
+
                        className = "ControlBar";
                }
-               
+
                /**
                 * @private
                 */
                override public function addedToParent():void
                {
-                       super.addedToParent();  
-                       
                        if( getBeadByType(IBeadLayout) == null ) {
                                var layout:IBeadLayout = new 
(ValuesManager.valuesImpl.getValue(this, "iBeadLayout")) as IBeadLayout;
                                addBead(layout);
                        }
+                       
+                       super.addedToParent();
                }
-        
+
         /**
          * @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/679eccb5/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/DropDownList.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/DropDownList.as 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/DropDownList.as
index 8f05809..d547f27 100644
--- 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/DropDownList.as
+++ 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/DropDownList.as
@@ -23,17 +23,17 @@ package org.apache.flex.html
     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
@@ -41,7 +41,7 @@ package org.apache.flex.html
      *  @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.
@@ -49,23 +49,23 @@ package org.apache.flex.html
      *  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
@@ -78,12 +78,12 @@ package org.apache.flex.html
                 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
@@ -109,14 +109,14 @@ package org.apache.flex.html
                 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++) {
@@ -130,11 +130,11 @@ package org.apache.flex.html
 
             }
         }
-        
+
         [Bindable("change")]
         /**
          *  @copy org.apache.flex.core.ISelectionModel#selectedIndex
-         *  
+         *
          *  @langversion 3.0
          *  @playerversion Flash 10.2
          *  @playerversion AIR 2.6
@@ -157,12 +157,12 @@ package org.apache.flex.html
                 (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
@@ -185,7 +185,7 @@ package org.apache.flex.html
                 (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.
@@ -203,7 +203,7 @@ package org.apache.flex.html
         {
             ISelectionModel(model).labelField = value;
         }
-        
+
         /**
          * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement
          * @flexjsignorecoercion HTMLSelectElement
@@ -215,15 +215,15 @@ package org.apache.flex.html
             (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/679eccb5/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/Form.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/Form.as 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/Form.as
index 408bb13..2093e40 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/Form.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/Form.as
@@ -19,17 +19,17 @@
 package org.apache.flex.html
 {
     import org.apache.flex.core.ContainerBase;
-    
+
     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
@@ -40,7 +40,7 @@ package org.apache.flex.html
        {
         /**
          *  Constructor.
-         *  
+         *
          *  @langversion 3.0
          *  @playerversion Flash 10.2
          *  @playerversion AIR 2.6
@@ -50,7 +50,7 @@ package org.apache.flex.html
         {
             super();
         }
-        
+
         /**
          * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement
          */
@@ -58,15 +58,15 @@ package org.apache.flex.html
         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")]
@@ -96,5 +96,5 @@ package org.apache.flex.html
                 this.dispatchEvent('actionChange');
             }
         }
-    }        
-}
\ No newline at end of file
+    }
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/679eccb5/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/Group.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/Group.as 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/Group.as
index a881d10..20ebf12 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/Group.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/Group.as
@@ -22,11 +22,11 @@ package org.apache.flex.html
        import org.apache.flex.core.IContainer;
        import org.apache.flex.core.ILayoutHost;
        import org.apache.flex.core.ILayoutParent;
+       import org.apache.flex.core.ILayoutObject;
        import org.apache.flex.core.IMXMLDocument;
        import org.apache.flex.core.IStrand;
        import org.apache.flex.core.IBead;
        import org.apache.flex.core.IBeadLayout;
-       import org.apache.flex.core.IParentIUIBase;
        import org.apache.flex.core.IUIBase;
        import org.apache.flex.core.UIBase;
        import org.apache.flex.core.ValuesManager;
@@ -39,7 +39,7 @@ package org.apache.flex.html
         *  @langversion 3.0
         *  @playerversion Flash 10.2
         *  @playerversion AIR 2.6
-        *  @productversion FlexJS 0.0
+        *  @productversion FlexJS 0.8
         */
        [Event(name="childrenAdded", type="org.apache.flex.events.Event")]
        
@@ -59,9 +59,9 @@ package org.apache.flex.html
      *  @langversion 3.0
      *  @playerversion Flash 10.2
      *  @playerversion AIR 2.6
-     *  @productversion FlexJS 0.0
+     *  @productversion FlexJS 0.8
      */    
-       public class Group extends GroupBase implements ILayoutParent, 
IParentIUIBase
+       public class Group extends GroupBase implements ILayoutParent, 
ILayoutObject
        {
         /**
          *  Constructor.
@@ -69,7 +69,7 @@ package org.apache.flex.html
          *  @langversion 3.0
          *  @playerversion Flash 10.2
          *  @playerversion AIR 2.6
-         *  @productversion FlexJS 0.0
+         *  @productversion FlexJS 0.8
          */
                public function Group()
                {
@@ -82,7 +82,7 @@ package org.apache.flex.html
                 *  @langversion 3.0
                 *  @playerversion Flash 10.2
                 *  @playerversion AIR 2.6
-                *  @productversion FlexJS 0.0
+                *  @productversion FlexJS 0.8
                 */
                public function getLayoutHost():ILayoutHost
                {

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/679eccb5/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/HContainer.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/HContainer.as 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/HContainer.as
index f6aaafc..2a19648 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/HContainer.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/HContainer.as
@@ -44,7 +44,7 @@ package org.apache.flex.html
      *  @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/679eccb5/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/HRule.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/HRule.as 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/HRule.as
index 89cee65..3017a34 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/HRule.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/HRule.as
@@ -17,13 +17,13 @@
 //
 
////////////////////////////////////////////////////////////////////////////////
 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
      *
@@ -32,12 +32,12 @@ package org.apache.flex.html
      *  @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
@@ -47,7 +47,7 @@ package org.apache.flex.html
                {
                        super();
         }
-        
+
         /**
          * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement
          */
@@ -56,9 +56,9 @@ package org.apache.flex.html
         {
             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/679eccb5/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/Image.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/Image.as 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/Image.as
index 6211bc6..6b206c1 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/Image.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/Image.as
@@ -19,10 +19,10 @@
 package org.apache.flex.html
 {
        import org.apache.flex.core.ImageBase;
-       
+
     COMPILE::JS
     {
-        import org.apache.flex.core.WrappedHTMLElement;            
+        import org.apache.flex.core.WrappedHTMLElement;
     }
 
          /**
@@ -48,7 +48,7 @@ package org.apache.flex.html
                {
                        super();
                }
-               
+
         /**
          * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement
          */
@@ -58,14 +58,14 @@ package org.apache.flex.html
             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
                {

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/679eccb5/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/ImageAndTextButton.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/ImageAndTextButton.as
 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/ImageAndTextButton.as
index 2d26c64..ccdbc3b 100644
--- 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/ImageAndTextButton.as
+++ 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/ImageAndTextButton.as
@@ -22,24 +22,24 @@ package org.apache.flex.html
     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
@@ -49,7 +49,7 @@ package org.apache.flex.html
                {
                        super();
                }
-               
+
         /**
          *  @private
          */
@@ -58,7 +58,7 @@ package org.apache.flex.html
         {
             return ImageAndTextModel(model).text;
         }
-        
+
         /**
          *  @private
          */
@@ -68,13 +68,13 @@ package org.apache.flex.html
             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
@@ -84,7 +84,7 @@ package org.apache.flex.html
         {
             return ImageAndTextModel(model).image;
         }
-        
+
         /**
          *  @private
          */
@@ -93,10 +93,10 @@ package org.apache.flex.html
             ImageAndTextModel(model).image = value;
             COMPILE::JS
             {
-                setInnerHTML();                    
+                setInnerHTML();
             }
         }
-        
+
         /**
          * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement
          */
@@ -105,13 +105,13 @@ package org.apache.flex.html
         {
             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;
-        }        
+        }
 
         /**
          */

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/679eccb5/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/ImageButton.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/ImageButton.as 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/ImageButton.as
index 5912a84..4b89037 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/ImageButton.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/ImageButton.as
@@ -21,7 +21,7 @@ package org.apache.flex.html
     import org.apache.flex.core.SimpleCSSStyles;
        import org.apache.flex.events.Event;
     import org.apache.flex.html.beads.models.ImageModel;
-       
+
     COMPILE::JS
     {
         import org.apache.flex.core.WrappedHTMLElement;
@@ -60,13 +60,13 @@ package org.apache.flex.html
         {
             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;
-        }        
+        }
 
                [Bindable("srcChanged")]
                /**
@@ -96,7 +96,7 @@ package org.apache.flex.html
                     inner = "<img src='" + url + "'/>";
                 element.innerHTML = inner;
             }
-                       
+
                        dispatchEvent(new Event("srcChanged"));
         }
        }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/679eccb5/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/List.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/List.as 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/List.as
index 123674c..bb330c8 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/List.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/List.as
@@ -20,10 +20,12 @@ package org.apache.flex.html
 {
        import org.apache.flex.core.ContainerBaseStrandChildren;
        import org.apache.flex.core.IContentViewHost;
+       import org.apache.flex.core.IChild;
+       import org.apache.flex.core.ILayoutObject;
        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.IListPresentationModel;
        import org.apache.flex.core.IRollOverModel;
        import org.apache.flex.core.ISelectionModel;
@@ -39,6 +41,15 @@ package org.apache.flex.html
        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.supportClasses.DataItemRenderer;
+       import org.apache.flex.events.ItemAddedEvent;
+       import org.apache.flex.events.ItemClickedEvent;
+       import org.apache.flex.events.ItemRemovedEvent;
+       
+       import org.apache.flex.core.IList;
+       import org.apache.flex.core.IItemRendererParent;
+       import org.apache.flex.core.IItemRendererProvider;
+       import org.apache.flex.core.ListBase;
        
        /**
         *  Indicates that the initialization of the list is complete.
@@ -78,7 +89,7 @@ package org.apache.flex.html
         *  @playerversion AIR 2.6
         *  @productversion FlexJS 0.0
         */
-       public class List extends ListBase implements IItemRendererProvider
+       public class List extends ListBase implements IList, 
IItemRendererParent, ILayoutObject
        {
                /**
                 *  constructor.
@@ -217,6 +228,23 @@ package org.apache.flex.html
                        ISelectionModel(model).selectedItem = value;
                }
                
+               /*
+                * IList and IItemRendererProvider
+                */
+               
+               /**
+                * Provides the DataGroup for this List.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function get dataGroup():IItemRendererParent
+               {
+                       return this;
+               }
+               
                private var _itemRenderer:IFactory;
                
                /**
@@ -262,6 +290,89 @@ package org.apache.flex.html
                        return result;
                }
                
+               /*
+                * IItemRendererParent
+                */
+               
+               /**
+                * @copy 
org.apache.flex.core.IItemRendererParent#getItemRendererForIndex()
+                * @private
+                */
+               public function addItemRenderer(renderer:IItemRenderer):void
+               {                       
+                       addElement(renderer, true);
+                       
+                       var newEvent:ItemAddedEvent = new 
ItemAddedEvent("itemAdded");
+                       newEvent.item = renderer;
+                       
+                       dispatchEvent(newEvent);
+               }
+               
+               /**
+                * @copy 
org.apache.flex.core.IItemRendererParent#getItemRendererForIndex()
+                * @private
+                */
+               public function removeItemRenderer(renderer:IItemRenderer):void
+               {                               
+                       removeElement(renderer, true);
+                       
+                       var newEvent:ItemRemovedEvent = new 
ItemRemovedEvent("itemRemoved");
+                       newEvent.item = renderer;
+                       
+                       dispatchEvent(newEvent);
+               }
+               
+               /**
+                * @copy 
org.apache.flex.core.IItemRendererParent#getItemRendererForIndex()
+                * @private
+                */
+               public function removeAllItemRenderers():void
+               {                       
+                       while (numElements > 0) {
+                               var child:IChild = getElementAt(0);
+                               removeElement(child);
+                       }
+               }
+               
+               /**
+                *  @copy 
org.apache.flex.core.IItemRendererParent#getItemRendererForIndex()
+                *  
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function getItemRendererForIndex(index:int):IItemRenderer
+               {                       
+                       if (index < 0 || index >= numElements) return null;
+                       return getElementAt(index) as IItemRenderer;
+               }
+               
+               /**
+                *  Refreshes the itemRenderers. Useful after a size change by 
the data group.
+                *  
+                *  @copy 
org.apache.flex.core.IItemRendererParent#getItemRendererForIndex()
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function updateAllItemRenderers():void
+               {                       
+                       var n:Number = numElements;
+                       for (var i:Number = 0; i < n; i++)
+                       {
+                               var renderer:DataItemRenderer = 
getItemRendererForIndex(i) as DataItemRenderer;
+                               if (renderer) {
+                                       renderer.setWidth(this.width,true);
+                                       renderer.adjustSize();
+                               }
+                       }
+               }
+               
+               /*
+                * UIBase
+                */
                
                /**
                 * @private
@@ -301,19 +412,6 @@ package org.apache.flex.html
             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/679eccb5/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/MXMLBeadView.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/MXMLBeadView.as 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/MXMLBeadView.as
index 1807381..4f19b10 100644
--- 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/MXMLBeadView.as
+++ 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/MXMLBeadView.as
@@ -27,7 +27,7 @@ package org.apache.flex.html
        import org.apache.flex.core.IStrand;
     import org.apache.flex.core.IStatesImpl;
        import org.apache.flex.core.ValuesManager;
-    import org.apache.flex.html.beads.ContainerView;
+    import org.apache.flex.html.beads.GroupView;
        import org.apache.flex.events.Event;
        import org.apache.flex.events.ValueChangeEvent;
        import org.apache.flex.utils.MXMLDataInterpreter;
@@ -44,7 +44,7 @@ package org.apache.flex.html
      *  @playerversion AIR 2.6
      *  @productversion FlexJS 0.0
      */
-       public class MXMLBeadView extends ContainerView implements IStrand, 
ILayoutHost
+       public class MXMLBeadView extends GroupView implements IStrand, 
ILayoutHost
        {
         /**
          *  Constructor.

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/679eccb5/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/NumericStepper.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/NumericStepper.as 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/NumericStepper.as
index 73ba26a..984fda9 100644
--- 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/NumericStepper.as
+++ 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/NumericStepper.as
@@ -161,7 +161,7 @@ package org.apache.flex.html
         {
             element = document.createElement('div') as WrappedHTMLElement;
             positioner = element;
-            positioner.style.position = 'relative';
+            //positioner.style.position = 'relative';
 
             input = new TextInput();
             input.className = "NumericStepperInput";

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/679eccb5/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/Panel.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/Panel.as 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/Panel.as
index faa3575..09b5cc1 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/Panel.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/Panel.as
@@ -19,6 +19,9 @@
 package org.apache.flex.html
 {
        import org.apache.flex.core.IPanelModel;
+       import org.apache.flex.core.IChild;
+       import org.apache.flex.html.beads.PanelView;
+       import org.apache.flex.events.Event;
 
     COMPILE::JS
     {
@@ -49,7 +52,7 @@ package org.apache.flex.html
         *  @playerversion AIR 2.6
         *  @productversion FlexJS 0.0
         */
-       public class Panel extends Container
+       public class Panel extends Group
        {
                /**
                 *  constructor.
@@ -62,6 +65,23 @@ package org.apache.flex.html
                public function Panel()
                {
                        super();
+                       
+                       className = "Panel";
+               }
+               
+               public function $addElement(c:IChild, dispatchEvent:Boolean = 
true):void
+               {
+                       super.addElement(c, dispatchEvent);
+               }
+               
+               public function get $numElements():Number
+               {
+                       return super.numElements;
+               }
+               
+               public function $getElementAt(index:Number):IChild
+               {
+                       return super.getElementAt(index);
                }
                
                /**
@@ -110,13 +130,61 @@ package org.apache.flex.html
                        IPanelModel(model).showCloseButton = value;
                }
                
-        COMPILE::JS
-        override protected function createElement():WrappedHTMLElement
-        {
-            super.createElement();
-            element.className = "Panel";
-            typeNames = "Panel";
-            return element;
-        }
+               
+               /**
+                * @private
+                */
+               override public function addElement(c:IChild, 
dispatchEvent:Boolean = true):void
+               {
+                       var panelView:PanelView = view as PanelView;
+                       panelView.contentArea.addElement(c, dispatchEvent);
+                       panelView.contentArea.dispatchEvent(new 
Event("layoutNeeded"));
+               }
+               
+               /**
+                * @private
+                */
+               override public function addElementAt(c:IChild, index:int, 
dispatchEvent:Boolean = true):void
+               {
+                       var panelView:PanelView = view as PanelView;
+                       panelView.contentArea.addElementAt(c, index, 
dispatchEvent);
+                       panelView.contentArea.dispatchEvent(new 
Event("layoutNeeded"));
+               }
+               
+               /**
+                * @private
+                */
+               override public function getElementIndex(c:IChild):int
+               {
+                       var panelView:PanelView = view as PanelView;
+                       return panelView.contentArea.getElementIndex(c);
+               }
+               
+               /**
+                * @private
+                */
+               override public function removeElement(c:IChild, 
dispatchEvent:Boolean = true):void
+               {
+                       var panelView:PanelView = view as PanelView;
+                       panelView.contentArea.removeElement(c, dispatchEvent);
+               }
+               
+               /**
+                * @private
+                */
+               override public function get numElements():int
+               {
+                       var panelView:PanelView = view as PanelView;
+                       return panelView.contentArea.numElements;
+               }
+               
+               /**
+                * @private
+                */
+               override public function getElementAt(index:int):IChild
+               {
+                       var panelView:PanelView = view as PanelView;
+                       return panelView.contentArea.getElementAt(index);
+               }
        }
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/679eccb5/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/PanelWithControlBar.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/PanelWithControlBar.as
 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/PanelWithControlBar.as
index 6afd7a3..d5ff4b1 100644
--- 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/PanelWithControlBar.as
+++ 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/PanelWithControlBar.as
@@ -39,7 +39,7 @@ package org.apache.flex.html
         *  @playerversion AIR 2.6
         *  @productversion FlexJS 0.0
         */
-       public class PanelWithControlBar extends Container
+       public class PanelWithControlBar extends Panel
        {
                /**
                 *  constructor.
@@ -55,52 +55,6 @@ package org.apache.flex.html
                }
                
                /**
-                *  The string to display in the org.apache.flex.html.TitleBar.
-                *
-                *  @langversion 3.0
-                *  @playerversion Flash 10.2
-                *  @playerversion AIR 2.6
-                *  @productversion FlexJS 0.0
-                */
-               public function get title():String
-               {
-                       return IPanelModel(model).title;
-               }
-               public function set title(value:String):void
-               {
-                       IPanelModel(model).title = value;
-               }
-               
-               /**
-                *  The HTML string to display in the 
org.apache.flex.html.TitleBar.
-                *
-                *  @langversion 3.0
-                *  @playerversion Flash 10.2
-                *  @playerversion AIR 2.6
-                *  @productversion FlexJS 0.0
-                */
-               public function get htmlTitle():String
-               {
-                       return IPanelModel(model).htmlTitle;
-               }
-               public function set htmlTitle(value:String):void
-               {
-                       IPanelModel(model).htmlTitle = value;
-               }
-               
-               /**
-                * Whether or not to show a Close button in the 
org.apache.flex.html.TitleBar.
-                */
-               public function get showCloseButton():Boolean
-               {
-                       return IPanelModel(model).showCloseButton;
-               }
-               public function set showCloseButton(value:Boolean):void
-               {
-                       IPanelModel(model).showCloseButton = value;
-               }
-               
-               /**
                 *  The items in the org.apache.flex.html.ControlBar. Setting 
this property automatically
                 *  causes the ControlBar to display.
                 *

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/679eccb5/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/RadioButton.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/RadioButton.as 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/RadioButton.as
index b403ceb..d50b7d3 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/RadioButton.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/RadioButton.as
@@ -251,7 +251,7 @@ package org.apache.flex.html
             element = labelFor as WrappedHTMLElement;
 
             positioner = element;
-            positioner.style.position = 'relative';
+            //positioner.style.position = 'relative';
 
             (element as WrappedHTMLElement).flexjs_wrapper = this;
             (textNode as WrappedHTMLElement).flexjs_wrapper = this;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/679eccb5/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/SimpleList.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/SimpleList.as 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/SimpleList.as
index 96fb051..0d254e5 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/SimpleList.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/SimpleList.as
@@ -21,14 +21,14 @@ package org.apache.flex.html
     COMPILE::JS
     {
         import goog.events;
-        import org.apache.flex.core.WrappedHTMLElement;            
+        import org.apache.flex.core.WrappedHTMLElement;
     }
-        
+
        /**
         *  The SimpleList class is a component that displays data in a 
vertical column. This
-        *  component differs from org.apache.flex.html.List in that it 
displays 
+        *  component differs from org.apache.flex.html.List in that it displays
         *  only string values and maps to the &lt;select&gt; HTML element.
-        *  
+        *
      *  @toplevel
         *  @langversion 3.0
         *  @playerversion Flash 10.2
@@ -49,7 +49,7 @@ package org.apache.flex.html
                {
                        super();
                }
-        
+
         /**
          * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement
          * @flexjsignorecoercion HTMLSelectElement
@@ -62,12 +62,12 @@ package org.apache.flex.html
             goog.events.listen(element, 'change',
                 changeHandler);
             positioner = element;
-            positioner.style.position = 'relative';
+            //positioner.style.position = 'relative';
             className = 'SimpleList';
-            
+
             return element;
-        }   
-        
+        }
+
         /**
          * @flexjsignorecoercion HTMLSelectElement
          */

Reply via email to