Eclipseベースのプロジェクトでモーダルダイアログを開くためのワークベンチウィンドウを取得するにはどうすればよいですか?
-
22-07-2019 - |
質問
モーダルダイアログを開くには、親ウィンドウを渡し、ダイアログがモーダルになるために必要なフラグを渡す必要があります。
Eclipseインフラストラクチャのどこにいるかによっては、この親ウィンドウを見つけるのは必ずしも簡単ではありません。
親ウィンドウにアクセスするにはどうすればよいですか
解決 2
ビューまたはエディターから(この部分は簡単です):
this.getSite().getWorkbenchWindow().getShell()
他の場所から、上記と同じビューまたはエディターにアクセスします。
ビューまたはエディターにアクセスできないクラスにいる場合、UIコードを呼び出すことはおそらくないでしょうが、実際に足を踏み入れたい場合は
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell()
他のヒント
前の回答のコードは機能します。ただし、ダイアログはUIスレッドからしか開くことができないことに注意してください。別のスレッドからダイアログを開いている場合、例えばバックグラウンドプロセスの場合は、次のようにする必要があります。
PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
public void run() {
Shell activeShell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
}
});
それ以外の場合、ダイアログの作成時に例外が発生します。
やりたいことではありませんが、ダイアログを作成するために SWT.APPLICATION_MODAL 、 SWT.DIALOG_TRIM などを使用する必要がある場合があります。モーダルダイアログ(ただし、おそらくあなたの質問はそれではありません)。
詳細については、リンクをご覧ください。
所属していません StackOverflow