モーダル ダイアログを開くには、親ウィンドウを渡し、ダイアログをモーダルにするために必要なフラグを渡す必要があります。
Eclipse インフラストラクチャーのどこにいるかによっては、この親ウィンドウを見つけるのは必ずしも容易ではありません。
親ウィンドウにはどのようにアクセスできますか?
モーダル ダイアログを開くには、親ウィンドウを渡し、ダイアログをモーダルにするために必要なフラグを渡す必要があります。
Eclipse インフラストラクチャーのどこにいるかによっては、この親ウィンドウを見つけるのは必ずしも容易ではありません。
親ウィンドウにはどのようにアクセスできますか?
前の回答のコードが機能します。ただし、UI スレッドからしかダイアログを開くことができないことに注意してください。バックグラウンド プロセスなどの別のスレッドからダイアログを開く場合は、次のようにする必要があります。
PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
public void run() {
Shell activeShell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
}
});
そうしないと、ダイアログの作成時に例外が発生します。
ビューまたはエディターから (この部分は簡単です):
this.getSite().getWorkbenchWindow().getShell()
他の場所から、ビューまたはエディターにアクセスし、上記と同じです。
ビューやエディターにアクセスできないクラスにいることに気付いた場合、UI コードを呼び出したくないかもしれませんが、本当に自分自身を撃ちたい場合は、次のようにします。
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell()
やりたいことは正確ではありませんが、ダイアログをモーダルダイアログにするために、ダイアログを作成するときにSWT.APPLICATION_MODAL、SWT.DIALOG_TRIMなどを使用する必要がある場合があります(ただし、おそらくそれはあなたの質問の内容ではありません)。
詳細については、このリンクを参照してください。