Удаление всплывающего меню из другого плагина - PullRequest
2 голосов
/ 09 июня 2011

У меня возникли проблемы при попытке удалить некоторые вкладки плагина для точки вставки дополнений из моего контекстного меню. В большинстве случаев я использую действия, и это работает, так как большая часть вклада делается действиями. Но в некоторых других случаях вклады являются вкладками всплывающих меню, и я не могу отключить эти записи. Примером является вклад Source-> Format menu. Вклад осуществляется с помощью плагина org.eclipse.wst.sse.ui следующим образом:

  <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>

Я пытался использовать шаблоны org.eclipse.wst.sse.ui / sourceFormat и org.eclipse.wst.sse.ui /.*. Они оба работают в Eclipe HELIOS, но не работают в RAD (Rational Application Developer 8.0.2). Есть ли другой способ отключить этот вклад во всплывающем меню? Может ли эта проблема быть связана с версией Eclipse?

1 Ответ

0 голосов
/ 16 апреля 2014

Я столкнулся с похожей проблемой (например, в меню, связанной с Eclipse, щелкающими правой кнопкой мыши), которую я мог исправить, используя следующий код.

Решением было утверждение getSite().setSelectionProvider(viewer);, которое отсутствовало в моей заявке. Это привело к тому, что не связанные с просмотром записи выбора заползали и активировали пункты меню. Надеюсь, это поможет кому-то бороться с той же проблемой.

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);
}
...