ウィジェットとコンテキスト 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
が戻される場合、
パーツの現在の選択に依存するコンテキスト・
オブジェクトを提供する必要があります。パーツ選択
プロバイダーが選択変更イベントを発行するたびに、
コンテキスト・プロバイダーはコンテキスト・
オブジェクトの提供を求められます。
オプションで、ダイナミック・ヘルプの検索文字列が提供され
ます。
そうでない場合には、パーツ名とパースペクティブ名の
組み合わせを使用すると、多くの場合よい結果が得られ
ます。