2016-07-15 26 views
1

我在eclipse中开发RCP应用程序。我需要创建一个键绑定来执行一些操作,但不管当前的焦点。有没有什么办法可以在eclipse RCP中创建一个不管焦点如何工作的键绑定?

换句话说,我需要创建一个键绑定是听所有的时间,没有问题这哟uare使用或窗口具有当前焦点的应用程序的一部分。

例如,给定一个带有菜单(File)和两个选项(OpenExit)的窗口。 Open打开一个对话框并退出关闭应用程序。还有一个键绑定(ctrl+1),它执行Exit按钮。我要的是能够与ctrl+1关闭应用程序,即使我有焦点由Open显示的对话框。

我已经测试

现在我有了一个科结合(CTRL + 1)的退出按钮RCP应用程序,但是当我做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> 

回答

1

键绑定一般不工作时,一个对话框打开清单。

它可以编写对话,他们做的工作,但你不能将它添加到现有的对话。

相关问题