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

Posted

技术标签:

【中文标题】如何使用 org.eclipse.ui.menus 向 Eclipse Package Explorer 上下文菜单项添加子菜单条目?【英文标题】:How to add a submenu entry to Eclipse Package Explorer context menu item using org.eclipse.ui.menus? 【发布时间】:2012-09-19 00:48:08 【问题描述】:

我正在尝试从 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] popup:YYY[?after=additions]

请帮忙:)

【问题讨论】:

你试过 popup:YYYY?after=ZZZ 吗? 是的,我也尝试过,但没有帮助。但我刚刚设法让它发挥作用。我必须定义一个新的菜单贡献和一个与已经定义的菜单具有相同 id 和标签的菜单 - YYY 和 YYY 的标签,如下所示: 有了这个,并将 locationURI 替换为:“popup:YYY?after=additions”现在它可以工作了。我不知道这是否是正确的做法,但它确实有效。 ...非常感谢您的关注和帮助我:) 不客气。我很高兴你成功了。顺便说一句,你可以自己添加一个答案并接受它,我想这是鼓励他们在遇到同样问题时让其他人更容易知道答案 【参考方案1】:

我设法通过定义一个新的菜单贡献和一个与已定义的菜单具有相同 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>

【讨论】:

这是唯一的解决方法。 org.eclipse.ui.menus 贡献在任何旧版操作扩展之前应用,例如 org.eclipse.ui.actionSetsorg.eclipse.ui.popupMenus Package Explorer 的上下文菜单的 URI 是 popup:org.eclipse.jdt.ui.PackageExplorer?after=additions

以上是关于如何使用 org.eclipse.ui.menus 向 Eclipse Package Explorer 上下文菜单项添加子菜单条目?的主要内容,如果未能解决你的问题,请参考以下文章

[精选] Mysql分表与分库如何拆分,如何设计,如何使用

如果加入条件,我该如何解决。如果使用字符串连接,我如何使用

如何使用本机反应创建登录以及如何验证会话

如何在自动布局中使用约束标识符以及如何使用标识符更改约束? [迅速]

如何使用 AngularJS 的 ng-model 创建一个数组以及如何使用 jquery 提交?

如何使用laravel保存所有行数据每个行名或相等