2016-07-15 9 views
1

Я разрабатываю приложение RCP в затмении. Мне нужно создать привязку клавиш для выполнения некоторых действий, но независимо от текущего фокуса.Есть ли способ создать привязку клавиш в Eclipse RCP, которая работает независимо от фокуса?

Другими словами, мне нужно создать привязку клавиш, которая прослушивает все время, не имеет значения, какую часть приложения использовать или какое окно имеет текущий фокус.

Например, окно с меню (File) и два варианта (Open и Exit). Open открывает диалоговое окно, а Exit закрывает приложение. Существует также привязка клавиш (ctrl+1), которая выполняет кнопку Exit. Я хочу, чтобы я мог закрыть приложение с помощью ctrl+1, даже если у меня есть фокус на диалоговом окне, отображаемом Open.

То, что я испытал

Теперь у меня есть RCP приложение, которое имеет KE связывания (Ctrl + 1) на кнопку Exit, но когда я делаю 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

Привязка клавиш как правило, не работает, когда диалоговое окно открыто.

Возможно создавать диалоги, где они работают, но вы не можете добавить это в существующие диалоги.