package ptaylor.bdd.grid
{
    import org.robotlegs.mvcs.Mediator;
    
    import ptaylor.bdd.grid.services.IStreamingService;
    import ptaylor.bdd.grid.vo.StreamData;
    import ptaylor.bdd.grid.vo.StreamInfoVO;
    import ptaylor.bdd.screens.components.Screens;
    import ptaylor.bdd.screens.events.ScreenChangedEvent;
    
    public class StreamingServiceUIMediator extends Mediator
    {
        [Inject]public var view:IStreamingServiceUI;
        
        [Inject]public var service:IStreamingService;
        
        private static var instances:int = 0;
        
        override public function onRegister():void
        {
            trace('creating StreamingServiceUIMediator: ' + (++instances));
            
            view.updateStreamInfo.add(onUpdateStream);
            
            service.update.add(onServiceUpdate);
            
            service.start();
            
            super.onRegister();
        }
        
        override public function onRemove():void
        {
            trace('destroying StreamingServiceUIMediator: ' + (--instances));
            
            view.updateStreamInfo.remove(onUpdateStream);
            
            service.update.remove(onServiceUpdate);
            
            service.stop();
            
            super.onRemove();
        }
        
        private function onUpdateStream(info:StreamInfoVO):void
        {
            if(info.channel == '')
                service.stop();
            else
                service.updateInfo(info);
        }
        
        private function onServiceUpdate(data:StreamData):void
        {
            view.setStreamData(data);
        }
    }
}