In this post I describe how you can contribute a context menu entry to the ‚Source‘ menu of the JDT.
-
First of all you have to create a new command. Therefore you must use the extension point org.eclipse.ui.commands. See the following example from the CQTP plugin:
<extension point="org.eclipse.ui.commands"> <command id="de.dainel.cleanqualifiedtypes.command" name="%action.label"> </command> </extension>
-
In the next step you must add a menu contribution to integrate your command into the context menu. Use the extension point org.eclipse.ui.menus as in the following example. As you can see, it is visible when the ‚Source‘ context menu is visible and one of the registred types is selected. It is also visible within the editor of a Java file.
<extension point="org.eclipse.ui.menus"> <menuContribution allPopups="true" locationURI="popup:org.eclipse.jdt.ui.source.menu?after=additions"> <separator name="cleanQualifiedTypes" visible="true"> </separator> <command commandId="de.dainel.cleanqualifiedtypes.command" style="push"> <visibleWhen> <or> <with variable="activeMenuSelection"> <iterate> <or> <adapt type="org.eclipse.jdt.core.IJavaProject"/> <adapt type="org.eclipse.jdt.core.IPackageFragment"/> <adapt type="org.eclipse.jdt.core.IPackageFragmentRoot"/> <adapt type="org.eclipse.jdt.core.ICompilationUnit"/> </or> </iterate> </with> <with variable="activeEditorId"> <equals value="org.eclipse.jdt.ui.CompilationUnitEditor" /> </with> </or> </visibleWhen> </command> <separator name="additions" visible="false"> </separator> </menuContribution> </extension>
-
Last but not least you must add a handler which is responsible for the behaviour of your command. Use the extension point org.eclipse.ui.handlers and see the following example:
<extension point="org.eclipse.ui.handlers"> <handler commandId="de.dainel.cleanqualifiedtypes.command" class="de.dainel.cleanqualifiedtypes.handlers. CleanQualifiedTypesHandler"> </handler> </extension>