|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectde.jsystems.framework.common.action.ActionManager
Am ActionManager werden alle Actions fuer die Views eines Controllers
registriert. Nicht mehr der Controller ist der Listener fuer alles,
sondern fuer jede gewuenschte Aktion steht eine Klasse zur Verfuegung.
Das erhoeht zwar etwas die Anzahl zu schreibender Klassen, vermindert
aber die Groesse der einzelnen Source-Dateien und erhoeht die
Wiederverwendbarkeit der Implementierungen. Die entsprechenden
Actionklassen werden direkt in den Controls hinterlegt. Dazu implementieren
die einzelnen Klassen aus dem Package de.jsystems.framework.controls
verschiedene Interfaces, die Auskunft ueber die unterstuetzten Events der
Controls geben. Diese Interfaces geben auch die Methoden zum setzen und
auslesen des Namens der zugehoerigen Actionklasse vor. Dabei werden diese
Klassen vom ActionManager erzeugt.
Zu beachten ist, das die Typen der fuer ein Event hinterlegten Action-Klassen
selbst auch vom richtigen Typ sind, da sonst die entsprechenden Listener
nicht gesetzt werden koennen.
Eine Klasse wird nur genau einmal pro ActionManager erzeugt. Somit kann dann
ein und dieselbe Action zum Beispiel mit einem Menuepunkt, einem Button der Toolbar
und gleichzeitig auch mit einem Button aus der Oberflaeche verbunden werden. Alle
drei Controls wuerden nun beim Anklicken die gleiche Aktion ausfuehren. Ueber
den ActionManager koennen auch alle mit der Action verbundenen Controls deaktiviert
werden, sofern das Objekt, dass das Interface
IActionInterface
implementiert, ueber eine Methode setEnabled(boolean)
verfuegt,
mit der es sich inaktiv schalten laesst. Objekte vom Typ
JComponent
haben diese Methode immer. Und das
sind normalerweise auch die Art Controls, denen man eine Action hinzufuegt.
Ein Objekt vom Typ ActionManager befindet sich in jedem Controller. Ueber die
Methode Controller.registerViewActionControls(BusinessView)
werden dann alle Controls der BusinessView ausgelesen, die das Interface
IActionInterface
implementieren. Sofern deren getActionClassFor
-Methoden einen String
zurueckgeben, der nicht leer ist, wird versucht, diese Klasse zu erzeugen und
mit dem Control zu verbinden.
Ueber den Namen der Actionklasse kann auch gezielt eine Action abgeschaltet werden, wenn das noetig sein sollte.
Die erzeugten Actions haben als Umgebung immer die View, auf der sie sich befinden sowie den zugehoerigen Controller. Zu diesem Controller gehoert auch der ActionManager, bei dem die Action registriert wurde.
Falls beim Ausfuehren der Action eine Exception auftritt, so wird diese in der Exception
gespeichert. Zusaetzlich findet auch ein Eintrag in der MessageList des zugehoerigen
Controllers statt. Der Controller wird dann ueber die Methode
Controller.exceptionInAction(AbstractAction, Exception)
ueber die Exception informiert sowie ueber die Action, in der der Fehler aufgetreten ist.
Constructor Summary | |
ActionManager(Controller controller)
Erzeugt einen neuen ActionManager. |
Method Summary | |
AbstractAction |
addAction(String name,
IActionInterface actionControl)
Registriert die uebergebene Action fuer das uebergebene Control. |
AbstractAction |
addAction(String name,
IActionInterface actionControl,
BusinessView view)
Fuegt dem ActionManager eine neue Action hinzu. |
void |
disableAction(String name)
Deaktiviert die Action. |
void |
enableAction(String name)
Aktiviert die Action. |
void |
removeAction(String name)
Loescht die uebergebene Action aus den internen Listen des ActionManagers. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
public ActionManager(Controller controller)
controller
- Der Controller, dem dieser ActionManager gehoert.Method Detail |
public AbstractAction addAction(String name, IActionInterface actionControl, BusinessView view) throws CreateActionException
AbstractAction
sein.
Falls die Action gerade deaktiviert ist wird das hier uebergebene
Control auch deaktiviert.
Wenn auf verschiedenen Views Controls mit der gleichen Action versehen werden,
so wird diese Action trotzdem mehrmals erzeugt, da die Actions auch immer mit
der View initialisiert werden, zu der das Control gehoert.
name
- Der Name der zu erzeugenden Action.actionControl
- Das Control, das diese Action antriggert.view
- Die View zu der das Control gehoert.
CreateActionException
- wen beim erzeugen der Action ein Fehler auftritt.public AbstractAction addAction(String name, IActionInterface actionControl) throws CreateActionException
name
- Der vollqualifizierte Klassenname der Action.actionControl
- Das Control bei dem die Action registriert werden soll.
CreateActionException
- wenn beim erzeugen der Action ein Fehler auftritt.public void enableAction(String name)
setEnabled(true)
aufgerufen, sofern
die Controls ueber eine solche Methode verfuegen. Falls der uebergebene
Name NULL oder leer ist oder es unter diesem Namen keine Action
gibt, passiert nichts.
Ueberprueft werden sowohl die Actions, die ohne View registriert wurden als
auch alle Actions die den gleichen Namen haben wie der uebergebene, egal zu
welcher View die Action gehoert. Sobald die Methode aufgerufen wurde werden
die ausgelösten Events wieder an die entsprechenden doXXX-Methoden
weitergeleitet.
name
- Der Name der zu aktivierenden Action.public void disableAction(String name)
setEnabled(false)
aufgerufen, sofern
die Controls ueber eine solche Methode verfuegen. Falls der uebergebene
Name NULL oder leer ist oder es unter diesem Namen keine Action
gibt, passiert nichts.
Ueberprueft werden sowohl die Actions, die ohne View registriert wurden als
auch alle Actions die den gleichen Namen haben wie der uebergebene, egal zu
welcher View die Action gehoert. Sobald diese Methode aufgerufen wurde ist
die Eventverarbeitung in den Actions unterbrochen. Die ausgelösten Events
werden nicht mehr an die doXXX-Methoden weitergeleitet.
name
- Der Name der zu deaktivierenden Action.public void removeAction(String name)
name
- Der vollqualifizierte Klassennmae der Action.
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |