我正在开发一个eclipse插件,并尝试在Eclipse 3.7中扩展源菜单(mainMenubar / Source - 在java编辑器中编辑时可见)。
documentation表示依赖于org.eclipse.ui.menus
- 扩展点,因为旧的扩展点已弃用。对于我来说,获取可靠的locationURI是一个完全的秘密,但我终于设法找到了插件间谍的一些合理的URI(遵循建议here)。
因此,以下应该是plugin.xml的扩展代码段:
<extension
point="org.eclipse.ui.menus">
<menuContribution
locationURI="menu:org.eclipse.jdt.ui.source.menu">
<command
commandId="some.command.id"
label="Some label"
style="push">
</command>
</menuContribution>
</extension>
不幸的是,在为我的开发IDE运行插件时,没有出现任何命令,也没有错误消息。什么都没发生。当我将locationURI设置为“menu:help”时,新命令出现在帮助菜单中,所以问题似乎确实是locationURI。
答案 0 :(得分:3)
This thread reports在主要的源菜单中添加了一个条目:
<!-- main menu -->
<extension point="org.eclipse.ui.actionSets">
<actionSet label="Java Coding"
description="Action set containing coding related Java actions"
visible="true"
id="org.eclipse.jdt.ui.CodingActionSet2">
<menu label="&Source"
path="edit"
id="org.eclipse.jdt.ui.source.menu">
</menu>
<action class="org.gsoc.eclipse.tostringgenerator.actions.GenerateToStringActionDelegate "
id="org.gsoc.eclipse.tostringgenerator.action"
label="Generate to&String()..."
menubarPath="org.eclipse.jdt.ui.source.menu/generateGroup">
</action>
</actionSet>
</extension>
答案 1 :(得分:3)
我遇到了同样的问题。我终于想通过使用(推荐的)扩展点org.eclipse.ui.menus
扩展Source菜单是不可能的。
原因是在处理actionSet
- 扩展后创建了旧样式org.eclipse.ui.menus
(如源菜单)中定义的菜单。就这样,这些扩展只能对已有的菜单做出贡献。
因此,在将jdt
插件迁移到新方法之前,坚持使用旧API(如VonC所建议的)可能是最佳选择...
答案 2 :(得分:1)
您可以使用popup:
空格而不是menu:
空格。这是一个有效的例子:
<extension point="org.eclipse.ui.commands">
<command defaultHandler="com.igenox.plugin.dpbuilder.rcp.handler.CreateBuilderHandler"
id="com.igenox.plugin.DPBuilder.CreateBuilderPattern" name="CreateBuilderPattern">
</command>
</extension>
<extension point="org.eclipse.ui.menus">
<menuContribution
locationURI="popup:org.eclipse.jdt.ui.source.menu?after=DPSeparator">
<command commandId="com.igenox.plugin.DPBuilder.CreateBuilderPattern"
id="createBuilder" label="Create Builder Pattern">
</command>
</menuContribution>
<menuContribution
locationURI="popup:org.eclipse.jdt.ui.source.menu?after=additions">
<separator name="DPSeparator" visible="true">
</separator>
</menuContribution>
</extension>