org.puremvc.java.core
Class Controller

java.lang.Object
  extended by org.puremvc.java.core.Controller
All Implemented Interfaces:
IController

public class Controller
extends java.lang.Object
implements IController

A Singleton IController implementation.

In PureMVC, the Controller class follows the 'Command and Controller' strategy, and assumes these responsibilities:

Your application must register ICommands with the Controller.

The simplest way is to subclass Facade, and use its initializeController method to add your registrations.

See Also:
View, Observer, Notification, SimpleCommand, MacroCommand

Field Summary
protected  java.util.Map<java.lang.String,ICommand> commandMap
          Mapping of Notification names to Command Class references
protected static Controller instance
          Reference to the singleton instance
protected  View view
          Local reference to View
 
Constructor Summary
protected Controller()
          Constructor.
 
Method Summary
 void executeCommand(INotification note)
          If an ICommand has previously been registered to handle a the given INotification, then it is executed.
static Controller getInstance()
          Controller Singleton Factory method.
 boolean hasCommand(java.lang.String notificationName)
          Check if a Command is registered for a given Notification
protected  void initializeController()
          Initialize the Singleton Controller instance.
 void registerCommand(java.lang.String notificationName, ICommand command)
          Register a particular ICommand class as the handler for a particular INotification.
 void removeCommand(java.lang.String notificationName)
          Remove a previously registered ICommand to INotification mapping.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

instance

protected static Controller instance
Reference to the singleton instance


commandMap

protected java.util.Map<java.lang.String,ICommand> commandMap
Mapping of Notification names to Command Class references


view

protected View view
Local reference to View

Constructor Detail

Controller

protected Controller()
Constructor.

This IController implementation is a Singleton, so you should not call the constructor directly, but instead call the static Singleton Factory method Controller.getInstance()

Method Detail

initializeController

protected void initializeController()
Initialize the Singleton Controller instance.

Called automatically by the constructor.

Note that if you are using a subclass of View in your application, you should also subclass Controller and override the initializeController method in the following way:

// ensure that the Controller is talking to my IView implementation override public function initializeController( ) : void { view = MyView.getInstance(); }


getInstance

public static Controller getInstance()
Controller Singleton Factory method.

Returns:
the Singleton instance of Controller

executeCommand

public void executeCommand(INotification note)
If an ICommand has previously been registered to handle a the given INotification, then it is executed.

Specified by:
executeCommand in interface IController
Parameters:
note - The notification to send associated with the command to call.

registerCommand

public void registerCommand(java.lang.String notificationName,
                            ICommand command)
Register a particular ICommand class as the handler for a particular INotification.

If an ICommand has already been registered to handle INotifications with this name, it is no longer used, the new ICommand is used instead.

The Observer for the new ICommand is only created if this the first time an ICommand has been regisered for this Notification name.

Specified by:
registerCommand in interface IController
Parameters:
notificationName - the name of the INotification
command - an instance of ICommand

removeCommand

public void removeCommand(java.lang.String notificationName)
Remove a previously registered ICommand to INotification mapping.

Specified by:
removeCommand in interface IController
Parameters:
notificationName - the name of the INotification to remove the ICommand mapping for

hasCommand

public boolean hasCommand(java.lang.String notificationName)
Check if a Command is registered for a given Notification

Specified by:
hasCommand in interface IController
Parameters:
notificationName - The name of the command to check for existance.
Returns:
whether a Command is currently registered for the given notificationName.