ユーザー・インターフェースのスクリプト記述

プラグインをスクリプト既述するプラットフォームによって、ユーザーは JavaScript を使用してさまざまなワークベンチ拡張を開発できます。  このサポートは、Rhino JavaScript エンジンを使用して提供されます。 ユーザーは、JavaScript を使用して以下をワークベンチに組み込むことができます。

以下の章は、読者に JavaScript、ワークベンチ拡張、および SWT の作業についての知識があることを前提にしています。

概念

スクリプトは、正規のプロジェクト・ファイルとしてワークベンチで管理されます。通常は、 ユーザー・スクリプトを保管するために独立したプロジェクトを作成します。 専門化されたエディターがスクリプトの編集用に提供されています。

プラットフォームがサポートするスクリプトは以下の 2 種類があります。

  1. バッチスクリプトは JavaScript を使用して、 さまざまなワークベンチ・オブジェクトでメソッドを呼び出し、結果を操作します。 これらのスクリプトは、基本ワークベンチ機能の一部とはなっていない、新規の反復の多いアクションの作成に非常に適しています。
  2. UI スクリプトは、スクリプト化された UI イベントを持つクライアント側 HTML ページと似ています。これらのスクリプトは、 ユーザーとのより密接な対話を必要とするスクリプトの作成に非常に適しています。
スクリプト書き込みプロセスは、ローカル JavaScript 変数として公開されているいくつかのプラットフォーム・オブジェクトによって、 ワークベンチ環境へのアクセスを取得します。 スクリプトは、JavaScript 機能を使用して、Java オブジェクトを作成し、そのメソッドを呼び出すこともできます。

スクリプトを含むファイルが一度作成されると、そのファイルは設定ダイアログによってワークベンチに登録できます (「ウィンドウ (Window)」->「設定 (Preferences)」->「スクリプト (Scripts)」と選択)。 設定ページのこのエントリーの拡張は、スクリプト記述可能なワークベンチ拡張ポイントのリストを表示します。  スクリプトは、設定ツリーで選択して、設定ページで対応する「追加 (Add)」ボタンを押すことで、それぞれの拡張ポイントに追加されます。 

ワークベンチは、各スクリプトの最初の登録時に、再始動する必要があります。 スクリプトは一度登録されると、変更が可能になり、ワークベンチを再始動せずに即座に実行できます。

スクリプトを実行中に検出されたすべてのエラーだけでなく、スクリプトからのすべてのコンソール出力は、 スクリプト・コンソールに書き込まれます。 スクリプト・コンソール・ビューは、他のすべてのパースペクティブに追加可能です。または、 スクリプト記述パースペクティブ (デフォルトでコンソール・ビューを含む) から、 常にユーザー・スクリプトを実行できます。

スクリプトの制限

ワークベンチに追加されるスクリプトは、以下のプラグインで定義された API メソッドのみをアクセスします。

将来のリリースでは、任意のプラグインがスクリプト可能なように、この制約はなくなる予定です。

バッチ・スクリプトの作成

"バッチ"・スクリプトは、その API メソッドを起動して、 結果を操作することでプラットフォーム・オブジェクトで作業を行う、単なる JavaScript ステートメントの集合です。 スクリプト書き込みプロセスに公開されたプラットフォーム・オブジェクトは、以下の 3 つがあります。
  1. ツールキット - org.eclipse.scripting.IToolkit をインプリメントするユーティリティー・オブジェクト。このオブジェクトは、 基本的なワークスペース・リソース操作、プロンプトの発行、および永続スクリプト状態のロードを行う便利なメソッドを提供します。
  2. プラグイン - org.eclipse.core.runtime.Plugin のデフォルト・インスタンス。 このインスタンスは、プラグイン・メソッドへのアクセスを提供します。すべてのユーザー・スクリプトは、 プラットフォーム・スクリプト・サポートが管理する単一プラグインの一部として実行されます。
  3. プラットフォーム - org.eclipse.core.runtime.Platform に対応する、 メソッドを持つ便利なオブジェクト。このオブジェクトは、汎用プラットフォーム機能にアクセスします。
メソッド toolkit.print(String) は、出力のスクリプト・コンソールへの書き込みに使用します。

事前定義されたローカル変数だけでなく、JavaScript 言語によって、 ユーザーは Java オブジェクトを作成して、その共用 API を使用できます。 JavaScript プロパティー、Packages は、この目的で使用できます。  以下のコードの断片は、Packages プロパティーを使用して、 インストール URL およびスプラッシュ ・ビットマップ・オブジェクトを取得します。

 

var install = Packages.org.eclipse.core.boot.BootLoader.getInstallURL();
var splash = new Packages.java.net.URL(install,"splash.bmp");

ユーザー・インターフェース・スクリプトの作成

SWT ベースのユーザー・インターフェースは、プラットフォーム・スクリプト記述サポートを使用して作成できます。  結果のスクリプトは、以下のいくつかの例外を除いて、クライアント側の HTML ページに非常に似ています。 スクリプト記述エディターは、スクリプト記述プラグインによって提供されます。  このエディターは、ソース・ビュー、および実行時にソース・ページが表示される様子を示すプレビューをサポートします。 エディターでアウトライン・ビューおよびプロパティー・ビューが使用できるため、UI スクリプトの編集時にこれらのビューを表示すると便利です。

