TOP設計・移行・活用> はじめに




Eclipse RCP
Eclipseで実現するリッチクライアントの世界

第3回:アプリケーションを実際に作ってみる(後編)
著者:ビーブレイクシステムズ  横井 朗   2005/9/26
1   2  3  次のページ
はじめに

   こんにちは。ビーブレイクシステムズの横井です。今回は前回に引き続き、サンプルアプリケーションを作成します。前回でプラグイン・マニフェストファイルの編集までが完了しましたので、今回は必要なクラスを拡張ポイントのルールにしたがって実装していきます。
拡張ポイントに必要なクラスの実装

   今回作成するアプリケーションでは、表1の5つのクラスを作成する必要があります。

項番 パッケージ クラス名 概要
1 sample SimpleBrowserRunnable IPlatformRunnableの実装クラスで、アプリケーションの起動処理を実装します
2 sample SimpleBrowserWorkbenchAdvisor WorkbenchAdvisorのサブクラスで、ワークベンチの各種設定を実装します
3 sample SimpleBrowerPerspective IPerspectiveFactoryの実装クラスで、パースペクティブの各種設定を実装します
4 sample.views BrowerView ViewPartのサブクラスで、Web表示のビューを実装します
5 sample.views FavoriteView ViewPartのサブクラスで、お気に入りツリーを表示するビューを実装します

表1:実装クラス一覧

   表1のクラスのうち、2の"SimpleBrowserWorkbenchAdvisor"以外は「拡張」タブから対象の要素を選択し、「プロパティ:class」のリンクをクリックすることで、クラスの雛形が生成できます。

クラスの雛形の作成
図1:クラスの雛形の作成
(画像をクリックすると別ウィンドウに拡大図を表示します)

   "SimpleBrowserRunnable"では"IPlatformRunnable"の実装クラスで、アプリケーションの起動処理を記述します。

SimpleBrowserRunnable
package sample;

import org.eclipse.core.runtime.IPlatformRunnable;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.PlatformUI;

⁄**
 * Eclipse RCPのアプリケーションのメインクラス
 *⁄
public class SimpleBrowserRunnable implements IPlatformRunnable {

    ⁄**
     * アプリケーションの起動処理
     *⁄
    public Object run(Object args) throws Exception {
        ⁄⁄ 使用するWorkbenchAdvisorの生成         SimpleBrowserWorkbenchAdvisor workbenchAdvisor = new
        SimpleBrowserWorkbenchAdvisor();
        Display display = PlatformUI.createDisplay();
        try {
            ⁄⁄ ワークベンチの起動
            int returnCode = PlatformUI.createAndRunWorkbench(display,
                    workbenchAdvisor);
            if (returnCode == PlatformUI.RETURN_RESTART) {
                return IPlatformRunnable.EXIT_RESTART;
            } else {
                return IPlatformRunnable.EXIT_OK;
            }
            } finally {
            display.dispose();
            }
    }
}
   "SimpleBrowserWorkbenchAdvisor"ではワークベンチで使用するパースペクティブID/タイトルなどワークベンチの設定を記述します。こちらのクラスは雛形の生成はできないため通常のクラスと同様に新規クラスとして作成します。

SimpleBrowserWorkbenchAdvisor
package sample;

import org.eclipse.swt.graphics.Point;
import org.eclipse.ui.application.IWorkbenchWindowConfigurer;
import org.eclipse.ui.application.WorkbenchAdvisor;

⁄**
 * ワークベンチの各種設定を行うクラス
 *⁄
public class SimpleBrowserWorkbenchAdvisor extends WorkbenchAdvisor {

    ⁄**
     * 初期表示するパースペクティブIDの取得
* ここで指定するパースペクティブIDは拡張ポイントとして定義したときのIDと一致させる必要がある
     *⁄
    public String getInitialWindowPerspectiveId() {
        return "SimpleBrowserPerspective";
    }

    ⁄**
     * ワークベンチの初期設定
     *⁄
     public void preWindowOpen(IWorkbenchWindowConfigurer configurer) {
        super.preWindowOpen(configurer);
        ⁄⁄ タイトル設定
        configurer.setTitle("Eclipse RCPサンプルアプリケーション");
        ⁄⁄ クールバーの非表示
        configurer.setShowCoolBar(false);
        ⁄⁄ 初期ウィンドウサイズ
        configurer.setInitialSize( new Point(600, 400));
    }
}
   "SimpleBrowserPerspective"ではワークベンチで使用するパースペクティブの初期レイアウトを記述します。今回のアプリケーションでは、左側にお気に入りのツリーメニューのビュー、右側にブラウザビューを設定します。

SimpleBrowserPerspective
package sample;

import org.eclipse.ui.IFolderLayout;
import org.eclipse.ui.IPageLayout;
import org.eclipse.ui.IPerspectiveFactory;

⁄**
 * パースペクティブのFactoryクラス
 *⁄
public class SimpleBrowserPerspective implements IPerspectiveFactory {

    ⁄**
     * パースペクティブの初期レイアウトを定義する
     *⁄
    public void createInitialLayout(IPageLayout layout) {
        layout.setEditorAreaVisible(false);
        String editorArea = layout.getEditorArea();

        ⁄⁄ エディタ領域の左20%を占めるフォルダを作成し、お気に入り表示ビューを追加
        IFolderLayout leftFolder = layout.createFolder("left",
                IPageLayout.LEFT, (float) 0.3f, editorArea);
        leftFolder.addView("sample.views.FavoriteView");
        ⁄⁄ エディタ領域の右80%を占めるフォルダを作成し、Webサイト表示ビューを追加
        IFolderLayout rightFolder = layout.createFolder("right",
                IPageLayout.RIGHT, (float) 0.7f, editorArea);
        rightFolder.addView("sample.views.BrowserView");
    }
}
   "BrowerView"は指定されたURLをブラウザで表示するビューを作成します。SWTではHTMLを表示可能なBrowserヴィジットが提供されているため、以下のように非常にシンプルな記述でブラウザ機能を実現できます。

