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

cat*_*ina 10 eclipse plugins contextmenu popup 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:

在此输入图像描述

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

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

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

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

我试过以下,但子菜单项没有出现:

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

请帮忙 :)

cat*_*ina 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>
Run Code Online (Sandbox Code Playgroud)

  • 这是唯一的解决方法.`org.eclipse.ui.menus`贡献在任何遗留动作扩展之前应用,例如`org.eclipse.ui.actionSets`或`org.eclipse.ui.popupMenus`. (2认同)