動的コンテキスト・ヘルプ

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