Repository: flex-asjs
Updated Branches:
  refs/heads/develop 40b5b8cfb -> 3c23b3a1a


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/3c23b3a1/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/layouts/VerticalLayout.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/layouts/VerticalLayout.as
 
b/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/layouts/VerticalLayout.as
index a9db932..b758f88 100644
--- 
a/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/layouts/VerticalLayout.as
+++ 
b/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/layouts/VerticalLayout.as
@@ -20,15 +20,15 @@ package org.apache.flex.html.beads.layouts
 {
        
        import org.apache.flex.core.IBeadLayout;
-    import org.apache.flex.core.ILayoutChild;
+       import org.apache.flex.core.ILayoutChild;
        import org.apache.flex.core.ILayoutParent;
-    import org.apache.flex.core.IParentIUIBase;
+       import org.apache.flex.core.IParentIUIBase;
        import org.apache.flex.core.IStrand;
-    import org.apache.flex.core.IUIBase;
+       import org.apache.flex.core.IUIBase;
        import org.apache.flex.core.ValuesManager;
        import org.apache.flex.events.Event;
        import org.apache.flex.events.IEventDispatcher;
-    import org.apache.flex.utils.dbg.DOMPathUtil;
+       import org.apache.flex.utils.dbg.DOMPathUtil;
 
     /**
      *  The VerticalLayout class is a simple layout
@@ -70,46 +70,25 @@ package org.apache.flex.html.beads.layouts
          */
                public function set strand(value:IStrand):void
                {
-            host = value as ILayoutChild;
-            
-            // if host is going to be sized by its parent, then don't
-            // run layout when the children are added until after the
-            // initial sizing by the parent.
-            if (host.isWidthSizedToContent() && host.isHeightSizedToContent())
-            {
-                addOtherListeners();
-            }
-            else
-            {
-                host.addEventListener("widthChanged", changeHandler);
-                host.addEventListener("heightChanged", changeHandler);
-                host.addEventListener("sizeChanged", sizeChangeHandler);
-                if (!isNaN(host.explicitWidth) && !isNaN(host.explicitHeight))
-                    addOtherListeners();
-            }
+            host = value as ILayoutChild;            
                }
        
-        private function addOtherListeners():void
-        {
-            host.addEventListener("childrenAdded", changeHandler);
-            host.addEventListener("layoutNeeded", changeHandler);
-                       host.addEventListener("itemsCreated", changeHandler);
-        }
-        
-        private function sizeChangeHandler(event:Event):void
-        {
-            addOtherListeners();
-            changeHandler(event);
-        }
-        
-               private function changeHandler(event:Event):void
+        /**
+         *  @copy org.apache.flex.core.IBeadLayout#layout
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.0
+         */
+               public function layout():Boolean
                {
-            //trace(DOMPathUtil.getPath(host), event ? event.type : "fixed 
size");
                        var layoutParent:ILayoutParent = 
host.getBeadByType(ILayoutParent) as ILayoutParent;
                        var contentView:IParentIUIBase = layoutParent ? 
layoutParent.contentView : IParentIUIBase(host);
                        
                        var n:int = contentView.numElements;
                        var hasHorizontalFlex:Boolean;
+            var hostSizedToContent:Boolean = host.isWidthSizedToContent();
                        var flexibleHorizontalMargins:Array = [];
             var ilc:ILayoutChild;
                        var marginLeft:Object;
@@ -118,10 +97,15 @@ package org.apache.flex.html.beads.layouts
                        var marginBottom:Object;
                        var margin:Object;
                        var maxWidth:Number = 0;
+            // asking for contentView.width can result in infinite loop if 
host isn't sized already
+            var w:Number = hostSizedToContent ? 0 : contentView.width;
                        for (var i:int = 0; i < n; i++)
                        {
                                var child:IUIBase = contentView.getElementAt(i) 
as IUIBase;
                                if (child == null || !child.visible) continue;
+                ilc = child as ILayoutChild;
+                var left:Number = ValuesManager.valuesImpl.getValue(child, 
"left");
+                var right:Number = ValuesManager.valuesImpl.getValue(child, 
"right");
                                margin = 
ValuesManager.valuesImpl.getValue(child, "margin");
                                if (margin is Array)
                                {
@@ -167,19 +151,18 @@ package org.apache.flex.html.beads.layouts
                                        child.y = mt;
                                else
                                        child.y = yy + Math.max(mt, lastmb);
-                if (child is ILayoutChild)
+                if (ilc)
                 {
-                    ilc = child as ILayoutChild;
                     if (!isNaN(ilc.percentHeight))
-                        ilc.setHeight(contentView.height * ilc.percentHeight / 
100, true);
+                        ilc.setHeight(contentView.height * ilc.percentHeight / 
100, !isNaN(ilc.percentWidth));
                 }
-                               yy = child.y + child.clientHeight;
                                lastmb = mb;
-                               flexibleHorizontalMargins[i] = {};
+                var marginObject:Object = {};
+                               flexibleHorizontalMargins[i] = marginObject;
                                if (marginLeft == "auto")
                                {
                                        ml = 0;
-                                       flexibleHorizontalMargins[i].marginLeft 
= marginLeft;
+                    marginObject.marginLeft = marginLeft;
                                        hasHorizontalFlex = true;
                                }
                                else
@@ -188,15 +171,15 @@ package org.apache.flex.html.beads.layouts
                                        if (isNaN(ml))
                                        {
                                                ml = 0;
-                                               
flexibleHorizontalMargins[i].marginLeft = marginLeft;
+                        marginObject.marginLeft = marginLeft;
                                        }
                                        else
-                                               
flexibleHorizontalMargins[i].marginLeft = ml;
+                        marginObject.marginLeft = ml;
                                }
                                if (marginRight == "auto")
                                {
                                        mr = 0;
-                                       
flexibleHorizontalMargins[i].marginRight = marginRight;
+                    marginObject.marginRight = marginRight;
                                        hasHorizontalFlex = true;
                                }
                                else
@@ -205,34 +188,107 @@ package org.apache.flex.html.beads.layouts
                                        if (isNaN(mr))
                                        {
                                                mr = 0;
-                                               
flexibleHorizontalMargins[i].marginRight = marginRight;
+                        marginObject.marginRight = marginRight;
                                        }
                                        else
-                                               
flexibleHorizontalMargins[i].marginRight = mr;
+                        marginObject.marginRight = mr;
                                }
-                               child.x = ml;
-                if (child is ILayoutChild)
+                if (!hostSizedToContent)
                 {
-                    ilc = child as ILayoutChild;
-                    if (!isNaN(ilc.percentWidth))
-                        ilc.setWidth(contentView.width * ilc.percentWidth / 
100, true);
+                    // if host is sized by parent,
+                    // we can position and size children horizontally now
+                    setPositionAndWidth(child, left, ml, right, mr, w);
                 }
-                               maxWidth = Math.max(maxWidth, ml + 
child.clientWidth + mr);
-                       }
-                       for (i = 0; i < n; i++)
-                       {
-                child = contentView.getElementAt(i) as IUIBase;
-                               if (child == null || !child.visible) continue;
-                if (hasHorizontalFlex)
+                else
                 {
-                                       var obj:Object = 
flexibleHorizontalMargins[i];
-                                       if (obj.marginLeft == "auto" && 
obj.marginRight == "auto")
-                                               child.x = maxWidth - 
child.clientWidth / 2;
-                                       else if (obj.marginLeft == "auto")
-                                               child.x = maxWidth - 
child.clientWidth - obj.marginRight;
-                               }
-                child.dispatchEvent(new Event("sizeChanged"));
+                    if (!isNaN(left))
+                    {
+                        ml = left;
+                        marginObject.left = ml;
+                    }
+                    if (!isNaN(right))
+                    {
+                        mr = right;
+                        marginObject.right = mr;
+                    }
+                    maxWidth = Math.max(maxWidth, ml + child.clientWidth + 
mr);                    
+                }
+                yy = child.y + child.clientHeight;
                        }
