Es ist eine allgemeine Funktionsweise von Plug-ins, dass bereits in der Workbench vorhandene Sichten durch ein bestimmtes Verhalten ergänzt werden. Dies erfolgt über den Erweiterungspunkt org.eclipse.ui.viewActions. An diesem Erweiterungspunkt können Plug-ins das lokale Pull-down-Menü und die lokale Symbolleiste einer Sicht durch Menüoptionen, Untermenüs und Symbolleistenelemente ergänzen.
Sie haben vielleicht bereits ein Element in der lokalen Symbolleiste der Sicht "Navigator" bemerkt, das immer dann aktiviert wird, wenn eine Readme-Datei ausgewählt ist. Dieses Element wird auch im lokalen Pull-down-Menü der Sicht angezeigt. Die entsprechenden Aktionen werden aufgenommen, weil das Plug-in des Tools für Readme-Dateien sie unter Verwendung der Erweiterung viewActions ergänzt.
Die entsprechende Ergänzung in der Datei plugin.xml ist im Folgenden dargestellt:
<extension
point = "org.eclipse.ui.viewActions">
<viewContribution
id="org.eclipse.ui.examples.readmetool.vc1"
targetID="org.eclipse.ui.views.ResourceNavigator">
<action id="org.eclipse.ui.examples.readmetool.va1"
label="&Readme View Extension"
menubarPath="additions"
toolbarPath="additions"
icon="icons/basic/obj16/editor.gif"
tooltip="Run Readme View Extension"
helpContextId="org.eclipse.ui.examples.readmetool.view_action_context"
class="org.eclipse.ui.examples.readmetool.ViewActionDelegate"
enablesFor="1">
<selection class="org.eclipse.core.resources.IFile" name="*.readme"/>
</action>
</viewContribution>
</extension>
Es wird eine Sichtergänzung mit einer eindeutigen ID angegeben. Die Sicht, der die Aktion hinzugefügt wird, wird mit dem Parameter targetID angegeben. Die Ergänzung wird für das Menü der Sicht "Navigator" definiert. Die Bezeichnung (Parameter "label") wird zusammen mit den Positionen für die neue Aktion in der Menüleiste und der Symbolleiste angegeben. (Eine umfassende Erläuterung der Positionen in Menü- und Symbolleisten finden Sie unter Pfade für Menüs und Symbolleisten).
Außerdem werden die Bedingungen definiert, unter denen die Aktion aktiviert sein soll. Sie können feststellen, dass diese Aktion aktiviert wird, wenn 1 Objekt des Typs IFile ausgewählt ist, dessen Name in der Dateierweiterung die Angabe .readme enthält. Genau dies passiert, wenn Sie in der Ressourcensicht "Navigator" mit der Maus klicken.
Es werden lediglich die Informationen in der Datei plugin.xml benötigt, um die entsprechenden Menüs und Symbolleisten zu füllen. Der Plug-in-Code wird erst dann ausgeführt, wenn die Aktion tatsächlich im Menü oder der Symbolleiste ausgewählt wird. Die Implementierungsklasse, die in der Datei plugin.xml angegeben ist, muss die Schnittstelle IViewActionDelegate implementieren.
Im vorliegenden Beispiel stellt das Plug-in für Readme-Dateien die Klasse ViewActionDelegate zur Verfügung, um die Aktion zu implementieren. Wenn Sie sich diese Klasse genauer ansehen, werden Sie feststellen, dass sie Methoden für das Verarbeiten von Auswahländerungen, das Aufrufen der Aktion und das Abrufen der Sicht, für die sie erstellt wurde, enthält.
Die eigentliche Aktion startet lediglich einen Dialog, der die Ausführung der Sichtaktion angibt.
public void run(org.eclipse.jface.action.IAction action) {
MessageDialog.openInformation(view.getSite().getShell(),
"Readme
Editor",
"View Action
executed");
}
Obwohl es sich hier um eine einfache Aktion handelt, kann sie jederzeit durch die Verwendung von Auswahlmöglichkeiten und funktionaleren Dialogen sinnvoll ergänzt werden.