我正在eclipse中开发一个RCP应用程序。我需要创建一个键绑定来执行某些操作,但无论当前的焦点如何。
换句话说,我需要创建一个一直在监听的键绑定,不管应用程序的哪个部分正在使用或者哪个窗口具有当前焦点。
例如,给定一个带有菜单(File
)的窗口和两个选项(Open
和Exit
)。 Open
打开一个对话框,Exit关闭应用程序。还有一个执行ctrl+1
按钮的键绑定(Exit
)。我想要的是能够使用ctrl+1
关闭应用程序,即使我专注于Open
显示的对话框。
现在我有一个RCP应用程序,它对退出按钮有一个ke绑定(ctrl + 1),但当我按ctrl + 1而焦点在open显示的对话框上时,键绑定不起作用。
以下是处理程序。
// Handler for the Open button
public class OpenHandler implements IHandler {
...
public Object execute(ExecutionEvent event) throws ExecutionException {
// TODO Auto-generated method stub
final ExecutionEvent auxEvent = event;
HandlerUtil.getActiveShell(event).getDisplay().asyncExec((new Runnable() {
public void run() {
MessageDialog.openWarning(HandlerUtil.getActiveShell(auxEvent),"wrong","no");
}
}));
return null;
}
...
}
// Handler for the Exit button
public class ExitHandler extends AbstractHandler {
public Object execute(ExecutionEvent event) throws ExecutionException {
HandlerUtil.getActiveWorkbenchWindow(event).close();
return null;
}
}
这里有关键绑定等的清单:
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
<extension
id="application"
point="org.eclipse.core.runtime.applications">
<application>
<run
class="de.vogella.rcp.commands.first.Application">
</run>
</application>
</extension>
<extension
point="org.eclipse.ui.perspectives">
<perspective
name="RCP Perspective"
class="de.vogella.rcp.commands.first.Perspective"
id="de.vogella.rcp.commands.first.perspective">
</perspective>
</extension>
<extension
point="org.eclipse.ui.commands">
<command
defaultHandler="de.vogella.rcp.commands.first.commands.ExitHandler"
id="de.vogella.rcp.commands.first.commands.Exit"
name="Exit">
</command>
<command
defaultHandler="de.vogella.rcp.commands.first.commands.OpenHandler"
id="de.vogella.rcp.commands.first.commands.Open"
name="Open">
</command>
</extension>
<extension
point="org.eclipse.ui.menus">
<menuContribution
allPopups="false"
locationURI="menu:org.eclipse.ui.main.menu">
<menu
id="fileManu"
label="File">
<command
commandId="de.vogella.rcp.commands.first.commands.Exit"
label="Exit"
style="push"
tooltip="Exits the application">
</command>
<command
commandId="de.vogella.rcp.commands.first.commands.Open"
label="Open"
style="push"
tooltip="Opens">
</command>
</menu>
</menuContribution>
</extension>
<extension
point="org.eclipse.ui.bindings">
<key
commandId="de.vogella.rcp.commands.first.commands.Exit"
contextId="org.eclipse.ui.contexts.window"
schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
sequence="M1+1">
</key>
</extension>
</plugin>
答案 0 :(得分:1)
当对话框打开时,键绑定通常不起作用。
可以在对话框中编写可行的对话框,但不能将其添加到现有对话框中。