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.