+            if (hostSizedToContent)
+            {
+                ILayoutChild(contentView).setWidth(maxWidth, true);
+                if (host.isHeightSizedToContent())
+                    ILayoutChild(contentView).setHeight(yy, true);
+                       for (i = 0; i < n; i++)
+                       {
+                    child = contentView.getElementAt(i) as IUIBase;
+                               if (child == null || !child.visible) continue;
+                    var obj:Object = flexibleHorizontalMargins[i];
+                    setPositionAndWidth(child, obj.left, obj.marginLeft,
+                        obj.right, obj.marginRight, maxWidth);
+                       }
+            }
+            if (hasHorizontalFlex)
+            {
+                for (i = 0; i < n; i++)
+                {
+                    child = contentView.getElementAt(i) as IUIBase;
+                    if (child == null || !child.visible) continue;
+                    ilc = child as ILayoutChild;
+                    obj = flexibleHorizontalMargins[i];
+                    if (hasHorizontalFlex)
+                    {
+                        if (obj.marginLeft == "auto" && obj.marginRight == 
"auto")
+                            child.x = maxWidth - child.clientWidth / 2;
+                        else if (obj.marginLeft == "auto")
+                            child.x = maxWidth - child.clientWidth - 
obj.marginRight;
+                    }
+                }
+            }
+            return true;
                }
