Dynamisk konteksthjælp

Foruden statisk tilknytning af elementer og kontekst-id'er er det også muligt at stille disse oplysninger til rådighed dynamisk for en mere dynamisk kontekstafhængig hjælpefunktion. Hjælpen bruger kontekst-id'er til at finde det tilsvarende org.eclipse.help.IContext-objekt. Den nye hjælpeoversigt sporer aktivering af arbejdsbænkens dele (oversigter og editorer) og kontrollerer, om de kan tilpasses org.eclipse.help.IContextProvider-grænsefladen. Kan de det, bruger oversigten kontekstudbyderen til at finde IContext-objektet og hente de nødvendige oplysninger fra det. Dette objekt kan ligge i cachen eller være oprettet dynamisk.

De dele af arbejdsbænken, som opretter kontekstobjektet dynamisk, skal tilpasses IContextProvider.class-objektet som en nøgle:

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

Kontekstudbyderens grænseflade kræver implementering af tre metoder:

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

Hvis kontekstændringsmasken returnerer NONE, skal kontekstobjektet stilles til rådighed, når arbejdsbænkdelen aktiveres. Hvis SELECTION returneres, skal du stille et kontekstobjekt til rådighed, som er afhængig af delens aktuelle valg. Hver gang udbyderen af delmuligheder udløser en aktivitet, der vedrører en valgændring, bliver kontekstudbyderen bedt om at stille et kontekstobjekt til rådighed.

Der kan også stilles et søgeudtryk for den dynamiske hjælp til rådighed. I de fleste tilfælde giver en kombination af delens navn og perspektivets navn gode resultater.

Bemærk: Ud over at bruge kontekstudbydere - eller som et alternativ til dette - kan du bruge XML-annoteringer til at filtrere emner i konteksthjælpen.