package ptaylor.bdd.screens
{
    import flash.events.Event;
    
    import org.robotlegs.mvcs.Mediator;
    
    import ptaylor.bdd.screens.events.ScreenChangedEvent;
    
    public class ScreenMediator extends Mediator
    {
        [Inject]public var screen:IScreen;
        
        override public function onRegister():void
        {
            screen.screenChangedSignal.add(onScreenChange);
            eventMap.mapListener(eventDispatcher, ScreenChangedEvent.SCREEN_CHANGED, whenScreenChanges, ScreenChangedEvent);
        }
        
        override public function onRemove():void
        {
            screen.screenChangedSignal.remove(onScreenChange);
            eventMap.unmapListener(eventDispatcher, ScreenChangedEvent.SCREEN_CHANGED, whenScreenChanges, ScreenChangedEvent);
        }
        
        private function onScreenChange(screen:IScreen):void
        {
            dispatch(new ScreenChangedEvent(screen));
        }
        
        private function whenScreenChanges(event:ScreenChangedEvent):void
        {
            screen.selectedScreen = event.screen;
        }
    }
}