Как убрать вкладки из всплывающего меню в Eclipse RCP - PullRequest
6 голосов
/ 20 января 2011

Я работаю в приложении RCP и вижу, какие модели данных являются экземплярами IResources. Когда отображается всплывающее меню, я нахожу команды, добавленные другими плагинами, которые я хотел бы удалить.

Образец кода:

1 MenuManager menuManager = new MenuManager();
2 mm.setRemoveAllWhenShown(true);
3 Menu menu = menuManager.createContextMenu(this.treeViewer.getControl());  
4 this.treeViewer.getControl().setMenu(menu); 

5 getSite().registerContextMenu(menuManager, this.treeViewer);

Если я прокомментирую строку 5, контекстное меню не появится.

Можно ли использовать menu-contribut из plugin.xml и удалять вклады других плагинов?

Примечание: мое всплывающее меню носит декларативный характер и находится в plugin.xml.

Заранее спасибо

Ответы [ 3 ]

3 голосов
/ 20 января 2011

Возможный способ - использовать так называемые «крюки трансформатора Equinox», см. http://wiki.eclipse.org/Equinox_Transforms

Вы можете проверить комплекты с некоторыми примерами (см. Вики-страницу для получения дополнительной информации), я хорошо поработал с XSLT-преобразователем, чтобы манипулировать некоторыми файлами plugin.xml, прежде чем они добавят свои расширения в платформу Единственная проблема состоит в том, чтобы выяснить, какой пакет вносит раздражающую запись в контекстное меню, но вы можете использовать PluginSpy для определения «злодея»: -P.

HTH Tom

1 голос
/ 09 мая 2011

Вы также можете использовать действия для всего, что было добавлено через plugin.xml. Для objectContributions вы должны использовать форму "contributing.plugin.id/action.id". Вот пример, который применяется к мастеру, но тот же шаблон может быть применен к определенному действию:

<extension point="org.eclipse.ui.activities">
   <category id="z.ex.commands.category"
         name="ReadMe Cat"/>
   <activity id="z.ex.commands.activity"
         name="ReadMe Act"/>
   <activityPatternBinding activityId="z.ex.commands.activity"
         isEqualityPattern="true"
         pattern="org.eclipse.ui.examples.readmetool/org.eclipse.ui.examples.readmetool.wizards.new.file"/>
   <categoryActivityBinding activityId="z.ex.commands.activity"
         categoryId="z.ex.commands.category">
</extension>

Представление реестра плагинов можно использовать для поиска идентификаторов действий, хотя вам придется выполнить поиск.

0 голосов
/ 11 октября 2016

Контекстное меню всплывающего меню обеспечивает доступность и расширение элемента расширения.Если вы хотите скрыть структуру объекта для определенного класса, вы можете установить состояние объекта видимости следующим образом.

<visibility>
    <not>
      <objectClass
          name="{classname}">
      </objectClass>
    </not>
</visibility>
...