Il punto di estensione org.eclipse.ui.popupMenus consente a un plug-in di contribuire ai menu di scelta rapida di altre viste ed editor.
È 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 viste 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 pannello di selezione risorse.
Un contributo di un visualizzatore viene utilizzato per contribuire a un menu di scelta rapida di una determinata vista 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 oppure IViewActionDelegate, a seconda che l'azione contribuisca a un menu di scelta rapida di un editor o di una vista.
targetID specifica la vista di cui verrà modificato il menu di scelta rapida. In questo caso, si è aggiunta un'azione a una delle viste dello strumento readme, la funzione della struttura del contenuto. Tale azione è simile ad altre precedentemente illustrate. Sono stati specificati id, label e icon dell'azione, nonché path all'interno del menu di scelta rapida per il contributo. L'azione verrà visualizzata solo nel menu di scelta rapida della vista della struttura del readme.