ウィジェットとコンテキスト 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 注釈を使用することができます。