Eclipseベースのプロジェクトでモーダルダイアログを開くためのワークベンチウィンドウを取得するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/443245

質問

モーダルダイアログを開くには、親ウィンドウを渡し、ダイアログがモーダルになるために必要なフラグを渡す必要があります。

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 などを使用する必要がある場合があります。モーダルダイアログ(ただし、おそらくあなたの質問はそれではありません)。

詳細については、リンクをご覧ください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top