如何为类似于JDT中的"重构"上下文菜单的quickMenu添加键绑定?

Mei*_*ard 69 eclipse-rcp eclipse-jdt

我想为我的eclipse插件添加一个快捷方式,以显示带有现有绑定的快捷菜单.它应该像JDT中的"Refactor"快捷菜单一样工作.

JDT中快捷菜单的快捷方式:

JDT快捷菜单:

JDT quickMenu

我已经添加了一个绑定和一个命令,但似乎缺少了一些东西.该删除的东西入境也工作了上下文菜单,只是这个快捷方式即可快速菜单丢失.有人怎么做?

<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>
Run Code Online (Sandbox Code Playgroud)

<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>
Run Code Online (Sandbox Code Playgroud)

Mic*_*tor 0

你可以看看JDT是如何实现的。例如,当查看 Eclipse 3.8.2 源代码时,您会看到有趣的方法:

org.eclipse.jdt.ui.actions.RefactorActionGroup.installQuickAccessAction()
Run Code Online (Sandbox Code Playgroud)

当 Java 编辑器打开时调用。这是与当前编辑器发生编程处理程序关联的情况。

总结一下 JDT 中是如何完成的:

  1. 首先,他们在plugin.xml中有一个命令声明:

    <命令名称=“%ActionDefinition.refactorQuickMenu.name”描述=“%ActionDefinition.refactorQuickMenu.description”categoryId=“org.eclipse.jdt.ui.category.refactoring”id=“org.eclipse.jdt.ui.edit”。 text.java.refactor.quickMenu">

  2. 他们声明了一个键绑定:

    <键序列=“M2+M3+T”commandId=“org.eclipse.jdt.ui.edit.text.java.refactor.quickMenu”schemeId=“org.eclipse.ui.defaultAcceleratorConfiguration”/>

  3. 创建编辑器后,他们会将此命令与处理程序关联起来。处理程序本身 ( org.eclipse.jdt.internal.ui.actions.JDTQuickMenuCreator) 负责用项目填充快速菜单。

您不必以编程方式将命令与处理程序关联 - 另一个选择是使用org.eclipse.ui.handlers扩展点。