我想在我的eclipse插件中添加一个快捷方式,以显示现有绑定的快捷菜单。它应该像JDT中的“重构”快捷菜单一样工作。
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>
发布于 2014-12-17 16:21:17
你也可以这样做:
为快捷菜单添加命令并设置默认处理程序。
<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属性。用于在菜单中显示键盘快捷键。
发布于 2014-12-02 21:25:40
您可以看看JDT是如何实现同样的功能的。例如,在查看Eclipse 3.8.2源代码时,您将看到有趣的方法:
org.eclipse.jdt.ui.actions.RefactorActionGroup.installQuickAccessAction()
它在打开Java编辑器时调用。这是were programmatic handler association与当前编辑器发生的事情。
总结一下它是如何在JDT中完成的:
org.eclipse.jdt.internal.ui.actions.JDTQuickMenuCreator
)负责用菜单项填充快捷菜单。您不必以编程方式将命令与处理程序相关联-另一种选择是使用org.eclipse.ui.handlers扩展点。
https://stackoverflow.com/questions/7672536
复制相似问题