org.puremvc.java.core.controller
Class Controller

java.lang.Object
  extended by org.puremvc.java.core.controller.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.Hashtable commandMap
          Mapping of Notification names to Command Class references
protected static Controller instance
          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.
protected  void initializeController()
          Initialize the Singleton Controller instance.
 void registerCommand(java.lang.String notificationName, java.lang.Class commandClassRef)
          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
Singleton instance


commandMap

protected java.util.Hashtable 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()

Throws:
java.lang.Error - Error if Singleton instance has already been constructed
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 - an INotification

registerCommand

public void registerCommand(java.lang.String notificationName,
                            java.lang.Class commandClassRef)
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
commandClassRef - the Class of the 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