Dynamische specifieke Help

Naast het statisch koppelen van widgets en context-ID's, is het ook mogelijk om deze informatie dynamisch aan te leveren voor een dynamischere specifieke Help-voorziening. In het Help-systeem worden context-ID's gebruikt om het overeenkomende org.eclipse.help.IContext-object te vinden. In de nieuwe Help-view wordt bijgehouden welke workbenchonderdelen (views en editors) actief zijn en gecontroleerd of deze toepasselijk zijn voor de interface org.eclipse.help.IContextProvider. Zo ja, dan wordt de contextleverancier gebruikt om het IContext-object op te zoeken en de benodigde informatie hieruit op te halen. Dit object kan in de cache worden opgeslagen of automatisch worden gemaakt.

Workbenchgedeelten die het contextobject dynamisch willen maken moeten worden aangepast aan het IContextProvider.class-object als sleutel:

public Object getAdapter(Class key) {
	if (key.equals(IContextProvider.class)) {
		return new MyContextProvider();
	}
	return super.getAdapter(key);
}

In de contextleverancierinterface moeten drie methoden worden geïmplementeerd:

public class MyContextProvider implements IContextProvider {
	int getContextChangeMask() {
		return NONE;
	}
	IContext getContext(Object target) {
		return myContext;
	}
	String getSearchExpression(Object target) {
		return null;
	}
}

Als het contextwijzigingsmasker NONE (geen) retourneert, moet het contextobject worden aangeleverd wanneer het workbenchgedeelte wordt geactiveerd. Als SELECTION (selectie) wordt geretourneerd, moet u een contextgevoelig object aanleveren voor de huidige selectie in het desbetreffende workbenchgedeelte. Telkens wanneer de onderdeelselectieleverancier een selectiewijzigingsevent initieert, wordt de contextleverancier gevraagd om een contextobject aan te leveren.

Desgewenst kan een zoekexpressie voor de dynamische Help worden aangeleverd. Anders wordt een combinatie van de naam van het gedeelte en die van het perspectief gebruikt, hetgeen in de meeste gevallen goede resultaten oplevert.

Opmerking: Naast (of in plaats van) contextproviders, kunt u XML-annotaties gebruiken om specifieke Help-onderwerpen te filteren.