概要

Eclipseのプラグインを勉強しているついでに、Eclipse3.0で導入されたRCPを使ってみました。RCPとはEclipseベース(ワークベンチベースっていったほうがいいかもしんない)のアプリケーションを作成するためのフレームワークです。今まではプラグインを作って、Eclipseにプラグインしてたわけですが、プラグインが単体で稼働するようになったと考えればよいと思います。 前々からEclipseをベースにして、開発ツール(WebSphereStudio?みたいなパターン)だけでなく普通のアプリケーションもこの上で構築できるんでないのってかんがえてたんですが、まさにそのためのフレームワークみたいですね。

手順はプラグインを作るのと基本的に一緒です。必ず作らなくちゃいけないモノは

  • org.eclipse.core.runtime.IPlatformRunnable? の実装クラス(実際のアプリケーションになります)
  • org.eclipse.ui.application.WorkbenchAdvisor? のサブクラス(ワークベンチの設定をします)
  • org.eclipse.ui.IPerspectiveFactory? の実装クラス(パースペクティブを構築します)

です。

IPlatformRunnable? の実装クラス

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();
  }
}

WorkbenchAdvisor? のサブクラス

ワークベンチ(ウィンドウとか、外枠、みたいなイメージ)を構築する設定を行います。RCPアプリケーションはパースペクティブを一つ持つのですが、そのパースペクティブID(plugin.xmlで指定したID)を返すメソッドをオーバーライドします。

public String getInitialWindowPerspectiveId() {
  return "nu.mine.kino.sample.SamplePerspectiveFactory";
}

IPerspectiveFactory? の実装クラス

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のビューをパースペクティブにセット、の意味)

実際にやってみる。

  • 新規 >> プラグイン・プロジェクト を選択。
  • プロジェクト名に nu.mine.kino.sample と入れて「次へ」をクリック
01.png
02.png
  • plugin.xmlのエディタが起動するので、Dependenciesで
    org.eclipse.ui
    org.eclipse.core.runtime
    を追加。
  • Extensionsで使用する拡張ポイントを追加。追加する拡張ポイントは
    org.eclipse.ui.perspectives
    org.eclipse.core.runtime.applications
    です。org.eclipse.core.runtime.applications はIdを指定するのを忘れないようにしましょう。
    04.png
  • 上の拡張ポイントに追加したapplicationやperspectiveの具象クラスを作成します。エディタからclass*:をクリックするとテンプレートを作成してくれます。ここでは
    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>
  • プラグインエディタから作成したクラス2つに上で書いた内容を(とりあえず)記述します。またWorkbenchAdvisor?のサブクラスも自分で作成し、上のメソッドをオーバーライドしておきます。

最終的に以下のファイルができあがりました。

いよいよ実行

いよいよ実行します。ランタイムワークベンチを作成して、プラグインを起動するようにやればよいのですが、ポイントは実行するプログラムを自分が作成した、IPlatformRunnable? の実装クラスにすることです。

05.png

また、プラグインおよびフラグメントタブ内で、自分が作成したプラグインと依存しているプラグインだけにチェックを入れておきます*1

06.png

以上でランタイムワークベンチを起動すると、何にもビューを配置していない空のアプリケーションが起動しました!!

07.png

コンソールに"nu.mine.nu.sample.SampleView?"なんてビューねえよって出てますが、作ってないですからね。拡張ポイントから拡張してビューを作れば表示されました。。

products拡張ポイントについて

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の製品情報などの画面を追加するを参照してください。


この記事は

選択肢 投票
おもしろかった 25  
そうでもない 3  

現在のアクセス:21017


*1 すべてを非選択にして、自分のプラグインを選択、でAdd Required Plug-insをクリック

添付ファイル: file06.png 1604件 [詳細] file07.png 1548件 [詳細] file05.png 1606件 [詳細] file04.png 1643件 [詳細] file03.png 848件 [詳細] file02.png 1536件 [詳細] file01.png 1552件 [詳細] fileSampleWorkbenchAdvisor.java 1632件 [詳細] fileSamplePerspectiveFactory.java 1676件 [詳細] fileSampleApplication.java 1743件 [詳細] fileplugin.xml 2057件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-12-14 (火) 11:32:22 (1091d)