2 votes

Suppression d'un menu contextuel apporté par un autre plugin

J'ai quelques problèmes en essayant de supprimer les contributions de certains plugins au point d'insertion des ajouts dans mon menu contextuel. Dans la plupart des cas, j'utilise des activités et cela fonctionne, car la plupart des contributions sont effectuées par des actions. Mais dans d'autres cas, les contributions sont des contributions de menus contextuels et je ne peux pas réussir à désactiver ces entrées. Un exemple est la contribution du menu Source->Format. La contribution est faite par le plugin org.eclipse.wst.sse.ui de la manière suivante :

  <menuContribution
       locationURI="popup:org.eclipse.ui.popup.any?after=additions">
    <menu
          id="sourceMenuId"
          label="%Source">
        <command
              commandId="org.eclipse.wst.sse.ui.format"
              id="sourceFormat"
              style="push">
           <!-- Check to make sure that the handler is enabled before making visible -->
            <visibleWhen checkEnabled="true" />
        </command>
    </menu>
 </menuContribution>

J'ai essayé avec les modèles org.eclipse.wst.sse.ui/sourceFormat et avec org.eclipse.wst.sse.ui/.*. Ils fonctionnent tous deux dans Eclipe HELIOS mais pas dans RAD (Rational Application Developer 8.0.2). Existe-t-il un autre moyen de désactiver cette contribution du menu popup ? Ce problème peut-il être lié à la version d'Eclipse ?

0voto

Imeron Points 338

J'ai rencontré un problème similaire (par exemple : les entrées du menu de clic droit liées à Eclipse apparaissant dans ma vue) que j'ai pu résoudre en utilisant le code suivant.

La solution était la déclaration getSite().setSelectionProvider(viewer); qui manquait dans ma demande. Ainsi, des entrées de sélection non liées à la vue s'insinuaient et activaient des entrées de menu. J'espère que cela aidera quelqu'un qui est confronté au même problème.

private void hookContextMenu() {
    MenuManager menuMgr = new MenuManager("#PopupMenu");  //$NON-NLS-1$
    ....

    Menu menu = menuMgr.createContextMenu(viewer.getControl());
    viewer.getControl().setMenu(menu);
    getSite().registerContextMenu(menuMgr, viewer);

    getSite().setSelectionProvider(viewer);
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X