1

我正在尝试为项目资源管理器中的配置菜单项/组贡献一个菜单项。

以下代码段将我的菜单项添加到同一级别。<menu label="Configure" />在之间添加<menuContribution ...><command ...>创建一个重复的配置菜单项。

我究竟做错了什么?

<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
   <extension point="org.eclipse.ui.menus">
      <menuContribution locationURI="popup:org.eclipse.jdt.ui.PackageExplorer">
         <command commandId="com.example.convert" label="Convert to XXX Project..." />
      </menuContribution>
   </extension>
   <extension point="org.eclipse.ui.commands">
      <command id="com.example.convert" defaultHandler="com.example.ConvertAction" name="Convert to XXX Project" />
   </extension>
</plugin>
4

2 回答 2

3

使用org.eclipse.ui.menus是对未来更安全的方式,所以每当我有选择的时候,我更喜欢这种方式。

设置locationURIpopup:org.eclipse.ui.projectConfigure

如果您需要找到任何菜单的 locationURI,请按Alt+ Shift+ F2,然后照常打开菜单并单击要插入的位置。

于 2013-09-21T22:51:53.833 回答
1

您应该使用org.eclipse.ui.popupMenus扩展点并添加 objectContribution。

这是 plugin.xml 中的一个简化片段,我们在 AJDT 内部使用它来为配置菜单做出贡献。您应该能够在您的项目中使用类似的东西。

<extension
     point="org.eclipse.ui.popupMenus">
  <objectContribution
        objectClass="org.eclipse.core.resources.IProject"
        adaptable="true"
        id="iprojectcontributions">
     <menu
           label="%org.eclipse.ajdt.ui.tools"
           id="org.eclipse.ajdt.ui.project.tools">
        <separator
           name="group0">
        </separator>
     </menu>     
     <visibility>
        <and>
            <objectState name="nature" value="org.eclipse.jdt.core.javanature"/>
            <not>
                <objectState name="nature" value="org.eclipse.ajdt.ui.ajnature"/>
            </not>
            <objectState name="open" value="true"/>
        </and>
     </visibility>
     <action
           label="%convertToAJP"
           class="org.eclipse.ajdt.internal.ui.actions.AddAJNatureAction"
           menubarPath="org.eclipse.ui.projectConfigure/additions"
           id="addajnatureaction">
     </action>
  </objectContribution>
</extension>
于 2013-06-18T21:41:34.597 回答