【发布时间】:2010-11-23 11:22:01
【问题描述】:
在eclipse插件开发中,我想在弹出菜单中添加一项(例如:Mystyle)。
举个例子,
项目资源管理器 --> 右键单击 --> 新建 --> MyStyle
如何在eclipse插件开发中实现这一点?
问候 马坦
【问题讨论】:
在eclipse插件开发中,我想在弹出菜单中添加一项(例如:Mystyle)。
举个例子,
项目资源管理器 --> 右键单击 --> 新建 --> MyStyle
如何在eclipse插件开发中实现这一点?
问候 马坦
【问题讨论】:
这样的事情应该这样做(在this thread之后):
<extension
point="org.eclipse.ui.menus">
<menuContribution
locationURI=
"popup:org.eclipse.ui.navigator.ProjectExplorer#PopupMenu?after=additions">
<command
commandId="myplugin.command.mycommand"
icon="icons/etool16/mycommand.png"
label="Run mycommand"
mnemonic="M1+P"
tooltip="Do something with this project">
</command>
</menuContribution>
</extension>
为命令 UI 结构定义一组有序的添加。定义的元素将添加到
locationURI元素指定的位置的命令 UI 结构中。这应该是所有对菜单、工具栏或修剪的贡献的起点,无论它们出现在 UI 中的何处。
locationURI- 定义插入点的 URI 规范,在该插入点处添加包含的添加项。
URI 的格式由三个基本部分组成:
- 方案:“菜单”、“弹出”或“工具栏”之一。
表示用于处理贡献的经理类型- Id:这是现有菜单的 id、视图 id 或编辑器“类型”的 id
- 查询:查询格式为
<placement>=<id>,其中:<placement>是“之前”或“之后”,<id>是现有菜单项的 ID
另请参见 、org.eclipse.ui.popupMenusorg.eclipse.ui.menus - 带有 menuContribution 的扩展点,其 locationURI 属性指向 popup:org.eclipse.ui.popup.any?after=additions 。
警告,正如Prashant Bhate 在评论中提到的那样,包org.eclipse.ui.popupMenus 已被弃用。
更多信息请参见问题Missing link between objectContribution and command。
【讨论】:
我花了一段时间才解决这个确切的问题,所以我将回答 OP 的问题(添加到文件->新菜单)。
在哪里贡献(common.new.menu)
感谢这篇文章,我发现您想为 popup:common.new.menu?after=new 做出贡献。你为什么问?哎呀,如果我知道;但它有效。
结果
(当 C/C++ 为主动视角时)
(当“非”C/C++ 作为主动视角时)
这是我的示例插件:
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
<extension
point="org.eclipse.ui.commands">
<command
defaultHandler="com.justin.debug.SampleHandler"
id="com.justin.debug.commands.sampleCommand"
name="Sample Command">
</command>
</extension>
<extension
point="org.eclipse.ui.menus">
<menuContribution
locationURI="popup:common.new.menu?after=new">
<command
commandId="com.justin.debug.commands.sampleCommand"
icon="icons/sample.gif"
label="New Root Command From Justin"
style="push">
<visibleWhen
checkEnabled="false">
<with
variable="activeWorkbenchWindow.activePerspective">
<equals
value="org.eclipse.cdt.ui.CPerspective">
</equals>
</with>
</visibleWhen>
</command>
</menuContribution>
<menuContribution
locationURI="popup:common.new.menu?after=new">
<menu
id="org.ecilpse.ui.navigator.ProjectExplorer.helloJustin"
label="Hello Justin">
<command
commandId="com.justin.debug.commands.sampleCommand"
icon="icons/sample.gif"
label="New Submenu Command From Justin"
style="push">
</command>
</menu>
</menuContribution>
</extension>
</plugin>
我在这里添加了一个重要的部分,'visibleWhen' 参数。这仅在 C/C++ 透视图中显示 来自 Justin 的新根命令。事实证明,要弄清楚这一点很棘手,因此我将其包含在示例中。以下是我在研究时挖掘的有用资源:
我通过痛苦地挖掘 org.eclipse.cdt.ui 插件的 plugin.xml 找到了 C Perspective org.eclipse.cdt.ui.CPerspective 的名称。
现在,如果有人能告诉我将来如何轻松查看这些 uri/资源/属性...天哪。
【讨论】: