将项目菜单项提供给Project Explorer中的“Configure”菜单项/组

时间:2013-06-14 21:50:21

标签: eclipse-plugin

我正在尝试将项目项目提供给Project Explorer中的 Configure 菜单项/组。

以下代码段将我的菜单项添加到同一级别。在<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>

2 个答案:

答案 0 :(得分:3)

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

locationURI设置为popup:org.eclipse.ui.projectConfigure

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

答案 1 :(得分: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>