10

我正在尝试从 Eclipse 包资源管理器的上下文菜单中向项目添加子菜单条目。

菜单条目已经通过 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[?after=additions]
  • 弹出窗口:YYY[?after=additions]

请帮忙 :)

4

1 回答 1

11

I managed to make it work by defining a new menu contribution and a menu having the same id and label as the menu already defined. The final solution looks like this:

<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>
于 2012-09-28T07:44:06.987 回答