作業中のEclipseプラグインに少し問題があります。このプラグインでは、特別なタイプのプラグイン固有のエディターがプログラムで開かれることがよくあります。これは、さまざまなビュー/エディターでのさまざまなアクションによってトリガーされますが、エディターを開くためのコードは同じです。プラグイン固有のエディターは正常に開きます。ただし、最近、これらのエディターの1つを開くたびに、奇妙なフォーカスグリッチが発生することに気付きました。
エディターを開くと、フォーカスを受け取っているように見えますが、この直後に以前アクティブだったビュー/エディターをクリックしても、フォーカスを取り戻すことはできません。以前にアクティブだったビュー/エディタ以外のものがクリックされるとすぐに、問題は即座に解決され、フォーカスは通常どおり再開されます。
例として、パッケージエクスプローラービューからコンテキストメニューオプションを選択すると、エディターが開きます。エディターが正しく開き、フォーカスがあるように見えます。この後、最初にパッケージエクスプローラーをもう一度クリックしますが、フォーカスが移動しません(エディターにはフォーカスがあるように見えます)。パッケージエクスプローラーを右クリックしますが、パッケージエクスプローラー固有のコンテキストメニュー項目は表示されません。この後、他のビューをクリックしてから、もう一度パッケージエクスプローラーをクリックします。これで、通常どおり、パッケージエクスプローラーにフォーカスが移ります。
これは、エディターを開くために使用しているコードです。
IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
final GraphEditorPart gp = (GraphEditorPart) page.openEditor(new NullEditorInput(), "editor.id");
この後、アルビレオSWT-AWTブリッジを介して、エディターにいくつかのビジュアルが入力されます(これが問題に関連しているかどうかはわかりません。メインのエディター要素に使用されるクラスはorg.eclipse.albireo.core.SwingControlです)。
おそらく問題は、エディターが「実際に」フォーカスを取得していないか、以前にアクティブだったビューが「実際に」フォーカスを失っていないことだと思ったので、次の行を追加してみました。
page.activate(gp);
しかし、これは何も変わらなかったようです。なぜこれが起こるのでしょうか?