Infopop は、UI コード内に宣言されたコンテキスト ID と、説明およびオンライン・ヘルプ内の関連トピックへのリンクのリストを関連付けることによって記述します。
これらの関連付けは XML ファイルの内部で行います。
infopop 関連付けを含む XML ファイルは、プラグインごとにいくつでも作成できます。
各コンテキスト ID 用の説明とリンクは、XML ファイルの <context> エレメント内に作成します。
各コンテキスト・エレメントは、UI オブジェクトを記述するために使用されるオプションの
<description> エレメントと、オンライン・ドキュメンテーションにリンクする任意の数の
<topic> エレメントを持つことができます。
<contexts> <context id="panic_button"> <description>This is the panic button.</description> <topic href="tasks/pushing_the_panic_button.htm" label="Pushing the panic button"/> <topic href="reference/panic_button.htm" label="Panic Button Reference"/> </context> ... </contexts>
コンテキストを XML ファイルに記述すると、プラグイン・マニフェストでコンテキスト・ファイルを参照することができます。 上の例ではコンテキスト ID が完全には修飾されていないことに注意してください。 これは、コンテキスト ID を定義したプラグインのマニフェスト内にコンテキスト・ファイルが組み込まれている限り、許可されています。 つまり、コンテキスト ID は、XML ファイルを組み込んだプラグインの ID で解決されます。
プラグインは、org.eclipse.help.contexts 拡張ポイントを使用してコンテキスト・ファイルを組み込みます。
<extension point="org.eclipse.help.contexts"> <contexts name="myInfopops.xml" /> </extension>
plugin 属性を組み込むことによって、コンテキスト・ファイルを他のプラグインから参照できます。 これで、infopop を含むすべてのドキュメンテーションを 1 つのプラグインにグループ化して、それを UI コード・プラグインまたはその他の関連プラグインから参照することが可能になります。
<extension point="org.eclipse.help.contexts"> <contexts name="myInfopops.xml" plugin="com.example.helpExample" /> </extension>
お分かりのように、1 つ以上のプラグインに含まれる 1 つ以上のファイルに、infopop をとても柔軟に編成できます。 重要なのは、ファイル内のコンテキスト ID を正しく解決することです。 コンテキスト ID を完全に修飾しない場合は、 コンテキスト ID を宣言したプラグインにコンテキスト XML ファイルを組み込む必要があります。 コンテキスト XML ファイルで完全修飾コンテキスト ID を使用する場合は、XML ファイルのロケーションと、 コンテキストを組み込むプラグインを完全に自由に決めることができます。
さまざまなプラグインから同じコンテキスト ID の infopop を提供する機能によって、別のレベルの柔軟性が生まれます。 これは、例えば、ユーザーの構成にインストールされるかどうか分からないドキュメンテーション・プラグインのさまざまなセットが存在する場合に便利です。 これで、各ドキュメンテーション・プラグインが個別にコンテキストを宣言することが可能になります。 エンド・ユーザーには、そのウィジェットの ID 用にコンテキストを提供したすべてのプラグイン用の、マージされた infopop コンテンツが表示されます。
コンテキスト ID を宣言したドキュメンテーション・プラグインが存在しないときには、 ウィジェットの完全修飾コンテキスト ID を使用する必要があることに注意してください。 複数のプラグインが同じコンテキスト ID の infopop を提供する場合、コンテキストを宣言したプラグイン (UI プラグイン) に定義されたコンテンツが最初に表示されます。 追加の説明とリンクが付加される順序は保証されません。