エラーダイアログの表示
「CoreExceptionとIStatus」で紹介したように,Eclipseでは例外のほとんどがCoreExceptionとIStatusの組み合わせで成り立っている。一般的に,例外が発生したときには,ユーザにそのことを通知するためのダイアログを表示する。CoreException例外の発生時には,それが持つIStatusオブジェクトの内容をエラーダイアログに表示することになるが,EclipseではIStatusオブジェクトの内容をエラーダイアログとして簡単に表示するためのErrorDialogクラスが用意されている。
ErrorDialogを使ってIStatusオブジェクトの内容をエラーダイアログとして表示する手順は,非常に簡単である。
try {
...
} catch(CoreException e) {
Shell parentShell = ...;
IStatus status = e.getStatus();
ErrorDialog.openError(
parentShell, "エラー", "エラーメッセージ", status);
}
まず,ダイアログの表示に必要な,ダイアログの親となるShellオブジェクトを取得する。そして,キャッチしたCoreException例外オブジェクトのgetStatusメソッドを使って,IStatusオブジェクトを得る。あとは,ErrorDialogクラスのクラスメソッドであるopenErrorメソッドに「Shellオブジェクト」「タイトルに表示する文字列」「エラーの概要を示すメッセージ」「IStatusオブジェクト」を渡して呼び出せば,以下のようなエラーダイアログが表示される。「Reason」のところに表示されているメッセージは,IStatusオブジェクトのgetMessageメソッドの戻り値である。
もし,openErrorメソッドに渡しているIStatusオブジェクトのエラーレベル(正確にはステータスレベル)がIStatus.ERROR以外だった場合は,ちゃんとそれ相応のダイアログが表示される(ダイアログのアイコンが変わる)。
[IStatus.WARNINGだった場合]
[IStatus.INFOだった場合]
うまくできていることに,IStatus.OKだった場合は,openErrorメソッドを呼び出してもダイアログは表示されない。「OKなんだからエラーダイアログを表示しなくてもいいじゃん」っていう考えだと思われる。
ちなみに,ダイアログの親となるShellオブジェクトを渡すところでnullを渡しても,一応「親のいないダイアログ」が表示されるが,あまりお勧めできることではない。これについては「Shellオブジェクトの取得」を参照されたし。
| 固定リンク
この記事へのコメントは終了しました。
コメント