« 進捗状況のダイアログ表示 | トップページ | マルチ・ステータス »

2004.04.08

ビルド処理の進捗状況表示

ワークスペース全体やプロジェクトに対してビルド処理を呼び出す際に,もちろんビルド処理は長い時間がかかる可能性があるので,ユーザに対して進捗情報を表示すべきである。「ビルダーの起動」で紹介した方法では,buildメソッドの第2引数(IProgressMonitorオブジェクト)にnullを渡しているため,ビルド処理中であってもユーザに対して何も表示されないというとても不親切な例だった。

実は,ビルド処理(buildメソッド)の呼び出し時に,IProgressMonitorオブジェクトを渡すことができれば,buildメソッド内の処理で適切に進捗情報を表示してくれるようになる。つまり,「進捗状況のダイアログ表示」で紹介したProgressMonitorDialogクラスを使用すれば,ビルド処理に関する進捗情報をダイアログに表示することができるようになるのだ。

  Shell shell = ...;
  ProgressMonitorDialog dialog = new ProgressMonitorDialog(shell);
  try {
    dialog.run(true, true, new IRunnableWithProgress() {
      public void run(IProgressMonitor monitor)
          throws InvocationTargetException, InterruptedException {
        try {
          // ワークスペースに対するビルド処理の場合
          ResourcesPlugin.getWorkspace().build(
            IncrementalProjectBuilder.INCREMENTAL_BUILD, monitor);
          // プロジェクトに対するビルド処理の場合
          IProject project = ...;
          project.build(
            IncrementalProjectBuilder.INCREMENTAL_BUILD, monitor);
        } catch(CoreException e) {
          // ビルド失敗
          throw new InvocationTargetException(e);
        }
      }
    } );
  } catch(InvocationTargetException e) {
    CoreException cause = (CoreException)e.getCause();
    // ビルド失敗に対する処理
  } catch(InterruptedException e) {
    // キャンセルされた場合の処理
  }

進捗状況を表示するために,ProgressMonitorDialogクラスを利用している。ProgressMonitorDialogオブジェクトのrunメソッドに渡すIRunnableWithProgressインタフェースの実装クラス内に,ビルド処理を呼び出すコードを記述している。IRunnableWithProgressインタフェースのrunメソッドに渡ってくるIProgressMonitorオブジェクトをビルド処理(buildメソッド)にそのまま渡してあげることで,ProgressMonitorDialogクラスで作成される進捗表示用のダイアログがビルド処理内で使用され,ユーザに進捗状況が表示されるようになる

何らかのビルダーでビルド処理に失敗した際は,CoreException例外が発生する。その際には,一旦InvocationTargetException例外にCoreException例外オブジェクトを渡してスローする。そしてProgressMonitorDialogオブジェクトのrunメソッド呼び出しに対する例外処理でInvocationTargetException例外をキャッチし,CoreException例外を取り出してビルド失敗時の処理を行う。

EclipseプラットフォームのAPIをいくつも利用していると,結構頻繁にIProgressMonitorオブジェクトを引数に持つメソッドにお目にかかる。その場合は上記のようにProgressMonitorDialogクラスを使って進捗状況をユーザに表示するようにしてあげると,より良いプラグインになるだろう

|

« 進捗状況のダイアログ表示 | トップページ | マルチ・ステータス »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/12631/412974

この記事へのトラックバック一覧です: ビルド処理の進捗状況表示:

« 進捗状況のダイアログ表示 | トップページ | マルチ・ステータス »