package com.mrinalwadhwa.layouts
{
    import mx.core.ILayoutElement;
    
    import spark.components.supportClasses.GroupBase;
    import spark.layouts.supportClasses.LayoutBase;

    // extend LayoutBase    
    public class RandomLayout extends LayoutBase
    {
        // override updateDisplayList method of LayoutBase
        override public function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
        {
            // the target group whos children are being layed out
            var layoutTarget:GroupBase = target;
            
            var layoutElement:ILayoutElement;
            var count:Number = target.numElements
     
             // loop through each child element
             for (var index:int = 0; index < count; index++)
            {
                layoutElement = layoutTarget.getElementAt(index);
                
                // tell the child to take its prefferd size
                layoutElement.setLayoutBoundsSize(NaN,NaN);    
                
                // implement some algothim to calculate xy position 
                var elementX:Number = Math.random() * layoutTarget.getLayoutBoundsWidth();
                var elementY:Number = Math.random() * layoutTarget.getLayoutBoundsHeight();
    
                // set the position of this element    
                layoutElement.setLayoutBoundsPosition(elementX,elementY);
                
                // you can also have an algo to calculate size and set it using
                // layoutElement.setLayoutBoundsSize(elementW, elementH);
                
            }
        }
    }
}