Häufig werden für die Sichten und Editoren eines Plug-ins Aktionen implementiert, die semantische Ähnlichkeiten zu bereits vorhandenen Workbench-Aktionen aufweisen. Hierzu gehören z. B. die Aktionen zum Ausschneiden, Kopieren und Einfügen in die Zwischenablage, zur Anzeigenaktualisierung oder zum Festlegen der Eigenschaften. Das Kontextmenü für Sichten und Editoren kann relativ unübersichtlich werden, wenn in jeder Sicht und jedem Editor eigene Aktionen für diese Operationen definiert und diese in die entsprechenden Menüs eingebunden werden müssen.
Zur Lösung dieses Problems werden in der Workbench umlenkbare (oder globale) Aktionen definiert, die in jeder Sicht und jedem Editor verwendet werden können. Wurde eine Sicht bzw. ein Editor aktiviert, wird die entsprechende Steuerroutine ausgeführt, sobald ein Benutzer die zugehörige Aktion im Menü oder der Symbolleiste der Workbench auswählt. Hierdurch können Sichten und Editoren den im Workbench-Menü verfügbaren Raum für semantisch ähnliche Aktionen gemeinsam nutzen.
IWorkbenchActionConstants dokumentiert alle Workbench-Aktionen und markiert umlenkbare Aktionen als global. Im Folgenden ist die Definition der Aktion für die Eigenschaften (properties) aufgeführt.
public static final String PROPERTIES = "properties"; // Global action.
In der folgenden Tabelle werden die häufigsten umlenkbaren Aktionen aufgelistet, die in Sichten und Editoren implementiert werden:
Menü 'Datei' | Menü 'Bearbeiten' | Menü 'Navigieren' | Projektmenü | |
Sichten | Versetzen Umbenennen Aktualisieren Eigenschaften |
Gehe in Zu Ressource wechseln Mit Editor synchronisieren Zurück Vorwärts Nach oben Weiter Vorherige |
Öffnen Schließen Erstellen Erneut erstellen |
|
Editoren | Umkehren |
Suchen | ||
Sichten und Editoren | Ausschneiden Kopieren Einfügen Löschen Alles auswählen Rückgängig Wiederherstellen |
Umlenkbare Aktionen werden mit Hilfe von RetargetAction erstellt. Das folgende Snippet stammt aus WorkbenchActionBuilder.
propertiesAction = createGlobalAction(IWorkbenchActionConstants.PROPERTIES, "file", false);
Die Methode createGlobalAction zeigt die Erstellung von RetargetAction genau.
private RetargetAction createGlobalAction(String id, String actionDefPrefix, boolean labelRetarget) { RetargetAction action; if (labelRetarget) { action = new LabelRetargetAction(id, WorkbenchMessages.getString("Workbench." + id)); } else { action = new RetargetAction(id, WorkbenchMessages.getString("Workbench." + id)); } ... return action; }
Beim Erstellen einer umlenkbaren Aktion ordnet die Workbench die ID der Aktion und die Standardbezeichnung zu. Beachten Sie hierbei, dass es zwei verschiedene Stile von umlenkbaren Aktionen gibt. RetargetAction ermöglicht einer Sicht oder einem Editor einfach die erneute Implementierung einer Aktion. Mit LabelRetargetAction kann die Sicht bzw. der Editor außerdem die Bezeichnung der Aktion zurücksetzen. Dies ist nützlich, wenn Sie eine aussagekräftigere Menübezeichnung, z. B. Eingabe rückgängig machen an Stelle von Rückgängig machen, definieren wollen.
Nachdem nun erläutert wurde, wie umlenkbare Aktionen in der Workbench definiert werden, erfahren Sie als Nächstes, wie eine Sicht oder ein Editor eine Implementierung für eine umlenkbare Aktion bereitstellen kann. Hierzu müssen Sie eine Steuerroutine für eine globale Aktion definieren.