Как добавить элемент подменю в элемент контекстного меню обозревателя пакета Eclipse с помощью org.eclipse.ui.menus?

Я пытаюсь добавить элемент подменю в элемент из контекстного меню Проводника пакетов Eclipse.

Запись в меню уже определена через org.eclipse.ui.popupMenus в другом плагине, а не в том, в котором я работаю. (Этот плагин добавлен в список зависимостей моего плагина). Есть также элементы, добавленные в его подменю, но также используя org.eclipse.ui.popupMenus, и я пытаюсь сделать это через org.eclipse.ui.menus.

Для начала я сделал следующее:

  • Я добавил расширения org.eclipse.ui.commands и org.eclipse.ui.menus.
  • Я определил команду, соответственно menuContribution, как это:

enter image description here

Это добавляет элемент в любом контекстном меню... Поэтому мне пришлось бы заменить "org.eclipse.ui.popup.any? после = добавления" из locationURI с идентификатором подменю, в котором я хочу, чтобы мой элемент появлялся в.

Моя проблема: как определить правильное местоположениеURI? Я использовал шпион меню (ALT + SHIFT + F2) и проверил подменю, в которое хочу внести вклад, и получил следующий URI:

menu: YYY? after = ZZZ, где:

YYY - это идентификатор меню, которое уже определено и к которому я хочу добавить элемент подменю ZZZ - это идентификатор действия из подменю, на который я нажал (используя шпиона)

Я попробовал следующее, но элемент подменю не отображается:

  • меню: [? После = дополнения] YYY
  • всплывающее окно: [? После = добавления] YYY

Пожалуйста, помогите:)

Ответ 1

Мне удалось заставить его работать, указав новый вклад в меню и меню с тем же идентификатором и меткой, что и уже определенное меню. Окончательное решение выглядит следующим образом:

<extension point="org.eclipse.ui.menus">
  <menuContribution
        locationURI="popup:org.eclipse.ui.navigator.ProjectExplorer#PopupMenu?after=additions">
     <menu
           id="YYY"
           label="%YYYs_label">
     </menu>
  </menuContribution>
  <menuContribution
        locationURI="popup:YYY?after=additions">
     <command
           commandId="example.MyCommandHandlerID"
           icon="icons/somePhoto.gif"
           label="MyLabel"
           style="push">
     </command>
  </menuContribution>
</extension>