+    
+        private function setPositionAndWidth(child:IUIBase, left:Number, 
ml:Number,
+                                             right:Number, mr:Number, 
w:Number):void
+        {
+            var widthSet:Boolean = false;
+            
+            var ww:Number = w;
+            var ilc:ILayoutChild = child as ILayoutChild;
+            if (!isNaN(left))
+            {
+                child.x = left + ml;
+                ww -= left + ml;
+            }
+            else 
+            {
+                child.x = ml;
+                ww -= left;
+            }
+            if (!isNaN(right))
+            {
+                if (!isNaN(left))
+                {
+                    if (ilc)
+                        ilc.setWidth(ww - right - mr, true);
+                    else
+                    {
+                        child.width = ww - right - mr;
+                        widthSet = true;
+                    }
+                }
+                else
+                    child.x = w - right - mr - child.clientWidth;
+            }
+            if (ilc)
+            {
+                if (!isNaN(ilc.percentWidth))
+                    ilc.setWidth(w * ilc.percentWidth / 100, true);
+            }
+            if (!widthSet)
+                child.dispatchEvent(new Event("sizeChanged"));
+        }
+
        }
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/3c23b3a1/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/layouts/VerticalScrollingLayout.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/layouts/VerticalScrollingLayout.as
 
b/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/layouts/VerticalScrollingLayout.as
index 58a6f59..2c6116c 100644
--- 
a/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/layouts/VerticalScrollingLayout.as
+++ 
b/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/layouts/VerticalScrollingLayout.as
@@ -76,23 +76,16 @@ package org.apache.flex.html.beads.layouts
                public function set strand(value:IStrand):void
                {
                        _strand = value;
-                       
-                       
IEventDispatcher(value).addEventListener("heightChanged", changeHandler);
-                       
IEventDispatcher(value).addEventListener("widthChanged", changeHandler);
-                       
IEventDispatcher(value).addEventListener("itemsCreated", changeHandler);
-            IEventDispatcher(value).addEventListener("childrenAdded", 
changeHandler);
-                       
IEventDispatcher(value).addEventListener("layoutNeeded", changeHandler);
                }
                
