Eclipseのプラグインを勉強しているついでに、Eclipse3.0で導入されたRCPを使ってみました。RCPとはEclipseベース(ワークベンチベースっていったほうがいいかもしんない)のアプリケーションを作成するためのフレームワークです。今まではプラグインを作って、Eclipseにプラグインしてたわけですが、プラグインが単体で稼働するようになったと考えればよいと思います。 前々からEclipseをベースにして、開発ツール(WebSphereStudio?みたいなパターン)だけでなく普通のアプリケーションもこの上で構築できるんでないのってかんがえてたんですが、まさにそのためのフレームワークみたいですね。
手順はプラグインを作るのと基本的に一緒です。必ず作らなくちゃいけないモノは
です。
IPlatformRunnable? の実装クラスはrunメソッドをオーバーライドすればよいようです。たぶんおきまりで、こんな感じ。
public Object run(Object args) throws Exception { // WorkbenchAdvisorの作成 WorkbenchAdvisor advisor = new SampleWorkbenchAdvisor(); Display display = PlatformUI.createDisplay(); try { int ret = PlatformUI.createAndRunWorkbench(display, advisor); if (ret == PlatformUI.RETURN_RESTART) { return IPlatformRunnable.EXIT_RESTART; } else { return IPlatformRunnable.EXIT_OK; } } finally { display.dispose(); } }
ワークベンチ(ウィンドウとか、外枠、みたいなイメージ)を構築する設定を行います。RCPアプリケーションはパースペクティブを一つ持つのですが、そのパースペクティブID(plugin.xmlで指定したID)を返すメソッドをオーバーライドします。
public String getInitialWindowPerspectiveId() { return "nu.mine.kino.sample.SamplePerspectiveFactory"; }
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のビューをパースペクティブにセット、の意味)
org.eclipse.ui org.eclipse.core.runtimeを追加。
org.eclipse.ui.perspectives org.eclipse.core.runtime.applicationsです。org.eclipse.core.runtime.applications はIdを指定するのを忘れないようにしましょう。
nu.mine.kino.sample.SampleApplication nu.mine.kino.sample.SamplePerspectiveFactoryというID/Class名のクラスを作成しました。最終的にplugin.xmlの内容は以下のようになりました。
<?xml version="1.0" encoding="UTF-8"?> <?eclipse version="3.0"?> <plugin id="nu.mine.kino.sample" name="Sample プラグイン" version="1.0.0" provider-name=""> <runtime> <library name="sample.jar"> <export name="*"/> </library> </runtime> <requires> <import plugin="org.eclipse.ui"/> <import plugin="org.eclipse.core.runtime"/> </requires> <extension id="SampleApplication" point="org.eclipse.core.runtime.applications"> <application> <run class="nu.mine.kino.sample.SampleApplication"/> </application> </extension> <extension point="org.eclipse.ui.perspectives"> <perspective class="nu.mine.kino.sample.SamplePerspectiveFactory" name="サンプル・パースペクティブ" id="nu.mine.kino.sample.SamplePerspectiveFactory"/> </extension> </plugin>
最終的に以下のファイルができあがりました。
いよいよ実行します。ランタイムワークベンチを作成して、プラグインを起動するようにやればよいのですが、ポイントは実行するプログラムを自分が作成した、IPlatformRunnable? の実装クラスにすることです。
また、プラグインおよびフラグメントタブ内で、自分が作成したプラグインと依存しているプラグインだけにチェックを入れておきます*1。
以上でランタイムワークベンチを起動すると、何にもビューを配置していない空のアプリケーションが起動しました!!
コンソールに"nu.mine.nu.sample.SampleView?"なんてビューねえよって出てますが、作ってないですからね。拡張ポイントから拡張してビューを作れば表示されました。。
EclipseのサイトにBranding your applicationという記事が出ていました。ようするにEclipseベースのRCPアプリケーションにスプラッシュスクリーンを追加したり、独自のアイコンのExeファイルを作成したり、〜についてなどというバージョン表示のダイアログを追加するなど、製品アプリケーションのようにするための方法を説明しています。
さてorg.eclipse.core.runtime.applications 拡張ポイントでアプリケーションを作成しましたが、上のような様々な機能を追加するにはapplications拡張ポイントに加え、更に別の拡張ポイント、org.eclipse.core.runtime.products拡張ポイントを使用します。
<extension id="product" <-このIDを指定しないと、使えない!注意!! point="org.eclipse.core.runtime.products"> <product name="%productName" application="nu.mine.kino.sample.SampleApplication"> ↑[プラグインのID].[org.eclipse.core.runtime.applicationsポイントのid属性] </extension>
あとはpropertyタグでさまざまなプロパティを設定することで機能を追加していきます。設定できるプロパティ値はRCPをBrandingするときに使うプロパティ値やRCPの製品情報などの画面を追加するを参照してください。
この記事は