Sie haben bereits erfahren, wie Editoren eigene Aktionen zu den Workbench-Menüs und der Symbolleiste hinzufügen können, wenn sie aktiv sind. Über den Erweiterungspunkt org.eclipse.ui.editorActions kann ein Plug-in Elemente zu den Menüs und der Symbolleiste der Workbench hinzufügen, wenn der Editor eines anderen Plug-ins aktiviert wird.
Im Beispiel für Readme-Dateien verwendet das Plug-in den Erweiterungspunkt editorActions, um das durch den Editor für Readme-Dateien bereitgestellte Menü durch zusätzliche Aktionen zu ergänzen. Die Definition der Datei plugin.xml ist Ihnen mittlerweile vertraut.
<extension
point = "org.eclipse.ui.editorActions">
<editorContribution
id="org.eclipse.ui.examples.readmetool.ec1"
targetID="org.eclipse.ui.examples.readmetool.ReadmeEditor">
<action id="org.eclipse.ui.examples.readmetool.ea1"
label="&Readme Editor Extension"
toolbarPath="ReadmeEditor"
icon="icons/basic/obj16/editor.gif"
tooltip="Run Readme Editor Extension"
class="org.eclipse.ui.examples.readmetool.EditorActionDelegate"
/>
</editorContribution>
</extension>
Ähnlich wie die Aktion für eine Sicht muss die Erweiterung den Parameter targetID (Ziel-ID) für den Editor angeben, der durch die Aktionen ergänzt werden soll. Die eigentliche Aktion hat große Ähnlichkeit mit der Aktion für eine Sicht (Parameter id, label und toolbarPath). Es gilt jedoch die Ausnahme, dass die angegebene Klasse die Schnittstelle IEditorActionDelegate implementieren muss.
Bitte beachten Sie, dass in dieser Befehlsdatei kein Pfad für die Menüleiste angegeben ist. Dies bedeutet, dass die Aktion in der Symbolleiste der Workbench angezeigt wird, wenn der Editor aktiv ist, aber nicht in der Menüleiste der Workbench. (Eine Erläuterung zu Pfaden für Symbolleisten und Menüs finden Sie unter Pfade für Menüs und Symbolleisten.)
Wenn der Editor aktiv ist, wird die Editoraktion in der Symbolleiste neben den Aktionen angezeigt, die durch den Editor selbst hinzugefügt wurden.
Das Tool für Readme-Dateien stellt die Klasse EditorActionDelegate zur Verfügung, um die Aktion zu implementieren. Dies entspricht im Wesentlichen der bereits erläuterten Delegierung von Sichtaktionen.
public void run(IAction action) {
MessageDialog.openInformation(editor.getSite().getShell(),
"Readme Editor",
"Editor Action executed");
}