eclipse.orgが打ち出すRIAプラットフォーム「Eclipse RAP」(Java Traveler 第2回補足)

この記事を読むのに必要な時間:およそ 5.5 分

Activatorクラスの修正

情報入力ビューで入力された情報(つまり名前と年齢)をActivatorクラスのインスタンス内で保持し,それが情報一覧ビューに反映されるようにします。

Activatorクラスは,Eclipseのプラグインの中で中心的な位置づけのクラスです。Eclipseが起動して該当プラグインが必要となったとき(提供しているビューが使われるときなど)に,インスタンスがEclipseのコアプラグインによって自動的に生成され,管理されます。ほとんどの場合,プラグイン1つに対してActivatorクラスやそのインスタンスが1つ存在します。つまり,あるプラグイン内で情報を一元管理したい場合は,Activatorクラスのインスタンスに持たせると都合がよくなります。

今回の題材では,Activatorクラスにリスト4の内容を追記します。文字列を格納するコレクションを用意し,addPerson( )メソッドの呼び出し時に,Viewビューの参照をgetView( )メソッドで獲得し,後述するrefresh( )メソッドを呼び出して一覧を更新しています。

リスト4 Activatorクラスへの追加

private List people = new ArrayList();

public String[] getPeople() {
    return people.toArray(new String[0]);
}

public void addPerson(String person) {
    people.add(person);
    getView().refresh();
}

private View getView() {
    IViewReference[] viewReferences =
        PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getViewReferences();
    for (IViewReference viewReference : viewReferences) {
        if (viewReference.getId().equals(View.ID)) {
            return (View)viewReference.getView(true);
        }
    }
    throw new RuntimeException();
}

Viewクラスの修正

最後に,情報一覧ビューのコンテンツとして,Activatorクラスに定義した文字列のコレクションが反映されるように修正します。これは,refresh( )メソッドの追加と,プロジェクトの作成時にすでに作られているViewクラスの35行目付近にあるgetElements( )メソッドの内容を変更するだけですリスト5⁠。

リスト5 Viewクラスの変更

・変更前
public Object[] getElements(Object parent) {
    return new String[] { "One", "Two", "Three" };
}

リスト5 Viewクラスの変更

・変更後
public Object[] getElements(Object parent) {
    return Activator.getDefault().getPeople();
}

リスト5 Viewクラスの変更

・追加
public void refresh() {
    viewer.refresh();
}

Activatorクラスのインスタンスを取得し,先ほど追加したgetPeople( )メソッドを呼び出して情報一覧を得ています。これにより,JFaceのTableViewerコンポーネントに情報一覧が反映されるようになります。自動的には反映されないので,refresh( )メソッドの中でTableViewerコンポーネントのrefresh( )メソッドを呼び出してコンテンツの更新を明示的に行っています。

このrefresh( )メソッドは,ActivatorクラスのaddPerson( )メソッドで呼んでいるものでしたね。つまり,Webブラウザ上で[追加]ボタンが押されたときには,最終的にこのrefresh( )メソッドが呼び出されて,自動的に一覧が更新されます。

まとめ

Eclipse RAPを使えば,JavaScriptやHTMLなどでのWebアプリケーションに関するコーディングなしにRIAアプリケーションを開発できることがわかっていただけたと思います。SWTやJFaceが提供してくれるコンポーネントは,業務アプリケーションを作る上で非常に強力です。Eclipseプラグインを開発したことのある方はもちろん,そうでない方にとってもSWTやJFaceはシンプルなAPIとなっているので,手軽にUIを構築するコードを書けます。

なお,RAP SDKをインストールすると,Eclipse RAPに関するより詳しい情報がヘルプに追加されます図7⁠。ここには,Googleマップを表示するカスタムコンポーネントの作り方や,作成したEclipse RAPアプリケーションをWARファイルとしてデプロイするための手順などが説明されています。よりリッチでRIAらしいアプリケーションを開発する際には,非常に参考になる情報です。

図7 Eclipse RAPのヘルプ

図7 Eclipse RAPのヘルプ

著者プロフィール

田中洋一郎(たなかよういちろう)

株式会社ミクシィ所属。Google API Expert (OpenSocial)。Mash up Award 3rd 3部門同時受賞。書籍「OpenSocial入門」を出版。

URL:http://www.eisbahn.jp/yoichiro

著書

バックナンバー

java

  • eclipse.orgが打ち出すRIAプラットフォーム「Eclipse RAP」(Java Traveler 第2回補足)