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(); } } }