如何使用org.eclipse.ui.menus将子菜单项添加到Eclipse Package Explorer上下文菜单项?

时间:2012-09-27 09:12:00

标签: eclipse plugins popup contextmenu submenu

我正在尝试从Eclipse Package Explorer的上下文菜单中为项添加子菜单。

菜单条目已经通过另一个插件中的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

这会在任何上下文菜单中添加该项...所以我必须从locationURI替换“org.eclipse.ui.popup.any?after = additions”,并且我希望我的项目显示子菜单的id英寸

我的问题是:如何确定正确的locationURI? 我使用菜单间谍(ALT + SHIFT + F2)并检查了我想要贡献的子菜单,我收到了以下URI:

菜单:YYY?after = ZZZ,其中:

YYY是已经定义的菜单的ID,我想要添加子菜单项 ZZZ是子菜单中的动作的id,我点击了(使用间谍)

我尝试了以下操作,但未显示子菜单项:

  • 菜单:[?后=加法] YYY
  • 弹出:[?后=加法] YYY

请帮助:)

1 个答案:

答案 0 :(得分:11)

我设法通过定义一个新的菜单贡献和一个与已经定义的菜单具有相同id和标签的菜单来使其工作。最终解决方案如下所示:

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