Die Schnittstelle ICommandAction
erweitert
die Schnittstelle
IAction
um den Aspekt von
Commands. Jowidgets
liefert dafür eine Defaultimplementierung, so dass die
Schnittstelle ICommandAction
normalerweise
nicht selbst implementiert wird, sondern nur die zugehörigen
Commands. Es folgt eine
Beschreibung der zusätzlich zu
IAction
vorhandenen Methoden:
Mit Hilfe der folgenden Methoden können
text
, tooltipText
und
icon
geändert werden.
void setText(String text); void setToolTipText(final String toolTipText); void setIcon(IImageConstant icon);
Mit der folgenden Methode kann der
gloable enabled
State
geändert werden:
void setEnabled(boolean enabled);
Wird ein
IEnabledChecker
verwendet, wird dieser nur ausgewertet, wenn der globale
enabled
State true
ist.
Mit Hilfe der folgenden Methoden kann der Command gesetzt und geändert werden:
void setCommand(ICommand command); void setCommand(ICommandExecutor executor); void setCommand(ICommandExecutor executor, IEnabledChecker enabledChecker); void setCommand(ICommandExecutor executor, IExceptionHandler exceptionHandler); void setCommand( ICommandExecutor executor, IEnabledChecker enabledChecker, IExceptionHandler exceptionHandler);
Die erste Methode verwendet dazu die
ICommand
Schnittstelle, die anderen Methoden erlauben das Setzen eines
Command mit Hilfe der einzelnen Aspekte (Executor,
EnabledChecker, ExceptionHandler). Dabei werden immer alle
Aspekte neu gesetzt (die nicht angegebenen werden Aspkete
werden zu null
). Ein Command kann explizit
auf null
gesetzt werden. Die Action wird
dadurch automatisch disabled
.
Die folgende Methode liefert das derzeit gesetzte Command:
ICommand getCommand();
Für alle Exceptions, welche nicht durch den Command behandelt wurden, kann ein Action ExceptionHandler wie folgt gesetzt werden:
void setActionExceptionHandler(IExceptionHandler exceptionHandler);
Um eine Implementierung der Schnittstelle ICommandAction zu
erhalten, kann ein IActionBuilder
verwendet
werden. Diesen erhält man u.A. von der Accessor Klasse
org.jowidgets.api.command.Action
mit Hilfe
der statischen Methode:
public static IActionBuilder builder() {...}
Die Schnittstelle IActionBuilder
hat die
folgenden Methoden:
IActionBuilder setText(String text); IActionBuilder setToolTipText(String toolTipText); IActionBuilder setIcon(IImageConstant icon); IActionBuilder setMnemonic(Character mnemonic); IActionBuilder setMnemonic(char mnemonic); IActionBuilder setAccelerator(Accelerator accelerator); IActionBuilder setAccelerator(char key, Modifier... modifier); IActionBuilder setAccelerator(VirtualKey virtualKey, Modifier... modifier); IActionBuilder setEnabled(boolean enabled); IActionBuilder setCommand(ICommand command); IActionBuilder setCommand(ICommandExecutor command); IActionBuilder setCommand(ICommandExecutor command, IEnabledChecker executableStateChecker); IActionBuilder setCommand(ICommandExecutor command, IExceptionHandler exceptionHandler); IActionBuilder setCommand( ICommandExecutor command, IEnabledChecker enabledChecker, IExceptionHandler exceptionHandler); IActionBuilder setActionExceptionHandler(IExceptionHandler exceptionHandler); ICommandAction build();
Die Parameter haben die gleiche Semantik wie die der
Schnittstelle ICommandAction
.
Das folgende Beispiel zeigt die Verwendung:
1 public final class SaveActionFactory { 2 3 private SaveActionFactory() {} 4 5 public static IAction create(final IDataModel dataModel) { 6 final IActionBuilder builder = Action.builder(); 7 8 builder.setText("Save"); 9 builder.setToolTipText("Saves the text"); 10 builder.setAccelerator(VirtualKey.S, Modifier.CTRL); 11 builder.setIcon(IconsSmall.DISK); 12 13 builder.setCommand(SaveCommandFactory.create(dataModel)); 14 15 return builder.build(); 16 } 17 }
Anmerkung: Im obigen
Beispiel wird bewusst eine IAction
und
keine ICommandAction
zurückgegeben. Dadurch
wird signalisiert, dass die Action nicht durch den Nutzer der
Methode nachträglich modifiziert werden soll.