#topicpath ---- #contents **概要 [#o7544816] :2010/01/17|注記 かつて Eclipse/プラグイン開発のTIPS集/RCP のページを書きましたが、Eclipseも3.5になりRCP開発もいろいろと便利になりました。そこでいくつか内容をUpdateして3.5向けに書き直してみました。 Eclipseのプラグインを勉強しているついでに、Eclipse3.0で導入されたRCPを使ってみました。RCPとはEclipseベース(ワークベンチベースっていったほうがいいかもしんない)のアプリケーションを作成するためのフレームワークです。今まではプラグインを作って、Eclipseにプラグインしてたわけですが、プラグインが単体で稼働するようになったと考えればよいと思います。 前々からEclipseをベースにして、開発ツール(Rational Application Developer みたいなパターン)だけでなく普通のアプリケーションもこの上で構築できるんでないのってかんがえてたんですが、まさにそのためのフレームワークみたいですね。 手順はプラグインを作るのと基本的に一緒です。必ず作らなくちゃいけないモノは -org.eclipse.equinox.app.IApplication の実装クラス(実際のアプリケーションになります) -org.eclipse.ui.application.WorkbenchAdvisor のサブクラス(パースペクティブの指定の設定をします) -org.eclipse.ui.application.WorkbenchWindowAdvisor のサブクラス(ワークベンチの設定をします) -org.eclipse.ui.application.ActionBarAdvisor のサブクラス(メニューバーを構築します) -org.eclipse.ui.IPerspectiveFactory の実装クラス(パースペクティブを構築します) です。 ***IApplication の実装クラス [#b94cc5a5] IApplication の実装クラスはstartメソッドをオーバーライドすればよいようです。だいたいおきまりで、こんな感じ。 public Object start(IApplicationContext context) throws Exception { Display display = PlatformUI.createDisplay(); try { int returnCode = PlatformUI.createAndRunWorkbench(display, new ApplicationWorkbenchAdvisor()); if (returnCode == PlatformUI.RETURN_RESTART) return IApplication.EXIT_RESTART; else return IApplication.EXIT_OK; } finally { display.dispose(); } } ***WorkbenchAdvisor のサブクラス [#q9c8adec] RCPアプリケーションはパースペクティブを一つ以上持つのですが、そのデフォルトのパースペクティブID(plugin.xmlで指定したID)を返すメソッドをオーバーライドします。 private static final String PERSPECTIVE_ID = "nu.mine.kino.plugin.samples.rcp.perspective"; public String getInitialWindowPerspectiveId() { return PERSPECTIVE_ID; } ***WorkbenchWindowAdvisor のサブクラス [#x3fdd5f4] ワークベンチ(ウィンドウとか、外枠、みたいなイメージ)を構築する設定を行います。RCPのアプリケーション起動時に呼び出されるメソッドで、起動時のウィンドウサイズやツールバーを出すかなどの設定を行います。 public void preWindowOpen() { IWorkbenchWindowConfigurer configurer = getWindowConfigurer(); configurer.setInitialSize(new Point(400, 300)); configurer.setShowCoolBar(false); configurer.setShowStatusLine(false); } ***IPerspectiveFactory の実装クラス [#a223583c] RCPアプリケーションで使用するパースペクティブを構築します。たとえばこんな感じ。 public void createInitialLayout(IPageLayout layout) { layout.addView("nu.mine.kino.plugin.samples.rcp.view1", IPageLayout.TOP, IPageLayout.RATIO_MAX, IPageLayout.ID_EDITOR_AREA); } ("nu.mine.kino.plugin.samples.rcp.view1"というIDのビューをパースペクティブにセット、の意味) これらはだいたい初回のウィザードで自動生成されます。 **実際にやってみる。 [#a91800cf] -新規 >> プラグイン・プロジェクト を選択。 -プロジェクト名に nu.mine.kino.plugin.samples.rcp と入れて「次へ」をクリック #ref(01.png) 下記の通り入力して次へ #ref(02.png) サンプルのテンプレートに「Hello RCP」を選択して次へ #ref(03.png) 最後に「Add branding」を選択して、終了。 #ref(04.png) ウィザードに従って作成するだけで下記のようなplugin.xmlが自動生成されます。 <?xml version="1.0" encoding="UTF-8"?> <?eclipse version="3.4"?> <plugin> <extension id="application" point="org.eclipse.core.runtime.applications"> <application> <run class="nu.mine.kino.plugin.samples.rcp.Application"> </run> </application> </extension> <extension point="org.eclipse.ui.perspectives"> <perspective name="RCP Perspective" class="nu.mine.kino.plugin.samples.rcp.Perspective" id="nu.mine.kino.plugin.samples.rcp.perspective"> </perspective> </extension> <extension id="product" point="org.eclipse.core.runtime.products"> <product application="nu.mine.kino.plugin.samples.rcp.application" name="Hello RCP"> <property name="windowImages" value="icons/alt_window_16.gif,icons/alt_window_32.gif"> </property> </product> </extension> </plugin> ここまで作成したRCPアプリケーションは以下よりダウンロードできます。 [[ソースコード(ViewVC)>http://www.masatom.in/viewvc/Examples/branches/V20100117_01/nu.mine.kino.plugin.samples.rcp/?pathrev=150]] ***いよいよ実行 [#t2852cf9] いよいよ実行します。マニフェストエディタの「Launch an Eclipse application」 をクリックします。 #ref(05.png) 何にもビューを配置していない空のアプリケーションが起動しました!! #ref(06.png) **ビューをパースペクティブに配置する [#e9041247] 次にビューを作成し、そのビューを先ほど自動生成されたパースペクティブに配置します。 ***まずはビューを作成 [#mde49524] まずはビューの定義です。プラグインのマニフェストエディタの「Extensions」タブより「Add...」を押下して拡張ポイントの定義を追加します。拡張ポイントは「org.eclipse.ui.views」を選択し「Finish」を押下します。 #ref(07.png) さらに エディタのorg.eclipse.ui.views を右クリックし、view を選択してビューを追加します。 #ref(08.png) マニフェストエディタにビューが追加されるので、エディタの右側のところで下記の通り入力します。 #ref(09.png) 次にビュークラスを作成するのですが、上記の「class*:」をクリックするとクラスを作成するダイアログが立ち上がります。とりあえずデフォルト値で「Finish」siteクラスを作成しておきます。 ***次にパースペクティブにビューを追加 [#ucda6805] 次に、既存のパースペクティブのクラス(nu.mine.kino.plugin.samples.rcp.Perspective)に先のビューを追加します。 public class Perspective implements IPerspectiveFactory { public void createInitialLayout(IPageLayout layout) { layout.setEditorAreaVisible(false); layout.addView("nu.mine.kino.plugin.samples.rcp.view1", IPageLayout.LEFT, 0.5f, IPageLayout.ID_EDITOR_AREA); } } 以上で完成です。またまたマニフェストエディタから「Launch an Eclipse application」を選択すると、下記のようにビューが追加されました。 #ref(10.png) ここまでのソースコードは以下よりダウンロードできます。 [[ソースコード(ViewVC)>http://www.masatom.in/viewvc/Examples/branches/V20100117_01/nu.mine.kino.plugin.samples.rcp/?pathrev=151]] ***メニューバーを配置する [#x8e1e39a] **products拡張ポイントについて [#v89ca80d] Eclipseのサイトに[[Branding your application:http://www.eclipse.org/articles/Article-Branding/branding-your-application.html]]という記事が出ていました。ようするにEclipseベースのRCPアプリケーションにスプラッシュスクリーンを追加したり、独自のアイコンのExeファイルを作成したり、?についてなどというバージョン表示のダイアログを追加するなど、製品アプリケーションのようにするための方法を説明しています。 さてorg.eclipse.core.runtime.applications 拡張ポイントでアプリケーションを作成しましたが、上のような様々な機能を追加するにはapplications拡張ポイントに加え、更に別の拡張ポイント、org.eclipse.core.runtime.products拡張ポイントを使用します。 <extension id="product" point="org.eclipse.core.runtime.products"> <product application="nu.mine.kino.plugin.samples.rcp.application" name="Hello RCP"> <property name="windowImages" value="icons/alt_window_16.gif,icons/alt_window_32.gif"> </property> </product> </extension> あとはpropertyタグでさまざまなプロパティを設定することで機能を追加していきます。設定できるプロパティ値は[[RCPをBrandingするときに使うプロパティ値>Eclipse/プラグイン開発のTIPS集/RCPをBrandingするときに使うプロパティ値]]や[[RCPの製品情報などの画面を追加する>Eclipse/プラグイン開発のTIPS集/RCPの製品情報などの画面を追加する]]を参照してください。 ---- この記事は #vote(おもしろかった,そうでもない) #topicpath SIZE(10){現在のアクセス:&counter;}