有什么方法可以在 Eclipse RCP 中创建一个无论焦点如何都有效的键绑定?

Is there any way to create a key binding in eclipse RCP that works regardless the focus?

我正在 eclipse 中开发一个 RCP 应用程序。我需要创建一个键绑定来执行某些操作,但不管当前焦点如何。

换句话说,我需要创建一个一直在监听的键绑定,无论您正在使用应用程序的哪个部分或哪个 window 具有当前焦点。

例如,给定一个带有菜单 (File) 和两个选项(OpenExit)的 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>

当对话框打开时,键绑定通常不起作用。

可以在有效的地方编写对话框,但不能将其添加到现有对话框中。