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.
È possibile contribuire con un'azione a un menu di scelta rapida specifico mediante il relativo id (viewerContribution) o con un'azione per un tipo di oggetto (objectContribution).
Lo strumento readme definisce un contributo objectContribution. Il tag ha il seguente aspetto:
<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="Show Readme Action"
icon="icons/basic/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>
</extension>
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.
L'altro tipo di contributo a menu di scelta rapida è denominato contributo viewerContribution.
Nota il nome viewerContribution è in qualche modo fuorviante poiché non ha alcuna attinenza con i visualizzatori di JFace. Un nome più indicato sarebbe popupMenuContribution.
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. Il seguente tag mostra come una specifica azione potrebbe venire registrata da un plug-in nel menu di scelta rapida relativo all'elenco delle attività del workbench.
<extension point="org.eclipse.ui.popupMenus">
<viewerContribution
id="com.example.C2"
targetID="org.eclipse.ui.views.TaskList">
<action id="com.example.showExample"
label="&Show Example"
menubarPath="additions"
icon="icons/showExample.gif"
helpContextId="com.example.show_action_context"
class="com.example.actions.ExampleShowActionDelegate">
</action>
</viewerContribution>
</extension>
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.
Nell'esempio qui illustrato, è specificato l'id del menu di scelta rapida e il percorso all'interno del menu di scelta rapida del contributo.
Nota: le interfacce necessarie per un contributo viewerContribution al punto di estensione popupMenus sono uguali a quelle richieste dai punti di estensione viewActions e editorActions. Se si desidera contribuire con la stessa azione al menu di scelta rapida e al menu locale di una visualizzazione o di un editor, è possibile utilizzare la stessa classe per entrambe le estensioni.