BrowerView
package sample.views;

import org.eclipse.swt.SWT;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.part.ViewPart;

⁄**
 * Webサイトを表示するブラウザのビュー
 *⁄
public class BrowserView extends ViewPart {
    private Browser browser;

    ⁄**
     * ビューの初期化
     *⁄
    public void createPartControl(Composite parent) {
        browser = new Browser(parent,SWT.BORDER);
        browser.setUrl("http://www.thinkit.co.jp");
    }

    ⁄**
     * 表示するURLの設定
     *⁄
    public void setURL(String url){
        browser.setUrl( url);
    }

    ⁄**
     * ビューにフォーカスが当った際の処理を記述する
     *⁄
    public void setFocus() {
    }
}
   "FavoriteView"ではサンプルのツリー・ビューアーを変更して、お気に入りを表示するツリーを作成します。ここではお気に入りメニューに表示するアイテムの設定と、ツリーのダブルクリック時の処理を記述します。

FavoriteView
⁄*
 *ツリーに初期表示するデータを設定
 *⁄
private void initialize() {
    TreeObject javaWorld = new TreeObject("ThinkIT");
    TreeParent newsGroup = new TreeParent("ニュース");
    TreeObject asahi = new TreeObject("朝日新聞");
    TreeObject nikkei = new TreeObject("日経新聞");
    TreeObject cnn = new TreeObject("CNN");
    newsGroup.addChild(cnn);
    newsGroup.addChild(nikkei);
    newsGroup.addChild(asahi);

    invisibleRoot = new TreeParent("");
    invisibleRoot.addChild(javaWorld);
    invisibleRoot.addChild(newsGroup);
}

⁄⁄ ダブルクリック時のアクションを設定
doubleClickAction = new Action() {
    public void run() {
        ISelection selection = viewer.getSelection();
        TreeObject obj = (TreeObject) ((IStructuredSelection)
        selection).getFirstElement();

        String objectName = obj.getName();
        String url = null;
        ⁄⁄ 選択された名称に応じて、URLを決定
        if (objectName.equals("ThinkIT")) {
            url = "http://www.thinkit.co.jp";
        } else if (objectName.equals("朝日新聞")) {
            url = "http://www.asahi.com";
        } else if (objectName.equals("日経新聞")) {
            url = "http://www.nikkei.co.jp/";
        } else if (objectName.equals("CNN")) {
            url = "http://www.cnn.co.jp/";
        }

        if (url != null) {
            try {
                IWorkbench workbench = PlatformUI.getWorkbench();
                IWorkbenchWindow window =
                workbench.getActiveWorkbenchWindow();
                IWorkbenchPage workBenchPage = window.getActivePage();

                ⁄⁄ IDを指定してビューを開く
                BrowserView viewPart = (BrowserView)                 workBenchPage.showView("sample.views.BrowserView");
                ⁄⁄ ビューにURLを設定
                viewPart.setURL(url);
            } catch (PartInitException e) {
                e.printStackTrace();
            }
        }
    }
};
1   2  3  次のページ


ビーブレイクシステムズ
著者プロフィール
株式会社ビーブレイクシステムズ  横井 朗  
オープンソース指向技術コンサルタント。Java専門のソフトウェアハウス〜フリーエンジニアを経て現職。帳票開発のみならず、オープンソースを用いたシステム構築を日々提案。なによりもお客様の真のニーズを求めるため社内外でオープンソースに関する啓蒙活動を行う。


この記事の評価をお聞かせください
ボタンをクリックしますとウインドウが開きます。

INDEX
第3回:アプリケーションを実際に作ってみる(後編)
はじめに
  プラグインを実行・テストする
  配布用にまとめる
Eclipseで実現するリッチクライアントの世界
第1回 他とは異なるEclipse RCPの特徴
第2回 アプリケーションを実際に作ってみる(前編)
第3回 アプリケーションを実際に作ってみる(後編)
第4回 アプリケーションの配布
関連記事 : Biz/Browserで経営の効率化を実現する
第1回 リッチクライアントとBiz/Browser
第2回 Biz/Browserの運用事例
第3回 「Biz/Browser」の機能紹介
第4回 「Biz/Browser」の機能による生産性の向上
第5回 「Biz/Browser」の「昨日」「今日」「明日」
関連記事 : IdbAで構築する生産性が高いリッチクライアント
第1回 Rimless Computingとは?
第2回 リッチクライアントとIdbA
第3回 コンポーネントの開発事例
第4回 これからのリッチクライアント
第5回 開発生産性を向上するIdbA R2.0と、その方向性
関連記事 : リッチクライアントCurlの特徴と導入実態
第1回 リッチクライアントの発展とCurl
第2回 ドキュメントを活用したCurlアプリケーションの開発
第3回 Curlアプリケーションの公開
第4回 Curlの適用事例(前編)
第5回 Curlの適用事例(後編)
関連記事 : リッチクライアントの現状と今後の動向
第1回 リッチクライアントとは
第2回 リッチクライアントの市場調査結果
第3回 リッチクライアントの適用事例
第4回 リッチクライアント製品/技術動向
第5回 リッチクライアントの将来