理解した!
Editor APIは日食で非常に広大で、どこから始めればよいかわからないため、シェルにKeyListenerを追加することに重点を置きました。シェル内のアイテムがフォーカスを取得すると、シェル自体がフォーカスを失うため、SWTでは少し問題があることがわかります。しかし、少し検索した後、同じ問題を抱えている他の誰かに出くわしました。シェルの表示にフィルターを追加することで、アプリケーション全体で機能するリスナーオブジェクトを追加できます。そのような:
IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
Shell shell = window.getShell();
shell.getDisplay().addFilter(SWT.KeyDown, new Listener()
{
public void handleEvent(Event event)
{
System.out.println("" + event.character);
}
});
これをさらに進めて、特定の非ウィジェット部分で押されたキーのみを心配する(そうでない場合は、その部分にKeyListenerを追加するだけでよい)ために、現在アクティブな部分が目的の部分と同じであることを確認するチェックを追加できます。単純なifチェックを使用してアクションを実行します。
final IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
Shell shell = window.getShell();
shell.getDisplay().addFilter(SWT.KeyDown, new Listener()
{
public void handleEvent(Event event)
{
IWorkbenchPage page = window.getActivePage();
IWorkbenchPart part = page.getActivePart();
IEditorPart editor = page.getActiveEditor();
if(part.equals(editor))
{
System.out.println("" + event.character);
}
}
});
これが私が解決策を見つけたよりも他の誰かがより簡単な時間を過ごすのに役立つことを願っています!