oxygen kepler for developers descargar eclipse-rcp eclipse-jdt

eclipse-rcp - kepler - eclipse oxygen download



¿Cómo puedo agregar un enlace de clave para un menú rápido similar al menú contextual "Refactorizar" en JDT? (2)

Quiero agregar un acceso directo a mi complemento eclipse para mostrar un menú rápido con enlaces existentes. Debería funcionar como el menú rápido "Refactor" en JDT.

Acceso directo para el menú rápido en JDT:

Menú rápido de JDT:

Ya agregué un enlace y un comando, pero parece que falta algo. La entrada Eliminar algo también funciona para el menú contextual, solo falta el acceso directo al menú rápido. ¿Alguien sabe cómo hacer esto?

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


Puedes echarle un vistazo a cómo JDT implementa lo mismo. Por ejemplo, al mirar el código fuente de Eclipse 3.8.2, verá un método interesante:

org.eclipse.jdt.ui.actions.RefactorActionGroup.installQuickAccessAction()

que se llama cuando se abre el editor de Java. Esta es una asociación de controlador programático con el editor actual.

Para resumir cómo se hace en JDT:

  1. Primero, tienen una declaración de comando en plugin.xml:

    <command name = "% ActionDefinition.refactorQuickMenu.name" description = "% ActionDefinition.refactorQuickMenu.description" categoryId = "org.eclipse.jdt.ui.category.refactoring" id = "org.eclipse.jdt.ui.edit. text.java.refactor.quickMenu ">

  2. Ellos declaran un enlace de clave:

    <key sequence = "M2 + M3 + T" commandId = "org.eclipse.jdt.ui.edit.text.java.refactor.quickMenu" schemeId = "org.eclipse.ui.defaultAcceleratorConfiguration" />

  3. Asocian este comando con un controlador una vez que se crea el editor. El manejador en sí ( org.eclipse.jdt.internal.ui.actions.JDTQuickMenuCreator ) se ocupa de llenar el menú rápido con elementos.

No tiene que asociar un comando con un controlador mediante programación: otra opción es usar el punto de extensión org.eclipse.ui.handlers .


También puedes hacerlo así:

Agregue un comando para el menú rápido y configure un controlador predeterminado.

<command defaultHandler="myplugin.refactoring.QuickmenuHandler" id="myplugin.refactoring.quickMenu" name="Show Refactor Quick Menu"> </command>

El controlador debe ser capaz de crear el menú. Algo como esto:

@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; }

Agregue un acceso directo al comando (como lo hizo):

<key commandId="myplugin.refactoring.quickMenu" schemeId="org.eclipse.ui.defaultAcceleratorConfiguration" sequence="M1+9"> </key>

Finalmente unir todo esto en el punto de extensión del menú:

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

El punto importante es el atributo commandId en el elemento de menú. Se usa para mostrar el atajo de teclado en el menú.