org.eclipse.ui.popupMenus

Am Erweiterungspunkt org.eclipse.ui.popupMenus kann ein Plug-in Ergänzungen für die Kontextmenüs anderer Sichten und Editoren bereitstellen.

Eine Aktion für ein spezifisches Kontextmenü können Sie über ihre ID (Typ viewerContribution) angeben. Sie können eine Aktion aber auch einem bestimmten Objekttyp (Typ viewerContribution) zuordnen. 

Das Tool für Readme-Dateien definiert beide Einstellungen. Sehen Sie sich zuerst die Objektergänzung an.  

<extension point = "org.eclipse.ui.popupMenus">
     <objectContribution
        id="org.eclipse.ui.examples.readmetool"
        objectClass="org.eclipse.core.resources.IFile"
	    nameFilter="*.readme">
	    <action id="org.eclipse.ui.examples.readmetool.action1"
	       label="%PopupMenus.action"
	       icon="icons/ctool16/openbrwsr.gif"
	      menubarPath="additions"
	       helpContextId="org.eclipse.ui.examples.readmetool.open_browser_action_context"
	       class="org.eclipse.ui.examples.readmetool.PopupMenuActionDelegate"	
	       enablesFor="1">
	   </action>
	 </objectContribution>
 	 ...

Objektergänzung

Die Aktion "Aktion für Readme-Datei anzeigen" wird für die Objektklasse IFile hinzugefügt. Dies bedeutet, dass alle Sichten, die Objekte der Klasse IFile enthalten, die Ergänzung anzeigen, wenn Objekte IFile ausgewählt sind. Wie bereits beschrieben, werden die Auswahlkriterien durch einen Namensfilter (nameFilter="*.readme") und einen Filter für Einzelauswahl (enablesFor="1") weiter eingeschränkt. Wie bereits erläutert, führt die Registrierung dieses Menüs erst dann einen Code aus dem Plug-in aus, wenn die Menüoption tatsächlich ausgewählt wird.

Bei Auswahl der Menüoption führt die Workbench die angegebene Klasse aus. Da das Kontextmenü mit dem Typ objectContribution deklariert ist, muss die bereitgestellte Klasse IObjectActionDelegate implementieren. 

Die Aktion wird in PopupMenuActionDelegate implementiert.  

   public void run(IAction action) {
      MessageDialog.openInformation(
         this.part.getSite().getShell(),
         "Readme Example",
         "Popup Menu Action executed");
   }

Die Ergänzung des Kontextmenüs wird angezeigt, wenn in der Sicht "Navigator" eine Readme-Datei ausgewählt wird.

Ergänzung für Anzeigefunktion

Durch eine Ergänzung für Anzeigefunktionen (viewerContribution) wird das Kontextmenü einer spezifischen Sicht oder eines bestimmten Editors unter Verwendung der entsprechenden ID ergänzt. Im Folgenden ist die Ergänzung für Anzeigefunktionen des Tools für Readme-Dateien aufgeführt:

      ...
      <viewerContribution
        id="org.eclipse.ui.examples.readmetool2"
        targetID="org.eclipse.ui.examples.readmetool.outline">
	    <action id="org.eclipse.ui.examples.readmetool.action1"
	       label="%PopupMenus.action"
	       icon="icons/ctool16/openbrwsr.gif"
	      menubarPath="additions"
	       helpContextId="org.eclipse.ui.examples.readmetool.open_browser_action_context"
	       class="org.eclipse.ui.examples.readmetool.ViewActionDelegate">	
	   </action>
       </viewerContribution>
</extension>
Hinweis:  Der Name viewerContribution ist in gewisser Weise irreführend, denn er bezieht sich nicht auf JFace-Anzeigefunktionen. Der Name popupMenuContribution wäre unter Umständen eindeutiger.

Wenn die Erweiterung den Typ viewerContribution hat, muss die bereitgestellte Klasse die Schnittstelle IEditorActionDelegate oder IViewActionDelegate implementieren. Die Auswahl richtet sich danach, ob die Aktion im Kontextmenü eines Editors oder einer Sicht ergänzt wird. 

Der Parameter targetID gibt die Sicht an, deren Kontextmenü geändert werden soll.  In diesem Fall fügen wir eine Aktion zu einer der Sichten des Tools für Readme-Dateien (der Gliederungsfunktion) hinzu.  Die Aktion selbst ähnelt anderen Aktionen, die bereits erläutert wurden.  Wir geben die Parameter id, label und icon der Aktion an und definieren den Parameter path innerhalb des Kontextmenüs für die Ergänzungen.  Die Aktion wird nur im Kontextmenü der Sicht der Gliederungsfunktion für die Readme-Datei angezeigt.

Die Schnittstellen, die zum Hinzufügen von viewerContribution zum Erweiterungspunkt popupMenus benötigt werden, sind mit denen identisch, die für die Erweiterungspunkte viewActions und editorActions erforderlich sind. Wenn Sie dieselbe Aktion zum Kontextmenü und zum lokalen Menü einer Sicht oder eines Editors hinzufügen wollen, können Sie für beide Erweiterungen dieselbe Klasse verwenden.

Copyright IBM Corporation und Andere 2000, 2003.