UI スクリプト・エディターは、xhtml 型のファイルのデフォルト・エディターとして登録されています。 

UI スクリプトを理解するには、例を参照するのが一番の方法です。 特定の技法については、 スクリプト記述例を参照してください。  以下のロードマップでは、スクリプトで使用可能なエレメント、およびサポートされる属性およびイベント・ブロックが解説されています。

本体

フォーム

UI エレメント

レイアウト制御

スクリプト記述

一般に、UI エレメントはすべて、ID 属性を指定できます。この指定によって、 同じ名前のローカル・スクリプト変数が定義されます。 スクリプトは、 これらのローカル変数によって UI エレメントを操作することができます。通常選択可能なメソッドは、 同等の SWT ウィジェットのメソッドです。

単純な UI レイアウトは、新規レイアウト行の開始を、UI エレメントのグループ間に改行<br />を挿入することで、最も効果的に実行できます。 サポートを提供するスクリプトは、ほとんどの単純な事例に十分適用できるデフォルト・レイアウトを実行します。

より複雑なレイアウトは、UI エレメントの配置をコントロールするテーブルを使用することで実現できます。 また、別々の UI エレメントは、<fieldset> エレメント (有効な HTML であるが、あまり Web ページ設計で使用されない) を使用してグループ化できます。

実際のスクリプト機能の本体は、<script> エレメントを使用して定義されます。この機能は、 対応する UI エレメント (単に HTML ページにあるエレメントとして) の "onXXX" 属性 (たとえば、onloadonreset) 内で指定された呼び出しの結果、起動されます。

UI スクリプトでは、ツールキット・ローカル変数は、org.eclipse.scripting.IToolkitUI インターフェースのオブジェクト・インスタンスです。このインスタンスには、 バッチ・スクリプトに公開されたツールキット・オブジェクトでは利用不能なその他のメソッドが含まれています。

スクリプトのワークベンチとの登録

スクリプトを一度ワークベンチ・リソースとして作成すると、ワークベンチ設定ダイアログを使用して、 スクリプトを適切なワークベンチ拡張ポイントに登録することができます。

スクリプトは「追加 (Add)」ダイアログを使用して追加されます。ダイアログから以下の情報に対するプロンプトがでます。

Java での UI スクリプト記述の使用

UI スクリプト記述機能は、Java を、JavaScript ではなく、そのスクリプト記述言語としてサポートします。 Java をスクリプト記述言語として使用する場合、org.eclipse.scripting.Renderer のインスタンスを作成する必要があります。 このオブジェクトは、UI を提供するために使用し、1 つまたは複数のイベント・ハンドラーと関連付けることができ、 さらに、Java 形式で書かれています。  レンダラーの addObject(String,Object) メソッドを使用して、イベント・ハンドラーを追加します。

JavaScript イベント・モデルは、Java でスクリプト記述されている場合でも使用します。 いろいろな "onXXX" 文節が以前と同様に指定されます。 この場合には、これらの文節は、"インライン" JavaScript 機能の呼び出しとしてではなく、 登録されたイベント・ハンドラー上のメソッドを反映するコールバックとしてインプリメントされます。

スクリプト・アダプターの明示的使用

これまでに、ワークベンチ・ユーザーがどのようにスクリプトを追加して管理するかを解説してきました。  スクリプトはプラグインによって拡張として提供することもできます。  これは、インプリメンテーション・クラスの代わりに、拡張定義内のクラス属性としてスクリプト・アダプターを指定することで行います。  アダプター仕様には、実行する実際のスクリプト名が含まれます。  たとえば、スクリプト記述例 plugin.xml からの以下のマークアップは、アクション・セットを追加し、ScriptAdapterWorkbenchActionclass としてスクリプト名とともに指定します。  関連するマークアップは bold で表示されます。


<extension point = "org.eclipse.ui.actionSets">
    <actionSet 
        id="scriptActionSet" 
        label="%S_Script_Examples"
        visible="true">
        ...
        <action id = "scriptaction1"
            menubarPath = "window/org_eclipse_scripting_examples/slot1"
            toolbarPath = "%S_Script_Examples"
            label = "%S_Scripted_Action_Example"
            tooltip = "%S_Perform_Scripted_JavaScript_Action"
            icon = "icons/full/ctool16/script_scp.gif"
            class=
            "org.eclipse.scripting/org.eclipse.scripting.ScriptAdapterWorkbenchAction:file=platform:/plugin/org.eclipse.scripting.examples/excalibur.js language=javascript">
       
</action>
        ...

標準のスクリプト・アダプターは、プラグインの plugin.xml 仕様の一部として、直接参照できます。サポートされるアダプターのリストは、org.eclipse.scripting パッケージを参照してください。

スクリプト記述の例は、これらアダプターのその他の使用方法を示しています。  スクリプト例のプラグインは、事前定義されたアダプターを使用することで、 それぞれのスクリプト拡張をインプリメントします。  その他詳細は、 plugin.xml ファイルを参照してください。

参照 (References)

org.eclipse.scripting の API 仕様には、 スクリプト記述サポートに関する追加の情報が含まれています。 

スクリプト記述の例では、説明および使用法も示されています。  詳しくは、スクリプト記述の例を参照してください。