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> ...
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.
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.