org.eclipse.ui.popupMenus

Az org.eclipse.ui.popupMenus kiterjesztési pont segítségével a bedolgozó kiegészítheti más nézetek és szerkesztők előugró menüit.

Egy tevékenység az azonosítója (viewerContribution) alapján, vagy egy adott objektumtípushoz társítással (objectContribution) adható egy adott előugrómenühöz. 

A readme eszköz mindkettőt megadja. Tekintse meg először az objektum közreadást.  

<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"	
	       enablesFor="1">
	    </action>
	 </objectContribution>
 	 ...

Objektumközreadás

A "Show Readme Action" tevékenység közreadásra kerül az IFile objektumosztályhoz. Ez azt jelenti, hogy az IFile objektumokat tartalmazó nézet megjeleníti a közreadást, ha az IFile objektumok ki vannak választva. Látható, hogy a kijelölési feltételek a névszűrővel (nameFilter="*.readme") és az egyszeri választásokhoz (enablesFor="1") tovább vannak korlátozza. Ahogy korábban már említettük, a menü bejegyzése nem futtat kódot a bedolgozóból addig, amíg a menüpont valójában ki nincs választva.

Ha a menüpont ki van választva, akkor a munkaterület futtatja a megadott osztályt.  Mivel az előugró menü objectContribution elemként kerül megadásra, a biztosított osztálynak meg kell valósítania az IObjectActionDelegate elemet. 

Ez a tevékenység a PopupMenuActionDelegate elemben kerül megvalósításra.  

   public void run(IAction action) {
      MessageDialog.openInformation(
         this.part.getSite().getShell(),
         "Readme példa",
         "Előugró menü tevékenység végrehajtva");
   }

Az előugró menü kiegészítés megjelenik, ha az erőforrás-navigátorból kiválasztja a readme fájlt.

Megjelenítő-közreadás

A megjelenítő-közreadás az azonosító segítségével egy adott nézeten vagy a szerkesztő előugró menüjén ad közre. Az alábbiakban található egy readme eszköz megjelenítő-közreadás:

      ...
      <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"
	       class="org.eclipse.ui.examples.readmetool.ViewActionDelegate">	
	    </action>
       </viewerContribution>
</extension>
Megjegyzés:  A viewerContribution név félrevezető, mivel nem kapcsolódik a JFace megjelenítőkhöz. A popupMenuContribution jobb név lett volna.

Ha a kiterjesztés egy viewerContribution, akkor a biztosított osztálynak meg kell valósítania az IEditorActionDelegate vagy IViewActionDelegate felületet attól függően, hogy a tevékenység egy szerkesztő vagy nézet előugró menüjéhez kerül közreadásra. 

A targetID megadja a nézetet, amelynek előugró menüje megváltozik.  Ebben az esetben az egy tevékenységet adunk hozzá az egyik readme eszköz nézethez, a kiemelőhöz. A tevékenység maga a többihez hasonló, ahogy ezt már láthattuk. Megadjuk a tevékenység azonosítóját, címkéjét és ikonját és az előugró menün belüli elérési utat a közreadáshoz. A tevékenység csak a readme kiemelés nézet előugró menüjében jelenik meg.

A viewerContribution popupMenus kiterjesztési pontokhoz adásához szükséges felületek ugyanazok, mint a viewActions és editorActions kiterjesztési pontok által igényeltek. Ha ugyanazt a tevékenységet kívánja közreadni a nézet vagy szerkesztő előugró és helyi menüjéhez, akkor mindkét kiterjesztéshez használhatja ugyanazt az osztályt.