有什么方法可以在 Eclipse RCP 中创建一个无论焦点如何都有效的键绑定?
Is there any way to create a key binding in eclipse RCP that works regardless the focus?
我正在 eclipse 中开发一个 RCP 应用程序。我需要创建一个键绑定来执行某些操作,但不管当前焦点如何。
换句话说,我需要创建一个一直在监听的键绑定,无论您正在使用应用程序的哪个部分或哪个 window 具有当前焦点。
例如,给定一个带有菜单 (File
) 和两个选项(Open
和 Exit
)的 window。 Open
打开一个对话框并退出关闭应用程序。还有一个执行 Exit
按钮的键绑定 (ctrl+1
)。我想要的是能够使用 ctrl+1
关闭应用程序,即使我将焦点放在 Open
.
显示的对话框上
我测试了什么
现在我有一个 RCP 应用程序,它具有到退出按钮的 ke 绑定 (ctrl+1),但是当我在焦点位于打开显示的对话框上时按 ctrl+1,键绑定不起作用.
这是处理程序。
// 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>
当对话框打开时,键绑定通常不起作用。
可以在有效的地方编写对话框,但不能将其添加到现有对话框中。
我正在 eclipse 中开发一个 RCP 应用程序。我需要创建一个键绑定来执行某些操作,但不管当前焦点如何。
换句话说,我需要创建一个一直在监听的键绑定,无论您正在使用应用程序的哪个部分或哪个 window 具有当前焦点。
例如,给定一个带有菜单 (File
) 和两个选项(Open
和 Exit
)的 window。 Open
打开一个对话框并退出关闭应用程序。还有一个执行 Exit
按钮的键绑定 (ctrl+1
)。我想要的是能够使用 ctrl+1
关闭应用程序,即使我将焦点放在 Open
.
我测试了什么
现在我有一个 RCP 应用程序,它具有到退出按钮的 ke 绑定 (ctrl+1),但是当我在焦点位于打开显示的对话框上时按 ctrl+1,键绑定不起作用.
这是处理程序。
// 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>
当对话框打开时,键绑定通常不起作用。
可以在有效的地方编写对话框,但不能将其添加到现有对话框中。