All pastes #772308 Raw Edit

Something

public text v1 · immutable
·published 2007-11-13 18:41 UTC
rendered paste body
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;
    }
}	
}