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

    public class StepLayout extends LayoutBase
    {
        
        private var _columns:int = 5;
        Inspectable"General")]

        public function get columns():int
        {
            return _columns;
        }

        public function set columns(value:int):void
        {
            if (_columns == value)
                return;

            _columns = value;
            invalidateTargetSizeAndDisplayList();
        }
        

        override public function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
        {
            var layoutTarget:GroupBase = target;
            
            var layoutElement:ILayoutElement;
             var num:Number = target.numElements
     
             var row:Number = 0;    
             var col:int = 0;
     
     
             for (var index:int = 0; index < num; index++)
            {
                layoutElement = layoutTarget.getElementAt(index);
                layoutElement.setLayoutBoundsSize(NaN,NaN);    
                
                var elementWidth:Number = layoutElement.getLayoutBoundsWidth();
                var elementHeight:Number = layoutElement.getLayoutBoundsHeight();
                
                var elementX:Number = col * elementWidth;
                var elementY:Number = col * elementHeight + row * elementHeight;
    
                layoutElement.setLayoutBoundsPosition(elementX,elementY);
                
                col++;
                
                if(col == _columns)
                {    col = 0;
                    row++;
                }
            }
        }
        
        
        private function invalidateTargetSizeAndDisplayList():void
        {
            var g:GroupBase = target;

            if (!g)
                return;

            g.invalidateSize();
            g.invalidateDisplayList();
        }
        
    }
}