package org.aswing{ import flash.display.DisplayObject; import flash.geom.Rectangle; import org.aswing.Component; import org.aswing.Container; import org.aswing.EmptyLayout; import org.aswing.geom.IntDimension; import org.aswing.Insets; import org.aswing.geom.IntPoint; public class FlowParentLayout extends FlowLayout{ public function FlowParentLayout(align:int=AsWingConstants.LEFT, hgap:int=5, vgap:int=5, margin:Boolean=true) { super(align, hgap, vgap, margin); } override public function preferredLayoutSize(target:Container):IntDimension { var dim:IntDimension = new IntDimension(); var insets:Insets = target.getInsets(); dim.width = target.getParent().getWidth() - (margin? hgap*2 : 0 ) -insets.left -insets.right; dim.height = (margin? vgap*2 : 0 ) + insets.bottom + insets.top; var nmembers:int = target.getComponentCount(); var x:int = 0; var rowHeight:int = 0; if(nmembers ==0)return dim; for (var i:int = 0 ; i < nmembers ; i++) { var m:Component = target.getComponent(i); if (m.isVisible()) { var d:IntDimension = m.getPreferredSize(); if( x + d.width <= dim.width ){ rowHeight = Math.max(rowHeight, d.height); if (x > 0) x += hgap; x += d.width; }else { dim.height += rowHeight + vgap; x = d.width; rowHeight = d.height; } } } if(d !=null) dim.height += d.height; return dim; } } }