package com.mariusht.puremvcexample.view
{
    import com.mariusht.puremvcexample.ApplicationFacade;
    
    import org.puremvc.as3.interfaces.IMediator;
    import org.puremvc.as3.interfaces.INotification;
    import org.puremvc.as3.patterns.mediator.Mediator;

    public class ApplicationMediator extends Mediator implements IMediator
    {
        public static const NAME:String = 'ApplicationMediator';
        
        public function ApplicationMediator(viewComponent:PureMVCSliderApp)
        {
            super(NAME, viewComponent);
        }
        
        override public function listNotificationInterests():Array
        {
            return [
                        ApplicationFacade.SLIDER_CHANGE
                        ]
        }
        
        override public function handleNotification(notification:INotification):void
        {
            switch(notification.getName())
            {
                case ApplicationFacade.SLIDER_CHANGE:
                    app.valueLabel.text = Math.round(notification.getBody() as Number).toString();
                    break;
            }
        }
        
        override public function onRegister():void
        {
            facade.registerMediator(new SliderMediator(app.slider));
            facade.registerMediator(new DateFieldMediator(app.dateField));
        }
        
        protected function get app():PureMVCSliderApp
        {
            return viewComponent as PureMVCSliderApp;
        }
    }
}