首页 文章

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

提问于
浏览
3

我正在开发一个eclipse插件,并尝试在Eclipse 3.7中扩展源菜单(mainMenubar / Source - 在java编辑器中进行编辑时可见) .

documentation表示依赖于 org.eclipse.ui.menus -extension点,因为不推荐使用较旧的扩展点 . 对于我来说,获取可靠的locationURI是一个完全的秘密,但我终于设法找到了一些使用插件 Spy 的合理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 回答

  • 3

    This thread reports在主Source菜单中添加了一个条目:

    <!-- 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>
    
  • 3

    您可以使用 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>
    
  • 1

    我遇到了同样的问题 . 我终于想通过使用(推荐的)扩展点 org.eclipse.ui.menus 扩展Source菜单是不可能的 .

    原因是在处理 org.eclipse.ui.menus -extensions之后创建了一个旧样式 actionSet (如Source菜单)中定义的菜单 . 就这样,这些扩展只能对已有的菜单做出贡献 .

    因此,在将 jdt 插件迁移到新方法之前,坚持使用旧的API(由VonC建议)可能是最好的选择...

相关问题