Je développe une application RCP en eclipse. J'ai besoin de créer une liaison de clé pour faire une action, mais peu importe l'objectif actuel. En d'autres termes, j'ai besoin de créer une liaison de touches qui écoute en tout temps, peu importe la partie de l'application que vous utilisez ou quelle fenêtre a le focus actuel.Y at-il un moyen de créer une liaison de clé dans Eclipse RCP qui fonctionne quel que soit le focus?
Par exemple, étant donné une fenêtre avec un menu (File
) et deux options (Open
et Exit
). Open
ouvre une boîte de dialogue et Exit ferme l'application. Il existe également une liaison de clé (ctrl+1
) qui exécute le bouton Exit
. Ce que je veux, c'est pouvoir fermer l'application avec ctrl+1
même si j'ai le focus sur la boîte de dialogue affichée par Open
.
Ce que j'ai testé
Maintenant, j'ai une application RCP qui a une liaison de ke (ctrl + 1) sur le bouton Quitter, mais quand je fais ctrl + 1 alors que l'accent est mis sur la boîte de dialogue affichée par ouverture , la liaison de clé ne fonctionne pas.
Voici les gestionnaires.
// 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;
}
}
Et ici le manifeste avec les raccourcis clavier, 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>