org.eclipse.ui.popupMenus

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="&amp;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.