Über Aktionsklassen können Sie Benutzerbefehle unabhängig von deren Darstellung in der Benutzerschnittstelle definieren. Hierdurch können Sie die Darstellung einer Aktion in Ihrem Plug-in ganz flexibel ändern, ohne den eigentlichen Code ändern zu müssen, der den Befehl nach seiner Auswahl ausführt. Die Ergänzungsklassen werden verwendet, um die eigentlichen Benutzerschnittstellenelemente zu verwalten, die die Befehle darstellen. Für die Ergänzungsklassen nehmen Sie keine Programmierung vor, sondern diese werden in einigen Teilen der Workbench- und der JFace-API angezeigt.
Eine Aktion (IAction) ist ein Befehl, der durch den Endbenutzer ausgelöst werden kann. Aktionen sind in der Regel Schaltflächen, Menüoptionen und Elementen in Symbolleisten zugeordnet.
Obwohl Aktionen sich selbst nicht in die Benutzerschnittstelle stellen, verfügen sie über Eigenschaften (z. B. Text für die QuickInfo, Text für das Anzeigenobjekt sowie ein Image) die an der Benutzerschnittstelle orientiert sind. Hierdurch können andere Klassen Widgets für die Darstellung der Aktion erzeugen.
Wenn der Benutzer eine Aktion in der Benutzerschnittstelle auslöst, wird die Methode "run" der Aktion aufgerufen, um die eigentliche Arbeit zu übernehmen. Ein allgemeines Muster, das in der Methode "run" verwendet wird, ist die Abfrage der Workbench-Auswahl und die Bearbeitung der ausgewählten Objekte. Ein anderes gängiges Muster ist das Starten eines Assistenten oder Dialogs, sobald eine Aktion ausgewählt wird.
Die Schnittstelle IAction sollte nicht direkt implementiert werden. Stattdessen sollten Sie die Klasse Action als Unterklasse aufnehmen. Wenn Sie die Unterklassen dieser Klasse anzeigen und durchsuchen, werden Sie viele allgemeine Muster für Aktionen finden. Der folgende Code implementiert die Aktion "Info über". Dies ist eine der einfacheren Aktionen in der Workbench.
public void run() { new AboutDialog(workbenchWindow.getShell()).open(); }
Die Workbench-Schnittstellen IViewActionDelegate und IEditorActionDelegate wurden bereits behandelt. Diese Schnittstellen werden verwendet, wenn die Workbench durch Aktionen für Sichten oder Aktionen für Editoren ergänzt wird. Die Workbench-Aktionsdelegierungen werden mit einem Verweis auf die zugeordnete Sicht bzw. den zugeordneten Editor initialisiert. Ausgehend von dieser Information kann in einer Workbench-Seite oder einem Fenster navigiert sowie auf ausgewählte Werte oder andere Informationen zugegriffen werden, die zur Ausführung der Aktion erforderlich sind.
Eigene Aktionsklassen werden Sie wahrscheinlich immer dann implementieren, wenn Sie einen Befehl in einem Plug-in definieren wollen. Wenn Sie andere Sichten und Editoren durch Aktionen ergänzen wollen, implementieren Sie Aktionsdelegierungen.
Ein Ergänzungselement (IContributionItem) ist die Benutzerschnittstellenkomponente einer Aktion. Genauer gesagt ist es ein Element, mit dem eine gemeinsam benutzte Benutzerschnittstellenressource (z. B. ein Menü oder eine Symbolleiste) ergänzt wird.
Ergänzungselemente sind in der Lage, ein spezifisches SWT-Widget mit dem entsprechenden SWT-Element zu füllen, das die Ergänzung darstellt.
Wenn Sie die Workbench-Benutzerschnittstelle durch Aktionen ergänzen, müssen Sie sich nicht um die Erstellung von Ergänzungselementen kümmern. Dies wird automatisch ausgeführt, wenn die Workbench Benutzerschnittstellenelemente für die von Ihnen definierten Aktionen erstellt.
Ein Ergänzungsmanager (Schnittstelle IContributionManager) ist eine Objektgruppe von Ergänzungselementen, die in der Benutzerschnittstelle dargestellt werden. Sie können Ergänzungselemente unter Verwendung von benannten Ergänzungs-IDs hinzufügen und einfügen, um die Elemente in die gewünschte Reihenfolge zu bringen. Außerdem können Sie Elemente nach der ID suchen und einzelne Elemente entfernen.
Jede Implementierung der Schnittstelle IContributionManager ist in der Lage, ein spezifisches SWT-Widget mit seinen Elementen zu füllen. JFace stellt Ergänzungsmanager für Menüs (Schnittstelle IMenuManager), Symbolleisten (Schnittstelle IToolBarManager) und Statuszeilen (Schnittstelle IStatusLineManager) zur Verfügung.
Bei der Entwicklung von Plug-ins müssen Sie diese Schnittstellen nicht implementieren. Sie werden jedoch in den API-Methoden Verweise auf einige dieser Manager finden.