有没有办法在eclipse RCP中创建一个无论焦点有效的键绑定?

时间:2016-07-15 09:44:10

标签: java eclipse rcp key-bindings

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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