org.eclipse.ui.popupMenus

Utökningspunkten org.eclipse.ui.popupMenus gör det möjligt för ett insticksprogram att bidra till snabbmenyerna i andra vyer och redigerare.

Du kan bidra med en åtgärd till en viss snabbmeny via dess id (viewerContribution) eller genom att associera det med en viss objekttyp (objectContribution). 

Readme-verktyget definierar båda. Låt oss ta en titt på objektbidraget först.  

<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.png"
	      menubarPath="additions"
	       helpContextId="org.eclipse.ui.examples.readmetool.open_browser_action_context"
	       class="org.eclipse.ui.examples.readmetool.PopupMenuActionDelegate"	
           definitionId="org.eclipse.ui.examples.readmetool.action1"
	       enablesFor="1">
	   </action>
	 </objectContribution>
 	 ...

Objektbidrag

Åtgärden "Show Readme Action" bidras med för objektklassenIFile. Detta betyder att alla vyer som innehållerIFile-objekt visar bidraget om IFile-objekt väljs. Vi ser att urvalskriteriet begränsas ytterligare med ett namnfilter (nameFilter="*.readme") och för enstaka urval (enablesFor="1"). Som vi diskuterat tidigare kör registreringen av den här menyn inte någon kod från vårt insticksprogram förrän menyalternativet verkligen väljs.

När det här menyalternativet väljs kör arbetsmiljön den angivna klassen.  Eftersom snabbmenyn är deklarerad som ett objectContribution, måste den tillhandahållna klassen implementera IObjectActionDelegate

Åtgärden implementeras i PopupMenuActionDelegate.  

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

Vi kan se snabbmenybidraget när vi väljer en readme-fil från resursnavigatorn.

Visningsprogrambidrag

Ett visningsprogrambidrag används till att bidra till en viss vys eller redigerares snabbmeny via dess id. Här är readme-verktygets visningsprogrambidrag:

      ...
      <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.png"
	      menubarPath="additions"
	       helpContextId="org.eclipse.ui.examples.readmetool.open_browser_action_context"
           definitionId="org.eclipse.ui.examples.readmetool.action1"
	       class="org.eclipse.ui.examples.readmetool.ViewActionDelegate">	
	   </action>
       </viewerContribution>
</extension>
Obs!  Namnet viewerContribution är något missvisande eftersom det inte gäller för JFace-visningsprogram. Ett bättre namn skulle vara popupMenuContribution.

När utökningen är ett viewerContribution, måste den tillhandahållna klassen implementera gränssnittet IEditorActionDelegate eller IViewActionDelegate beroende på huruvida åtgärden bidras till en redigerares eller vys snabbmeny. 

TargetID anger den vy vars snabbmeny ska ändras.  I det här fallet lägger vi till en åtgärd till en av readme-verktygets vyer, dispositionsvisningsfunktionen.  Själva åtgärder liknar andra som vi sett.  Vi anger id, definitionId, label och icon för åtgärden och path i snabbmenyn för vårt bidrag.   Åtgärden visas bara på snabbmenyn för readme-verktygets dispositionsvy.

Obs! Med definitionId kan åtgärden länkas till ett kommando som skapats av utökningen org.eclipse.ui.commands som kan användas för nyckelbidningar. Mer information finns i avsnittet om kommandon.

De gränssnitt som krävs för att bidra med ett viewerContribution till utökningen popupMenus är desamma som de som krävs av utökningspunkterna viewActions och editorActions. Om du vill bidra med samma åtgärd till snabbmenyn och den lokala menyn i en vy eller redigerare, kan du använda samma klass för båda utökningarna.