#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.nu.sample.SampleView", IPageLayout.TOP,
       IPageLayout.RATIO_MAX, IPageLayout.ID_EDITOR_AREA);
 }
("nu.mine.nu.sample.SampleView"というIDのビューをパースペクティブにセット、の意味)

これらはだいたい初回のウィザードで自動生成されます。


**実際にやってみる。 [#a91800cf]
-新規 >> プラグイン・プロジェクト を選択。
-プロジェクト名に nu.mine.kino.plugin.samples.rcp と入れて「次へ」をクリック

#ref(01.png)

#ref(02.png)

#ref(03.png)

#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アプリケーションは以下よりダウンロードできます。

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)







***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;}

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS