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" | Menü "Projekt" | |
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. Der folgende Codeausschnitt 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; }
Bei der Erstellung einer umlenkbaren Aktion weist die Workbench der Aktion eine ID und ein Standardbeschriftung zu. Beachten Sie, dass es zwei Arten von umlenkbaren Aktionen gibt. Über RetargetAction können Sichten oder Editoren eine Aktion einfach erneut implementieren. Über LabelRetargetAction können Sichten und Editoren auch die Beschriftung der Aktion zurücksetzen. Dies ist nützlich, um die Menübeschriftung etwas spezifischer zu formulieren. Beispielsweise könnte die Bezeichnung der Aktion Rückgängig in Tastatureingabe Rückgängig machen geändert werden.
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 globale Aktionen definieren.