3.12.1. Die Schnittstelle IAction

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:

Action Description

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();
Enabled State

Die folgende Methode liefert den enabled State. Ein Action, welche nicht enabled ist, kann nicht ausgeführt werden und wird ausgegraut dargestellt.

    boolean isEnabled();
Execute

Die folgende Methode wird aufgerufen, wenn die Action ausgeführt werden soll:

    void execute(IExecutionContext executionContext) throws Exception;
Exception Handler

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.

Change Observable

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.



[14] Service Provider Interface


Siehe auch PDF Version dieses Dokuments, Jowidgets API Spezifikation