-               private function changeHandler(event:Event):void
+        /**
+         * @copy org.apache.flex.core.IBeadLayout#layout
+         */
+               public function layout():Boolean
                {            
             var layoutParent:IScrollingLayoutParent = 
                 _strand.getBeadByType(IScrollingLayoutParent) as 
IScrollingLayoutParent;
             var contentView:IParentIUIBase = layoutParent.contentView as 
IParentIUIBase;
-            if (!contentView)
-                return;
-            IEventDispatcher(contentView).addEventListener("childrenAdded", 
changeHandler);
-            IEventDispatcher(contentView).addEventListener("layoutNeeded", 
changeHandler);
             
                        var border:Border = layoutParent.border;
                        var borderModel:IBorderModel;
@@ -154,8 +147,7 @@ package org.apache.flex.html.beads.layouts
                 DisplayObject(contentView).scrollRect = null;
                                vScrollBar.visible = false;
                        }
-                       
-                       IEventDispatcher(_strand).dispatchEvent(new 
Event("layoutComplete"));
+                       return true;
                }
 
         private function scrollHandler(event:Event):void

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/3c23b3a1/frameworks/projects/HTML/asjs/src/org/apache/flex/html/beads/DataGridView.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/asjs/src/org/apache/flex/html/beads/DataGridView.as 
b/frameworks/projects/HTML/asjs/src/org/apache/flex/html/beads/DataGridView.as
index 9e36e55..8d3e8fa 100644
--- 
a/frameworks/projects/HTML/asjs/src/org/apache/flex/html/beads/DataGridView.as
+++ 
b/frameworks/projects/HTML/asjs/src/org/apache/flex/html/beads/DataGridView.as
@@ -169,7 +169,7 @@ package org.apache.flex.html.beads
                        }
                        layout.header = buttonBar;
                        layout.columns = columns;
-                       
+                       layout.layout();
                        IEventDispatcher(_strand).dispatchEvent(new 
Event("itemsCreated"));
                }
                

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/3c23b3a1/frameworks/projects/HTML/asjs/src/org/apache/flex/html/beads/layouts/DataGridLayout.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/asjs/src/org/apache/flex/html/beads/layouts/DataGridLayout.as
 
b/frameworks/projects/HTML/asjs/src/org/apache/flex/html/beads/layouts/DataGridLayout.as
index 9cf614c..0ad68df 100644
--- 
a/frameworks/projects/HTML/asjs/src/org/apache/flex/html/beads/layouts/DataGridLayout.as
+++ 
b/frameworks/projects/HTML/asjs/src/org/apache/flex/html/beads/layouts/DataGridLayout.as
@@ -65,11 +65,6 @@ package org.apache.flex.html.beads.layouts
                public function set strand(value:IStrand):void
                {
                        _strand = value;
-                       
IEventDispatcher(value).addEventListener("widthChanged", changeHandler);
-                       
IEventDispatcher(value).addEventListener("heightChanged", changeHandler);
-                       
IEventDispatcher(value).addEventListener("childrenAdded", changeHandler);
-                       
IEventDispatcher(value).addEventListener("itemsCreated", changeHandler);
-                       
IEventDispatcher(value).addEventListener("elementAdded", changeHandler);
                }
                
                private var _header:UIBase;
@@ -111,10 +106,10 @@ package org.apache.flex.html.beads.layouts
                        _columns = value;
                }
                
-               /**
-                * @private
-                */
-               private function changeHandler(event:Event):void
+        /**
+         * @copy org.apache.flex.core.IBeadLayout#layout
+         */
+               public function layout():Boolean
                {                       
                        var sw:Number = UIBase(_strand).width;
                        var sh:Number = UIBase(_strand).height;
@@ -148,7 +143,7 @@ package org.apache.flex.html.beads.layouts
                                xpos += column.width;
                        }
                        
-                       IEventDispatcher(_strand).dispatchEvent(new 
Event("layoutComplete"));
+                       return true;
                }
        }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/3c23b3a1/frameworks/projects/HTML/asjs/src/org/apache/flex/html/beads/layouts/FlexibleFirstChildHorizontalLayout.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/asjs/src/org/apache/flex/html/beads/layouts/FlexibleFirstChildHorizontalLayout.as
 
