Shellオブジェクトの取得 Part2
以前「Shellオブジェクトの取得」でShellオブジェクトの取得方法を紹介したが,よりEclipseの作法に則っていると思われる方法があるので,ここで紹介する。
Shellオブジェクトは,ワークベンチオブジェクト(IWorkbenchオブジェクト)から辿って取得することができる。
IWorkbench workbench = PlatformUI.getWorkbench();
IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();
Shell shell = window.getShell();
まず,PlatformUIクラスのgetWorkbenchメソッドを呼び出して,IWorkbenchオブジェクトを取得する。その後,getActiveWorkbenchWindowメソッドにより,現在アクティブなワークベンチウィンドウのオブジェクトIWorkbenchWindowオブジェクト)を取得する。Shellオブジェクトはトップレベルウィンドウを表すオブジェクトなので,IWorkbenchWindowオブジェクトはドンぴしゃりのオブジェクトであり,IWorkbenchWindowインタフェースに規定されたgetShellメソッドによって,Shellオブジェクトを取得することができる。
ここで注意することは,上記のコードの実行のタイミングによっては,ワークベンチウィンドウがまだ存在していない可能性があるということである。Eclipseの起動直後とか,マルチスレッドでEclipseがフォーカスを得ていない状況だったとかがその例である。その場合,getActiveWorkbenchWindowメソッドの戻り値はnullになってしまうので,getShellメソッドを呼び出す前に,getActiveWorkbenchWindowメソッドの戻り値がnullかどうかを判断する処理をしておくことが多くの場合必要だろう。
| 固定リンク
この記事へのコメントは終了しました。
コメント