2016-07-15 9 views
1

Ich entwickle eine RCP-Anwendung in Eclipse. Ich muss eine Tastenbindung erstellen, um etwas zu tun, aber unabhängig vom aktuellen Fokus.Gibt es eine Möglichkeit, eine Schlüsselbindung in Eclipse RCP zu erstellen, die unabhängig vom Fokus funktioniert?

Mit anderen Worten, ich muss eine Tastenbindung erstellen, die die ganze Zeit zuhören, egal welche Teile der Anwendung Sie verwenden oder welches Fenster den aktuellen Fokus haben. B. ein Fenster mit einem Menü (File) und zwei Optionen (Open und Exit). Open öffnet einen Dialog und Beenden schließt die Anwendung. Es gibt auch eine Tastenanbindung (ctrl+1), die die Exit Taste ausführt. Was ich will, ist in der Lage, die Anwendung mit ctrl+1 zu schließen, auch wenn ich den Fokus auf den Dialog von Open angezeigt haben.

Was ich getestet habe

Jetzt habe ich eine RCP-Anwendung, die ein ke Bindung (ctrl + 1) auf die Exit-Taste, aber wenn ich ctrl tun + 1, während der Fokus auf dem Dialog wird mit offener angezeigt , funktioniert die Tastenanbindung nicht.

Hier sind die Handler.

// 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; 
      } 
    } 

Und hier das Manifest mit den Tastenbelegungen etc .:

<?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> 

Antwort

1

Tasturbefehle nicht funktionieren im Allgemeinen, wenn ein Dialog geöffnet ist.

Es ist möglich, Dialoge zu schreiben, wo sie funktionieren, aber Sie können dies nicht zu bestehenden Dialogen hinzufügen.

Verwandte Themen