Aaron
Aaron

Reputation: 1605

Contribute a menu item to the "Configure" menu item/group in Project Explorer

I'm trying to contribute a menu item to the Configure menu item/group in Project Explorer.

The following snippet adds my menu item to the same level. Adding <menu label="Configure" /> between <menuContribution ...> and <command ...> creates a duplicate Configure menu item.

What am I doing wrong?

<?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>

Upvotes: 1

Views: 1279

Answers (2)

clockworkgeek
clockworkgeek

Reputation: 37700

Using org.eclipse.ui.menus is the more future-safe way so I prefer that whenever I have a choice.

Set the locationURI to popup:org.eclipse.ui.projectConfigure

If you need to find the locationURI of any menu press Alt+Shift+F2, then open the menu as usual and click where you want to insert.

Upvotes: 3

Andrew Eisenberg
Andrew Eisenberg

Reputation: 28737

You should be using org.eclipse.ui.popupMenus extension point and adding an objectContribution.

Here's a simplified snippet in the plugin.xml that we are using inside of AJDT to contribute to the configure menu. You should be able to use something like this for your project.

<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>

Upvotes: 1

Related Questions