package com.jeroenwijering.plugins { import com.jeroenwijering.events.*; import flash.display.MovieClip; import flash.events.MouseEvent; import flash.geom.Rectangle; public class PlaylistResizer extends MovieClip implements PluginInterface { /** Reference to the View of the player. **/ private var view:AbstractView; /** Reference to the graphics. **/ private var clip:MovieClip; private var _dragging:Boolean = false; public function PlaylistResizer() { clip = this; clip.resizeBar.addEventListener(MouseEvent.MOUSE_DOWN, _onMouseDown); clip.addEventListener(MouseEvent.MOUSE_MOVE, _onMouseMove); clip.resizeBar.addEventListener(MouseEvent.MOUSE_UP, _onMouseUp); clip.resizeBar.buttonMode = true; } private function _onMouseDown(evt:MouseEvent):void { clip.resizeBar.startDrag(false, new Rectangle(0,0,stage.stageWidth,0)) _dragging = true; } private function _onMouseUp(evt:MouseEvent):void { clip.resizeBar.stopDrag(); _dragging = false; } /** The initialize call is invoked by the player View. **/ public function initializePlugin(vie:AbstractView):void { view = vie; view.addControllerListener(ControllerEvent.RESIZE,resizeHandler); view.addModelListener(ModelEvent.STATE,stateHandler); resizeHandler(); }; /** Close on video completed. **/ private function stateHandler(evt:ModelEvent) { switch(evt.data.newstate) { case ModelStates.BUFFERING: case ModelStates.PLAYING: //clip.visible = false; break; default: //clip.stage.focus = clip.query; //clip.visible = true; break; } }; /** Handle a resize. **/ private function resizeHandler(evt:ControllerEvent=undefined) { //do nothing yet }; private function _onMouseMove(evt:MouseEvent):void { if(_dragging) { var s:Number = Math.round(stage.stageWidth - clip.resizeBar.x); view.sendEvent('TRACE',s.toString()); onPlaylistResize(s); } } private function onPlaylistResize(newWidth:Number):void { if(newWidth >= 25) { trace("bigger"); view.config['playlistsize'] = newWidth; //if(this.player.view.config['playlist'] == 'none') this.player.view.config['playlist'] = 'right'; } else { trace("smaller"); //this.player.view.config['playlist'] = 'none'; } //view.controller.resizeHandler(new Event(Event.RESIZE)); //view.sendEvent('RESIZE', {height:view.config['height'], width:view.config['width']}); view.sendEvent('RESIZE'); } } }