« 最初のリッチクライアント(1) - プラグイン・マニフェストの作成 | トップページ | 最初のリッチクライアント(3) - デバッガで実行 »

2004.07.01

最初のリッチクライアント(2) - クラスの作成

前回はリッチクライアントの作成の第1歩として,「プラグイン・マニフェストの作成」の方法を紹介した。もちろんプラグイン・マニフェストだけではなく,いくつかクラスを作成することも必要となる。今回は,最低限必要となるクラスの作成方法について紹介する。

リッチクライアントを作成するために最低限必要なクラスは,以下の3つである。

  (1) IPlatformRunnableインタフェースの実装クラス
  (2) WorkbenchAdvisor抽象クラスのサブクラス
  (3) IPerspectiveFactoryインタフェースの実装クラス

IPlatformRunnableインタフェースの実装クラスは,アプリケーションのエントリポイントとなるクラスである。つまり,リッチクライアントの起動は,IPlatformRunnableインタフェースの実装クラスのインスタンス生成&runメソッド呼び出しから開始される。

WorkbenchAdvisor抽象クラスのサブクラスは,リッチクライアントの土台となるワークベンチへの各種設定を行うためのクラスである。例えば,デフォルトのパースペクティブを決定するのはWorkbenchAdvisorオブジェクトである。また,アプリケーションのライフサイクルを管理する役目も持つ。つまり,アプリケーションの動作中のさまざまなタイミングで,WorkbenchAdvisorオブジェクトの各種メソッドがコールバックされる。

前回「最低1つのパースペクティブを持つ」と解説した。その解説どおり,パースペクティブを準備するためにIPerspectiveFactoryインタフェースの実装クラスが必要となる

では順番にクラスを作成していく。まずは(1)から。

  public class SmileApplication implements IPlatformRunnable {
    public Object run(Object args) throws Exception {
      WorkbenchAdvisor advisor = new SmileWorkbenchAdvisor();
      Display display = PlatformUI.createDisplay();
      try {
        int ret = PlatformUI.createAndRunWorkbench(display, advisor);
        if (ret == PlatformUI.RETURN_RESTART) {
          return IPlatformRunnable.EXIT_RESTART;
        } else {
          return IPlatformRunnable.EXIT_OK;
        }
      } finally {
        display.dispose();
      }
    }
  }

IPlatformRunnableインタフェースで規定されているrunメソッドを実装する。runメソッド内では,最初にWorkbenchオブジェクトに対する設定を行うためのWorkbenchAdvisorオブジェクトのインスタンスを生成する。次に,PlatformUIクラスのcreateDisplayメソッドを使って,Displayオブジェクトを生成する。そしてこの2つのオブジェクトを使ってPlatformUIクラスのcreateAndRunWorkbenchメソッドを呼び出し,ワークベンチを開始する

ワークベンチが何らかの理由で終了されるまで,createAndRunWorkbenchメソッドはブロックされる。ワークベンチ終了後,createAndRunWorkbenchメソッドは,以下のいずれかの値を返してくる

  PlatformUI.RETURN_OK - 通常終了
  PlatformUI.RETURN_RESTART - 再起動要求による終了
  PlatformUI.RETURN_UNSTARTABLE - ワークベンチ開始失敗
  PlatformUI.RETURN_EMERGENCY_CLOSE - 異常終了

runメソッドの戻り値は,IPlatformRunnableインタフェースに定義された定数(EXIT_OK,EXIT_RESTART,EXIT_RELAUNCH)のどれかである。上記のコードでは,createAndRunWorkbenchメソッドの戻り値がPlatformUI.RETURN_RESTARTだった場合はIPlatformRunnable.EXIT_RESTARTを,そうでない場合はIPlatformRunnable.EXIT_OKをrunメソッドの戻り値として返却している。

ワークベンチが終了したからといってDisplayオブジェクトが破棄されるわけではないので,必ずDisplayオブジェクトのdisposeメソッドを後始末として呼び出すようにする。

次に,(2)のWorkbenchAdvisorサブクラス。

  public class SmileWorkbenchAdvisor extends WorkbenchAdvisor {
    public String getInitialWindowPerspectiveId() {
      return "yoichiro.rcp.smile.SmilePerspective";
    }
  }

WorkbenchAdvisorクラスのサブクラスでは,最低限getInitialWindowPerspectiveIdメソッドを実装することが求められる。getInitialWindowPerspectiveIdメソッドは,ワークベンチに必要となるパースペクティブのIDの文字列を返却する

最後に(3)のIPerspectiveFactoryインタフェースの実装クラスを以下に示す。

  public class SmilePerspective implements IPerspectiveFactory {
    public void createInitialLayout(IPageLayout layout) {
    }
  }

ホントはcreateInitialLayoutメソッド内でビューやエディタなどを組み立てる必要があるが,今回は最低限のアプリケーションなので,何も行わない。

以上でクラスの作成は終了。これによるアプリケーションは単にウィンドウが開くだけなのだが,思ったよりも簡単だと思われるのではないだろうか。次回は,このリッチクライアント・アプリケーションの実行方法を紹介する予定。

|

« 最初のリッチクライアント(1) - プラグイン・マニフェストの作成 | トップページ | 最初のリッチクライアント(3) - デバッガで実行 »

コメント

コメントを書く



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




トラックバック

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

この記事へのトラックバック一覧です: 最初のリッチクライアント(2) - クラスの作成:

« 最初のリッチクライアント(1) - プラグイン・マニフェストの作成 | トップページ | 最初のリッチクライアント(3) - デバッガで実行 »