package { import dw.cm.content.IXmlConfigurable; import dw.ui.basic.ListboxBase; import dw.ui.basic.UILayoutGridMediator; import dw.ui.basic.UISingleItemSelectStrategy; import dw.ui.panner.BlindAutoPanner; import dw.ui.panner.Panner; import fl.motion.easing.Quadratic; import flash.events.Event; import flash.utils.Dictionary; //REPRESENTS THE ALBUMS LISTBOX IN THE ALBUMS ACCRODION ITEM public class AlbumlistListbox extends ListboxBase implements IXmlConfigurable { private var _albums:Array; private var _xmlData:XML; private var _albumListboxItemMap:Dictionary; public function AlbumlistListbox() { _layout = new UILayoutGridMediator(); _selectStrategy = new UISingleItemSelectStrategy(); } public function get xmlData():XML { return _xmlData; } public function selectAlbum(albumName:String):void { var listboxItem:AlbumlistListboxItem = _albumListboxItemMap[albumName]; select(listboxItem); } protected override function evthndlContentContainerAddedToStage(e:Event) : void { if(_panner == null) { //ADDS PANNING LOGIC TO THE LISTBOX, USING THE MASK AS THE POLLING CLIP super.evthndlContentContainerAddedToStage(e); _panner = BlindAutoPanner.setUp(_contentContainer,this["listboxMask"],this["listboxMask"],Panner.VERTICAL,"TL",false,true); _panner.pixelPerfect = false; _panner.panTime = 0.9; //CHANGING THE SPEED BELOW ALTERS THE MAX SPEED THE SCROLLING GOES TO (_panner as BlindAutoPanner).maxSpeed = 20; (_panner as BlindAutoPanner).easingIn = Quadratic.easeIn; (_panner as BlindAutoPanner).easingOut = Quadratic.easeOut; } } public function set albums(v:Array):void { _albumListboxItemMap = new Dictionary(); _albums = v; for each(var albumName:String in v) { var newItem:AlbumlistListboxItem = new AlbumlistListboxItem(); newItem.xmlData = _xmlData.mp3.(@album == albumName)[0]; addItem(newItem); _albumListboxItemMap[albumName] = newItem; } } public function set xmlData(v:XML):void { _xmlData = v; //GET BACK TO THE TOP OF THE LISTBOX if(_panner != null) _panner.pan(0,-99999,true); } public override function dispose() : void { _panner.dispose(); super.dispose(); } } }