I want to add a shortcut to my eclipse plugin to show a quick menu with existing bindings. It should work like the "Refactor" quick menu in JDT.
Shortcut for quick menu in JDT:
JDT quick menu:
I already added a binding and a command but it seems there is something missing. The Delete Something entry is also working for the context menu, just the shortcut to the quick menu is missing. Does anybody how to do this?
<extension point="org.eclipse.ui.bindings"> <key commandId="myplugin.refactoring.actions.DeleteSomething" schemeId="org.eclipse.ui.defaultAcceleratorConfiguration" sequence="M1+5"> </key> <key commandId="myplugin.refactoring.quickMenu" schemeId="org.eclipse.ui.defaultAcceleratorConfiguration" sequence="M1+9"> </key>
<extension point="org.eclipse.ui.commands"> <command categoryId="myplugin.category.refactor" description="Delete Something" id="myplugin.refactoring.actions.DeleteSomething" name="Extract Method"> </command> <command categoryId="myplugin.category.refactor" id="myplugin.refactoring.quickMenu" name="Show Refactor Quick Menu"> </command> <category id="myplugin.category.refactor" name="Refactor"> </category>
You can also do it like this:
Add a command for the quick menu and set a default handler.
<command defaultHandler="myplugin.refactoring.QuickmenuHandler" id="myplugin.refactoring.quickMenu" name="Show Refactor Quick Menu"> </command>
The handler should be able to create the menu. Something like this:
@Override public Object execute(ExecutionEvent event) throws ExecutionException { ... Menu menu = new Menu(some parent); new MenuItem(menu, SWT.PUSH).setText("..."); menu.setVisible(true); return null; }
Add a shortcut to the command (as you did):
<key commandId="myplugin.refactoring.quickMenu" schemeId="org.eclipse.ui.defaultAcceleratorConfiguration" sequence="M1+9"> </key>
Finally bind all of this together in the menu extension point:
<extension point="org.eclipse.ui.menus"> <menuContribution allPopups="false" locationURI="popup:ch.arenae.dnp.frame.popup?after=additions"> <menu commandId="myplugin.refactoring.quickMenu" label="Refactor"> <command commandId="<first refactoring command>" style="push"> </command> </menu> ... </menuContribution>
The important point is the commandId attribute in the menu element. It is used to display the keyboard shortcut in the menu.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With