如何在Eclipse中扩展源菜单? (或者:它的位置是什么?)

时间:2011-08-18 19:59:23

标签: eclipse eclipse-plugin eclipse-rcp rcp

我正在开发一个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。

3 个答案:

答案 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="&amp;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&amp;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>