/* PureMVC - Copyright(c) 2006-08 Futurescale, Inc., Some rights reserved. Your reuse is governed by the Creative Commons Attribution 3.0 United States License */ package org.puremvc.as3.interfaces { /** * The interface definition for a PureMVC Mediator. * *

* In PureMVC, IMediator implementors assume these responsibilities:

* *

* Additionally, IMediators typically: *

*

* When an IMediator is registered with the IView, * the IView will call the IMediator's * listNotificationInterests method. The IMediator will * return an Array of INotification names which * it wishes to be notified about.

* *

* The IView will then create an Observer object * encapsulating that IMediator's (handleNotification) method * and register it as an Observer for each INotification name returned by * listNotificationInterests.

* *

* A concrete IMediator implementor usually looks something like this:

* * * import org.puremvc.as3.patterns.mediator.~~; * import org.puremvc.as3.patterns.observer.~~; * import org.puremvc.as3.core.view.~~; * * import com.me.myapp.model.~~; * import com.me.myapp.view.~~; * import com.me.myapp.controller.~~; * * import mx.controls.ComboBox; * import mx.events.ListEvent; * * public class MyMediator extends Mediator implements IMediator { * * public function MyComboMediator( viewComponent:Object ) { * super( viewComponent ); * combo.addEventListener( Event.CHANGE, onChange ); * } * * override public function listNotificationInterests():Array { * return [ MyFacade.SET_SELECTION, * MyFacade.SET_DATAPROVIDER ]; * } * * override public function handleNotification( notification:INotification ):void { * switch ( notification.getName() ) { * case MyFacade.SET_SELECTION: * setSelection(notification); * break; * case MyFacade.SET_DATAPROVIDER: * setDataProvider(notification); * break; * } * } * * // Set the data provider of the combo box * protected function setDataProvider( notification:INotification ):void { * combo.dataProvider = notification.getBody() as Array; * } * * // Invoked when the combo box dispatches a change event, we send a * // notification with the * protected function onChange(event:ListEvent):void { * sendNotification( MyFacade.MYCOMBO_CHANGED, this ); * } * * // A private getter for accessing the view object by class * protected function get combo():ComboBox { * return view as ComboBox; * } * * } * * * @see org.puremvc.as3.interfaces.INotification INotification */ public interface IMediator { /** * Get the IMediator instance name * * @return the IMediator instance name */ function getMediatorName():String; /** * Get the IMediator's view component. * * @return Object the view component */ function getViewComponent():Object; /** * Set the IMediator's view component. * * @param Object the view component */ function setViewComponent( viewComponent:Object ):void; /** * List INotification interests. * * @return an Array of the INotification names this IMediator has an interest in. */ function listNotificationInterests( ):Array; /** * Handle an INotification. * * @param notification the INotification to be handled */ function handleNotification( notification:INotification ):void; /** * Called by the View when the Mediator is registered */ function onRegister( ):void; /** * Called by the View when the Mediator is removed */ function onRemove( ):void; } }