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="%PopupMenu.ResourceNav.label" menubarPath="additions" toolbarPath="additions" icon="icons/obj16/editor.gif" tooltip="%PopupMenu.ResourceNav.tooltip" 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ü des Ressourcennavigators definiert. Hierbei werden die Bezeichnung und die Positionen der neuen Aktion in der Menüleiste und der Symbolleiste angegeben. (Eine umfassende Erläuterung der Positionen von 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 eine Auswahl (enablesFor="1") des Typs IFile (class="org.eclipse.core.resources.IFile") vorgenommen wird, dessen Name in der Dateierweiterung die Angabe ".readme" (name="*.readme") enthält. Genau dies passiert, wenn Sie in der Sicht "Navigator" für eine Ressource mit der Maus klicken.
Die in der Datei plugin.xml enthaltenen Informationen reichen aus, um Elemente zu Menüs und Symbolleisten hinzuzufügen, da der Plug-in-Code erst dann ausgeführt wird, wenn die Aktion tatsächlich im Menü oder der Symbolleiste ausgewählt wird. Zur Bereitstellung der Funktionsweise der Aktion muss die in der Datei plugin.xml angegebene Implementierungsklasse 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 Speichern ihrer Sichten, das Verarbeiten von Auswahländerungen und das Aufrufen der Aktion umfasst. Nach dem Aufruf startet die Aktion selbst einen Dialog, in dem eine Ausführungsnachricht angezeigt wird.
public void run(org.eclipse.jface.action.IAction action) { MessageDialog.openInformation(view.getSite().getShell(), MessageUtil.getString("Readme_Editor"), MessageUtil.getString("View_Action_executed")); }
Obwohl es sich hier um eine einfache Aktion handelt, kann sie jederzeit durch die Verwendung von Auswahlmöglichkeiten und funktionalerer Dialoge sinnvoll ergänzt werden.