package com.mariusht.puremvcexample.view
{
    import com.mariusht.puremvcexample.view.components.ColorfulViewStack;
    
    import flash.events.Event;
    
    import org.puremvc.as3.interfaces.IMediator;
    import org.puremvc.as3.patterns.mediator.Mediator;

    public class ColorfulViewStackMediator extends Mediator implements IMediator
    {
        public static const NAME:String = 'ColorfulViewStackMediator';
        
        public function ColorfulViewStackMediator(viewComponent:ColorfulViewStack)
        {
            super(NAME, viewComponent);
            
            colorfulViewStack.addEventListener(ColorfulViewStack.BLUE_VIEW_CREATED, onBlueViewCreated);
            colorfulViewStack.addEventListener(ColorfulViewStack.RED_VIEW_CREATED, onRedViewCreated);
            colorfulViewStack.addEventListener(ColorfulViewStack.GREEN_VIEW_CREATED, onGreenViewCreated);
        }
        
        private function onBlueViewCreated(event:Event):void
        {
            trace('blue mediator registered');
            facade.registerMediator(new BlueViewMediator(colorfulViewStack.blueView));
        }
        
        private function onRedViewCreated(event:Event):void
        {
            trace('red mediator registered');
            facade.registerMediator(new RedViewMediator(colorfulViewStack.redView));
        }
        
        private function onGreenViewCreated(event:Event):void
        {
            trace('green mediator registered');
            facade.registerMediator(new GreenViewMediator(colorfulViewStack.greenView));
        }
        
        protected function get colorfulViewStack():ColorfulViewStack
        {
            return viewComponent as ColorfulViewStack;
        }
    }
}