「拡張 (Extensions)」ページは、プラグインの拡張機能をブラウズし、編集するために使用されます。 拡張は、プラットフォームに振る舞いを提供するための中心的なメカニズムです。 プラグインが、他のプラグインから使用することができる単純な Java API ライブラリーでない限り、 新規の振る舞いが拡張として提供されます。
プラグインは、それが必要としているプラグインにより定義されている拡張ポイントに機能を提供します。 拡張構文を正しく処理するには、拡張構文が拡張ポイントの定義に一致している必要があります。 適格な拡張ポイントの完全なリストは、PDE によって計算されます。 その計算のために、PDE は、可視になっている (ワークスペースおよび外部の) すべてのプラグインを調べます。
PDE が提供する汎用の拡張ウィザードは、拡張ポイントを走査するのみです。 拡張スキーマが提供されている場合は (「拡張ポイント・スキーマ」を参照)、 このウィザードはそのスキーマから文法と拡張ポイントのメタ・データを抽出します。
「拡張 (Extensions)」ページの操作を示すために、プラグインに 'Hello, PDE world' アクションを追加します。 org.eclipse.ui.actionSets 拡張ポイントにアクションを追加します。 この例では、読者はすでに拡張ポイントを理解しているものとします。
最初に「新規作成 (New)」ボタンを押して、拡張ウィザードを選択します。
「スキーマ・ベースの拡張 (Schema-based Extension)」ウィザードは、 最も一般的な方法で拡張を処理するので、このウィザードがデフォルトになっています。 このウィザードはプラグインを走査して、スキーマの有無に関係なく、検出したすべての拡張ポイントを提示します。 スキーマを持つ拡張ポイントを使用すると、PDE による支援はさらに優れたものになります。 拡張ポイントのスキーマが欠落している場合は、PDE はその拡張へのエレメントと属性の追加を認めますが、 それらのエレメントと属性が、選択されている拡張ポイントに対して有効であるかどうかを検証することはできません。
「次へ (Next)」を押すと、拡張ポイントのリストが提示されます。 「アクション・セット (Action Sets)」を選択し、「終了 (Finish)」を押します。
このウィザードは、新規の拡張を拡張のリストに追加します。 この拡張にはスキーマが関連付けられているため、拡張定義をさらに編集することができます。 新規に追加された拡張を選択し、ポップアップ・メニューから 「新規作成 (New)」->「アクション・セット (actionSet)」と選択します。 この XML エレメントは、拡張定義で指定することのできる唯一の有効なエレメントとして定義されています。
すべての必須属性に対して、PDE はデフォルト値を作成します。 「プロパティー (Properties)」ビューでエレメントを選択し、その label プロパティーを変更することにより、 アクション・セットのデフォルト名を "Sample Action Set" に変更することができます。 新規の名前が拡張リストに表示されます。
次に、アクション・セットに対してメニューとアクションを定義する必要があります。 アクション・セットを選択し、「拡張エレメントの子 (Extension Element Children)」セクションでメニューを開くと、 「新規作成 (New)」メニューに「メニュー (menu)」と「アクション (action)」の 2 つの選択項目が提示されます。 これらの選択項目は、アクション・セット拡張のスキーマ情報に基づいています。 最初に、メニューを作成します。
「新規作成 (New)」->「メニュー (menu)」と選択して、メニューを作成します。
そのメニューを選択し、プロパティーを変更します。 id プロパティーを "sampleMenu" に、 label プロパティーを "Sample Menu" に変更します。
メニュー・オブジェクトがまだ選択されている間にメニューを開き、 「新規作成 (New)」->「セパレーター (separator)」と選択します。 新規の子が表示されます。
「セパレーター (separator)」を選択し、その名前を "sampleGroup" に変更します。 これにより、メニューに名前付きグループが作成されるため、それを使用してアクションを追加することができます。
同様の方法で、以下のようにしてアクションを作成することができます。
「新規作成 (New)」->「アクション (action)」と選択して、アクションを作成します。
そのアクションを選択して、そのプロパティーを変更します。 label プロパティーを「サンプル・アクション (&S) (&Sample Action)」に、 menubarPath プロパティーを "sampleMenu/sampleGroup" に変更します。 これにより、先ほど定義したメニューにアクションが追加されます。
最後に、アクションの Java クラスを設定する必要があります。拡張ポイント定義により、 アクションは IWorkbenchWindowActionDelegate をインプリメントしなければならないと指定されています。 PDE は、スキーマからこの情報を認識しているため、次のようにして支援を提供することができます。
class プロパティーをクリックして、それを編集モードにします。 ボタンを選択してセル・エディター・ダイアログを開きます。
ラジオ・ボタンを選択して新規クラスを作成します。
「ブラウズ (Browse)」ボタンをクリックしてソース・コンテナーを選択し、 "XYZ Plugin" を選択します。
クラスの名前を "SampleAction" に変更します。
「終了 (Finish)」を押す前のダイアログは、次のようになっています。
終了した後、(抽象メソッドごとにスタブ・インプリメンテーションを持つ) 必須のインターフェースに基づいて 新規クラスが生成されます。 さらに、新規クラスの名前が、class プロパティーの値に対して設定されます。 また、このウィザードは、編集ができるよう、デフォルトで新規の Java クラスを開きます。 "run" メソッドを探し出して、以下のステートメントを追加します。
System.out.println("Hello, PDE world!");
新規のソース・コードを保管し、Java エディターを閉じます。 次に、マニフェスト・エディターの「拡張 (Extensions)」ページに戻り、保管します。
プラグインを実行する際に、この例の続きを行います。