b/frameworks/projects/HTML/asjs/src/org/apache/flex/html/beads/layouts/FlexibleFirstChildHorizontalLayout.as
index a48cd63..f374fb8 100644
--- 
a/frameworks/projects/HTML/asjs/src/org/apache/flex/html/beads/layouts/FlexibleFirstChildHorizontalLayout.as
+++ 
b/frameworks/projects/HTML/asjs/src/org/apache/flex/html/beads/layouts/FlexibleFirstChildHorizontalLayout.as
@@ -19,7 +19,8 @@
 package org.apache.flex.html.beads.layouts
 {
        import org.apache.flex.core.IBeadLayout;
-       import org.apache.flex.core.ILayoutParent;
+       import org.apache.flex.core.ILayoutChild;
+    import org.apache.flex.core.ILayoutParent;
        import org.apache.flex.core.IParent;
        import org.apache.flex.core.IStrand;
        import org.apache.flex.core.IUIBase;
@@ -55,7 +56,10 @@ package org.apache.flex.html.beads.layouts
                {
                }
                
-               private var _strand:IStrand;
+        // the strand/host container is also an ILayoutChild because
+        // can have its size dictated by the host's parent which is
+        // important to know for layout optimization
+        private var host:ILayoutChild;
                
         /**
          *  @copy org.apache.flex.core.IBead#strand
@@ -67,19 +71,18 @@ package org.apache.flex.html.beads.layouts
          */
                public function set strand(value:IStrand):void
                {
-                       _strand = value;
-            IEventDispatcher(value).addEventListener("layoutNeeded", 
changeHandler);
-                       
IEventDispatcher(value).addEventListener("widthChanged", changeHandler);
-                       
IEventDispatcher(value).addEventListener("childrenAdded", changeHandler);
-                       
IEventDispatcher(value).addEventListener("itemsCreated", changeHandler);
-                       IEventDispatcher(value).addEventListener("sizeChanged", 
changeHandler);
+            host = value as ILayoutChild;
                }
        
-               private function changeHandler(event:Event):void
+        /**
+         * @copy org.apache.flex.core.IBeadLayout#layout
+         */
+               public function layout():Boolean
                {
-                       var layoutParent:ILayoutParent = 
_strand.getBeadByType(ILayoutParent) as ILayoutParent;
+                       var layoutParent:ILayoutParent = 
host.getBeadByType(ILayoutParent) as ILayoutParent;
                        var contentView:IParent = layoutParent.contentView;
-                       
+            var hostSizedToContent:Boolean = host.isHeightSizedToContent();
+
                        var n:int = contentView.numElements;
                        var marginLeft:Object;
                        var marginRight:Object;
@@ -91,7 +94,7 @@ package org.apache.flex.html.beads.layouts
                        
             var xx:Number = layoutParent.resizableView.width;
             if (isNaN(xx) || xx <= 0)
-                return;
+                return true;
             var padding:Object = determinePadding();
             // some browsers don't like it when you go all the way to the 
right edge.
             xx -= padding.paddingLeft + padding.paddingRight + 1;
@@ -180,7 +183,10 @@ package org.apache.flex.html.beads.layouts
                                else
                                        child.y = obj.marginTop;
                        }
-            layoutParent.resizableView.height = maxHeight;
+            if (hostSizedToContent)
+                ILayoutChild(contentView).setHeight(maxHeight, true);
+
+            return true;
                }
 
         // TODO (aharui): utility class or base class
@@ -201,7 +207,7 @@ package org.apache.flex.html.beads.layouts
             var paddingLeft:Object;
             var paddingTop:Object;
             var paddingRight:Object;
