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>