Die Schnittstelle IAction liefert die
Methoden, welche jowidgets benötigt, um Aktionen anzuzeigen, zu
binden und auszuführen. Sie stellt somit in gewisser Weise die
SPI[14] für Aktionen dar. Wenn man
Command Actions
verwendet, muss man diese Schnittstelle nicht selbst
implementieren. Dennoch sollen die Methoden zum besseren
Verständnis kurz beschrieben werden:
Die folgenden Methoden liefern die beschreibenden Attribute der Action für die Anzeige und das Key Binding:
String getText();
String getToolTipText();
IImageConstant getIcon();
Character getMnemonic();
Accelerator getAccelerator();
Die folgende Methode liefert den enabled
State. Ein Action, welche nicht enabled
ist, kann nicht ausgeführt werden und wird
ausgegraut dargestellt.
boolean isEnabled();Die folgende Methode wird aufgerufen, wenn die Action ausgeführt werden soll:
void execute(IExecutionContext executionContext) throws Exception;
Eine IAction Implementierung kann einen
IExceptionHandler liefern:
IExceptionHandler getExceptionHandler();
Dieser wird verwendet, wenn bei der
execute() Methode eine Exception auftritt.
Wird null zurückgegeben, wird der
UncaughtExceptionHandler des aktuellen
Threads aufgerufen.
Wird eine Action mutable entworfen, was
bedeutet, dass sich die Attribute text,
tooltipText, icon oder
enabled State zur Laufzeit ändern können,
dann liefert die folgenden Methode ein
IActionObservable zurück, auf dem man sich
als Listener über Änderungen informieren kann:
IActionChangeObservable getActionChangeObservable();
Ist die Action immutable entworfen, kann
die Implementierung null zurückliefern. Die
Schnittstelle IActionObservable hat die
folgenden Methoden:
void addActionChangeListener(IActionChangeListener listener);
void removeActionChangeListener(IActionChangeListener listener);
Ein IActionChangeListener hat die folgenden
Methoden:
void textChanged();
void toolTipTextChanged();
void iconChanged();
void enabledChanged();Der Accelerator Key und Mnemonic Key sind somit immer immutable zu entwerfen. Nur die oben angegebenen Attribute können sich zur Laufzeit ändern.