ウィジェットとコンテキスト ID を静的に関連付けるだけでなく、より動的なコンテキスト・ヘルプ機能にこの情報を動的に提供することができます。ヘルプ・システムは、コンテキスト ID を使用して、一致する
org.eclipse.help.IContext オブジェクトを見つけます。新しい「ヘルプ」ビューは、ワークベンチ・パーツ (ビューおよびエディター) の活動化をトラッキングして、
org.eclipse.help.IContextProvider
インターフェースに適応するかどうかをチェックします。適応する場合、ビューはコンテキスト・プロバイダーを使用して、IContext オブジェクトを見つけ、そこから必要な情報を取得します。このオブジェクトは、キャッシュすることも、即座に作成することもできます。
コンテキスト・オブジェクトを動的に作成するワークベンチ・パーツは、IContextProvider.class オブジェクトにキーとして適応する必要があります。
public Object getAdapter(Class key) {
if (key.equals(IContextProvider.class)) {
return new MyContextProvider();
}
return super.getAdapter(key);
}
コンテキスト・プロバイダー・インターフェースは、3 つのメソッドを実装する必要があります。
public class MyContextProvider implements IContextProvider {
int getContextChangeMask() {
return NONE;
}
IContext getContext(Object target) {
return myContext;
}
String getSearchExpression(Object target) {
return null;
}
}
コンテキスト変更マスクが NONE を戻す場合、ワークベンチ・パーツがアクティブになった際に、コンテキスト・オブジェクトを提供する必要があります。SELECTION が戻される場合、パーツの現在の選択に依存するコンテキスト・オブジェクトを提供する必要があります。パーツ選択プロバイダーが選択変更イベントを発行するたびに、コンテキスト・プロバイダーはコンテキスト・オブジェクトの提供を求められます。
オプションで、ダイナミック・ヘルプの検索文字列が提供されます。そうでない場合には、パーツ名とパースペクティブ名の組み合わせを使用すると、多くの場合よい結果が得られます。
注: コンテキスト・プロバイダーの使用に加え (または、その代わりに)、コンテキスト・ヘルプのフィルター・トピックに XML 注釈を使用することができます。