Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用org.Eclipse.ui.menus向Eclipse Package Explorer上下文菜单项添加子菜单项?_Eclipse_Plugins_Popup_Contextmenu_Submenu - Fatal编程技术网

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

如何使用org.Eclipse.ui.menus向Eclipse Package Explorer上下文菜单项添加子菜单项?,eclipse,plugins,popup,contextmenu,submenu,Eclipse,Plugins,Popup,Contextmenu,Submenu,我正在尝试向Eclipse包资源管理器上下文菜单中的项目添加子菜单项 菜单项已经在另一个插件中通过org.eclipse.ui.popupMenus定义,而不是在我正在使用的插件中。(该插件被添加到我的插件的依赖项列表中)。在其子菜单中还添加了一些项目,但也使用org.eclipse.ui.popupmones,我正试图通过org.eclipse.ui.menus来实现这一点 首先,我做了以下工作: 我添加了org.eclipse.ui.commands和org.eclipse.ui.menu

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

菜单项已经在另一个插件中通过org.eclipse.ui.popupMenus定义,而不是在我正在使用的插件中。(该插件被添加到我的插件的依赖项列表中)。在其子菜单中还添加了一些项目,但也使用org.eclipse.ui.popupmones,我正试图通过org.eclipse.ui.menus来实现这一点

首先,我做了以下工作:

  • 我添加了org.eclipse.ui.commands和org.eclipse.ui.menus扩展
  • 我定义了一个命令,分别是一个menuContribution,如下所示:

这将在任何上下文菜单中添加该项。。。因此,我必须将locationURI中的“org.eclipse.ui.popup.any?after=additions”替换为我希望项目出现在其中的子菜单的id

我的问题是:如何确定正确的位置URI? 我使用了spy菜单(ALT+SHIFT+F2)并检查了我想参与的子菜单,收到了以下URI:

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

YYY是已定义的菜单的id,我要将子菜单项添加到该菜单 ZZZ是我单击(使用spy)的子菜单中操作的id

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

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

请帮助:)

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


您是否尝试过popup:yyy?after=ZZZ?是的,我也尝试过,但没有效果。但我刚刚设法使它起作用。我必须定义一个新的菜单贡献和一个与已经定义的菜单具有相同id和标签的菜单-YYY&YYY的标签,如下所示:使用这个,并将locationURI替换为:“popup:YYY?after=additions”,现在它可以工作了。我不知道这是否是正确的方法,但它是有效的……非常感谢您的兴趣和帮助:)非常欢迎您。我很高兴你成功了。顺便说一句,你可以自己添加一个答案并接受它,我想这是鼓励别人更容易知道答案,如果他们面临同样的问题这是唯一的解决办法
org.eclipse.ui.menus
贡献应用于任何遗留操作扩展之前,如
org.eclipse.ui.actionSets
org.eclipse.ui.popupmones
。包浏览器上下文菜单的URI是
popup:org.eclipse.jdt.ui.PackageExplorer?after=additions