-            var padding:Object = ValuesManager.valuesImpl.getValue(_strand, 
"padding");
+            var padding:Object = ValuesManager.valuesImpl.getValue(host, 
"padding");
             if (typeof(padding) == "Array")
             {
                 if (padding.length == 1)
@@ -221,9 +227,9 @@ package org.apache.flex.html.beads.layouts
             }
             else if (padding == null)
             {
-                paddingLeft = ValuesManager.valuesImpl.getValue(_strand, 
"padding-left");
-                paddingTop = ValuesManager.valuesImpl.getValue(_strand, 
"padding-top");
-                paddingRight = ValuesManager.valuesImpl.getValue(_strand, 
"padding-right");
+                paddingLeft = ValuesManager.valuesImpl.getValue(host, 
"padding-left");
+                paddingTop = ValuesManager.valuesImpl.getValue(host, 
"padding-top");
+                paddingRight = ValuesManager.valuesImpl.getValue(host, 
"padding-right");
             }
             else
             {

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/3c23b3a1/frameworks/projects/HTML/asjs/src/org/apache/flex/html/beads/layouts/OneFlexibleChildHorizontalLayout.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/asjs/src/org/apache/flex/html/beads/layouts/OneFlexibleChildHorizontalLayout.as
 
b/frameworks/projects/HTML/asjs/src/org/apache/flex/html/beads/layouts/OneFlexibleChildHorizontalLayout.as
index cd28e32..761f36e 100644
--- 
a/frameworks/projects/HTML/asjs/src/org/apache/flex/html/beads/layouts/OneFlexibleChildHorizontalLayout.as
+++ 
b/frameworks/projects/HTML/asjs/src/org/apache/flex/html/beads/layouts/OneFlexibleChildHorizontalLayout.as
@@ -83,38 +83,12 @@ package org.apache.flex.html.beads.layouts
                public function set strand(value:IStrand):void
                {
             host = value as ILayoutChild;
-            
-            // if host is going to be sized by its parent, then don't
-            // run layout when the children are added until after the
-            // initial sizing by the parent.
-            if (host.isWidthSizedToContent() && host.isHeightSizedToContent())
-            {
-                addOtherListeners();
-            }
-            else
-            {
-                host.addEventListener("widthChanged", changeHandler);
-                host.addEventListener("heightChanged", changeHandler);
-                host.addEventListener("sizeChanged", sizeChangeHandler);
-                if (!isNaN(host.explicitWidth) && !isNaN(host.explicitHeight))
-                    addOtherListeners();
-            }
                }
        
-        private function addOtherListeners():void
-        {
-            host.addEventListener("childrenAdded", changeHandler);
-            host.addEventListener("layoutNeeded", changeHandler);
-            host.addEventListener("itemsCreated", changeHandler);
-        }
-        
-        private function sizeChangeHandler(event:Event):void
-        {
-            addOtherListeners();
-            changeHandler(event);
-        }
-        
-               private function changeHandler(event:Event):void
+        /**
+         * @copy org.apache.flex.core.IBeadLayout#layout
+         */
+               public function layout():Boolean
                {
             var layoutParent:ILayoutParent = host.getBeadByType(ILayoutParent) 
as ILayoutParent;
             var contentView:IParentIUIBase = layoutParent ? 
layoutParent.contentView : IParentIUIBase(host);
@@ -366,7 +340,7 @@ package org.apache.flex.html.beads.layouts
                                else
                                        child.y = obj.marginTop;
                        }
-            ILayoutChild(layoutParent.resizableView).setHeight(maxHeight);
+            return true;
                }
 
         // TODO (aharui): utility class or base class

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/3c23b3a1/frameworks/projects/HTML/asjs/src/org/apache/flex/html/beads/layouts/OneFlexibleChildVerticalLayout.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/asjs/src/org/apache/flex/html/beads/layouts/OneFlexibleChildVerticalLayout.as
 
