Il punto di estensione org.eclipse.ui.popupMenus consente a un plug-in di contribuire ai menu di scelta rapida di altre visualizzazioni ed editor.
E possibile aggiungere un'azione a un menu di scelta rapida specifico mediante il relativo ID (viewerContribution) oppure mediante l'associazione con un particolare tipo di oggetto (objectContribution).
Lo strumento readme definisce entrambi. Verrà illustrato per primo il contributo all'oggetto.
<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> ...
L'azione "Mostra azione readme" è fornita per la classe oggetto IFile. Questo significa che tutte le visualizzazioni contenenti oggetti IFile mostrano il contributo quando gli oggetti IFile vengono selezionati. I criteri di selezione sono ulteriormente ristretti mediante un filtro del nome (nameFilter="*.readme") e dall'impostazione di singole selezioni (enablesFor="1"). Come è stato illustrato precedentemente, la registrazione di questo menu non esegue alcun codice dai plug-in finché la voce di menu non viene realmente selezionata.
Quando la voce viene selezionata, il workbench esegue la classe specificata. Poiché il menu di scelta rapida è dichiarato come un objectContribution, la classe fornita deve implementare IObjectActionDelegate.
L'azione viene implementata in PopupMenuActionDelegate.
public void run(IAction action) { MessageDialog.openInformation( this.part.getSite().getShell(), "Readme Example", "Popup Menu Action executed"); }
Il contributo del menu di scelta rapida è visibile selezionando un file readme dal navigator della risorsa.
Un contributo di un visualizzatore viene utilizzato per contribuire a un menu di scelta rapida di una determinata visualizzazione o editor mediante il relativo id. Di seguito è riportato il contributo del visualizzatore dello strumento readme:
... <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>
Nota il nome viewerContribution è in qualche modo fuorviante poiché non ha alcuna attinenza con i visualizzatori di JFace. Un nome più indicato sarebbe popupMenuContribution.
Se l'estensione è costituita da viewerContribution, la classe fornita deve implementare l'interfaccia IEditorActionDelegate o IViewActionDelegate, a seconda che l'azione contribuisca a un menu di scelta rapida di un editor o di una visualizzazione.
Il targetID specifica la visualizzazione di cui verrà modificato il menu di scelta rapida. In questo caso, si è aggiunta un'azione a una delle visualizzazioni dello strumento readme, la funzione della struttura del contenuto. Tale azione è simile ad altre precedentemente illustrate. Sono stati specificati l' ID, l'etichetta e l'icona dell'azione nonché il percorso all'interno del menu di scelta rapida per il contributo. L'azione verrà visualizzata solo nel menu di scelta rapida della visualizzazione della struttura del readme.