我想在我的eclipse插件中添加一个快捷方式,以显示包含现有绑定的快捷菜单。它应该像JDT中的“Refactor”快捷菜单一样工作。
JDT快捷菜单的快捷方式:
JDT快捷菜单:
我已经添加了一个绑定和命令,但似乎缺少了一些东西。 Delete Something 条目也适用于上下文菜单,只缺少快捷菜单的快捷方式。 有人怎么做?
<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>
答案 0 :(得分:1)
你也可以这样做:
为快捷菜单添加命令并设置默认处理程序。
<command
defaultHandler="myplugin.refactoring.QuickmenuHandler"
id="myplugin.refactoring.quickMenu"
name="Show Refactor Quick Menu">
</command>
处理程序应该能够创建菜单。像这样:
@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;
}
为命令添加快捷方式(就像你一样):
<key
commandId="myplugin.refactoring.quickMenu"
schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
sequence="M1+9">
</key>
最后在菜单扩展点中将所有这些绑定在一起:
<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>
重点是菜单元素中的commandId属性。它用于在菜单中显示键盘快捷键。
答案 1 :(得分:0)
您可以查看JDT如何实现相同的功能。例如,在查看Eclipse 3.8.2源代码时,您将看到有趣的方法:
org.eclipse.jdt.ui.actions.RefactorActionGroup.installQuickAccessAction()
在打开Java编辑器时调用。这是当前编辑器programmatic handler association。
总结如何在JDT中完成:
首先,他们在plugin.xml中有一个命令声明:
&LT;命令 NAME = “%ActionDefinition.refactorQuickMenu.name” 描述= “%ActionDefinition.refactorQuickMenu.description” 的categoryId = “org.eclipse.jdt.ui.category.refactoring” ID = “org.eclipse.jdt.ui.edit.text.java.refactor.quickMenu” &GT;
他们声明了一个键绑定:
&LT;键 序列= “M2 + M3 + T” commandId = “org.eclipse.jdt.ui.edit.text.java.refactor.quickMenu” schemeId = “org.eclipse.ui.defaultAcceleratorConfiguration”/&GT;
创建编辑器后,它们会将此命令与处理程序相关联。处理程序本身(org.eclipse.jdt.internal.ui.actions.JDTQuickMenuCreator
)负责使用项目填充快捷菜单。
您不必以编程方式将命令与处理程序相关联 - 另一个选项是使用org.eclipse.ui.handlers扩展点。