rendered paste bodypackage 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;
}
}
}