b/frameworks/projects/HTML/asjs/src/org/apache/flex/html/beads/layouts/OneFlexibleChildVerticalLayout.as
index 2a0ad3c..eb641b8 100644
--- 
a/frameworks/projects/HTML/asjs/src/org/apache/flex/html/beads/layouts/OneFlexibleChildVerticalLayout.as
+++ 
b/frameworks/projects/HTML/asjs/src/org/apache/flex/html/beads/layouts/OneFlexibleChildVerticalLayout.as
@@ -83,38 +83,12 @@ package org.apache.flex.html.beads.layouts
                public function set strand(value:IStrand):void
                {
             host = value as ILayoutChild;
-            
-            // if host is going to be sized by its parent, then don't
-            // run layout when the children are added until after the
-            // initial sizing by the parent.
-            if (host.isWidthSizedToContent() && host.isHeightSizedToContent())
-            {
-                addOtherListeners();
-            }
-            else
-            {
-                host.addEventListener("widthChanged", changeHandler);
-                host.addEventListener("heightChanged", changeHandler);
-                host.addEventListener("sizeChanged", sizeChangeHandler);
-                if (!isNaN(host.explicitWidth) && !isNaN(host.explicitHeight))
-                    addOtherListeners();
-            }
                }
-       
-        private function addOtherListeners():void
-        {
-            host.addEventListener("childrenAdded", changeHandler);
-            host.addEventListener("layoutNeeded", changeHandler);
-            host.addEventListener("itemsCreated", changeHandler);
-        }
-        
-        private function sizeChangeHandler(event:Event):void
-        {
-            addOtherListeners();
-            changeHandler(event);
-        }
-        
-               private function changeHandler(event:Event):void
+               
+        /**
+         * @copy org.apache.flex.core.IBeadLayout#layout
+         */
+               public function layout():Boolean
                {
             var layoutParent:ILayoutParent = host.getBeadByType(ILayoutParent) 
as ILayoutParent;
             var contentView:IParentIUIBase = layoutParent ? 
layoutParent.contentView : IParentIUIBase(host);
@@ -366,7 +340,7 @@ package org.apache.flex.html.beads.layouts
                                else
                                        child.x = obj.marginLeft;
                        }
-            layoutParent.resizableView.width = maxWidth;
+            return true;
                }
 
         // TODO (aharui): utility class or base class

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/3c23b3a1/frameworks/projects/HTML/asjs/src/org/apache/flex/html/beads/layouts/VerticalColumnLayout.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/asjs/src/org/apache/flex/html/beads/layouts/VerticalColumnLayout.as
 
b/frameworks/projects/HTML/asjs/src/org/apache/flex/html/beads/layouts/VerticalColumnLayout.as
index d4b801b..32916c4 100644
--- 
a/frameworks/projects/HTML/asjs/src/org/apache/flex/html/beads/layouts/VerticalColumnLayout.as
+++ 
b/frameworks/projects/HTML/asjs/src/org/apache/flex/html/beads/layouts/VerticalColumnLayout.as
@@ -64,9 +64,6 @@ package org.apache.flex.html.beads.layouts
                public function set strand(value:IStrand):void
                {
                        _strand = value;
-                       
IEventDispatcher(value).addEventListener("widthChanged", changeHandler);
-                       
IEventDispatcher(value).addEventListener("heightChanged", changeHandler);
-                       
IEventDispatcher(value).addEventListener("childrenAdded", changeHandler);
                }
                
                
@@ -89,10 +86,10 @@ package org.apache.flex.html.beads.layouts
                        _numColumns = value;
                }
                
-               /**
-                * @private
-                */
-               private function changeHandler(event:Event):void
+        /**
+         * @copy org.apache.flex.core.IBeadLayout#layout
+         */
+               public function layout():Boolean
                {                       
                        var sw:Number = UIBase(_strand).width;
                        var sh:Number = UIBase(_strand).height;
@@ -145,7 +142,7 @@ package org.apache.flex.html.beads.layouts
                                }
                        }
                        
-                       IEventDispatcher(_strand).dispatchEvent(new 
Event("layoutComplete"));
+                       return true;
                }
        }
 }
\ No newline at end of file

Reply via email to