Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.puremvc.java.core
Class Controller

    java.lang.Object
      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:

- Remembering which `ICommand`s are intended to handle which `INotifications`.
- Registering itself as an `IObserver` with the `View` for each `INotification` that it has an `ICommand` mapping for.
- Creating a new instance of the proper `ICommand` to handle a given `INotification` when notified by the `View`.
- Calling the `ICommand`'s `execute` method, passing in the `INotification`.

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 `INotification`s 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`.

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD