Я разрабатываю приложение 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>