SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

Eclipse RCPを好きなスクリプト言語で拡張する

JavaScript、AppleScript、Rubyなどを使ったEclipseの拡張

プラットフォームでスクリプトコントリビューションを活用する

 これで、次の段階に進む準備ができました。今度は、スクリプト言語を使用してEclipseプラットフォームを直接操作して変更する方法、そしてスクリプトを使ってプラットフォームにコントリビューションを追加する方法を見ていきましょう。まずは、スクリプトコントリビューションとプラットフォームとの間を結ぶバインディングレイヤーの定義が必要です。このレイヤーには、以下のものが含まれます。

  • 標準のビューコントリビューションの代わりとなる、標準のEclipse拡張ポイントを模倣する拡張ポイント(scriptedViewなど)。スクリプトから返されるEclipseビューを提供するために必要。
  • org.eclipse.ui.part.ViewPartなどの標準Eclipseインターフェイスを実装し、メソッド呼び出しを基幹スクリプトに委任するプロキシクラス。
  • org.eclipse.ui.startup拡張ポイントへの拡張。スタートアップ時にスクリプトコントリビューションとプラットフォームとの間のすべてのプラミングとバインディングを行う。

 JavaScript実装に支えられているEclipseビューの例を見てみます。図4は、この例のサイクル全体を表しています。これを見ると、構成/スタートアップ時に実行されるアクションと、実行時に実行されるアクションの違いがわかります(Eclipseアクションセットなど、他の種類のコントリビューションについては、サンプルコードを参照してください)。

図4 スクリプトコントリビューションの処理サイクル
図4 スクリプトコントリビューションの処理サイクル

 まず、次のコードを使用して、スクリプトコントリビューションを定義します。

<plugin>
   <extension
      point="com.devx.scripting.scriptedContribution">
      <scriptedView
         allowMultiple="false"
         id="com.devx.scripting.jsCalculator
         name="JavaScript Calculator">
         <script
            extension="js"
            id="com.devx.scripting.jsCalculator.script"
            uri="scripts/jsCalculator.js">
         </script>
      </scriptedView>
   </extension>
</plugin>

 この拡張は標準のorg.eclipse.ui.viewsと非常によく似ています。唯一異なるのは追加の<script>エレメントです。これは基幹スクリプトを定義します(uri属性は、プラグイン内のリソースまたは外部リソースを指定できます。プラグイン内のリソースの場合は関連URIを、外部リソースの場合はfile://スキームを使用します)。アプリケーションの起動時に、org.eclipse.ui.startup拡張ポイントとして登録されているcom.devx.scripting.ScriptingStartupクラスは、使用可能なスクリプトコントリビューションをスキャンし、これらのコントリビューションをIExtensionRegistry.addContribution()メソッドで動的にプラットフォームに追加します。なお、動的コントリビューションには特別な許可が必要です。この許可は、アプリケーション起動時に-Declipse.registry.nulltoken=trueコマンドラインを追加することで付与します。

 ScriptingStartupクラスは、スクリプトコントリビューションと、スクリプトのプロキシとして動作するコントリビューションとの間で変換を行います。リスト2は、変換プロセスに関連するgetContribution()メソッドです。

 おわかりのように、このコードはスクリプトコントリビューションをコピーして、それを標準のorg.eclipse.ui.viewsに変換するだけです。ビュー実装クラスであるcom.devx.scripting.view.ScriptProxyViewは、Eclipseプラットフォームによるビューへの呼び出しを基幹スクリプトに委任します。たとえば、次のコードは、スクリプトへのレンダリングプロセスの委任を示しており、これは、EclipseがcreatePartControl(Composite parent)を呼び出してビューを描画するときに実行されます。

scriptParent = new Composite(parent,SWT.NONE);
scriptParent.setLayoutData(new
   GridData(GridData.FILL_BOTH));
scriptParent.setLayout(new FillLayout(SWT.HORIZONTAL));

// this call returns the script associated with this view
IScript script = getScript();

Map<String,Object> params = new HashMap<String,Object>();
params.put("parent", scriptParent);
new ScriptSupport().runScript(script, params);

 これにより、スクリプトに対する変更がすぐに反映されるため(ビューを閉じて開くだけで確認できます)、開発者はユーザーインターフェイスのプロトタイプを短時間で作成できるようになります。

次のページ
JavaScriptを使った計算機のサンプル

この記事は参考になりましたか?

japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

japan.internet.com(ジャパンインターネットコム)

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Riccardo Govoni(Riccardo Govoni)

2003年からJ2EE開発者としてイタリアの金融サービス会社に勤務。ソフトウェアアーキテクトとして従来の銀行システムのWebフロントエンドの設計に従事。物理学修士。SCJP(Sun Certified Java Programmer)資格を持つ。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/1443 2007/07/03 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー