 |

|
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専門のソフトウェアハウス〜フリーエンジニアを経て現職。帳票開発のみならず、オープンソースを用いたシステム構築を日々提案。なによりもお客様の真のニーズを求めるため社内外でオープンソースに関する啓蒙活動を行う。
|
|
|
|