Dynamisk sammanhangsberoende hjälp

Förutom att statiskt koppla gränssnittskontroller och sammanhangsberoende IDn, är detmöjligt att ge den informationen dynamiskt, vilket ger en mer dynamisk sammanhangsberoende hjälp. Hjälpsystemet utnyttjar sammanhangsberoende IDn till att hitta motsvarande org.eclipse.help.IContext-objekt. Den nya hjälpvyn spårar aktivering av arbetsmiljöns delar (vyer och redigeringsprogram) och kontrollerar om de anpassas till gränssnittet org.eclipse.help.IContextProvider. Om de gör det används sammanhangsprovidern av vyn till att hitta IContext-objektet och hämta informationen som behövs där. Det objektet kan lagras i cache eller skapas under arbetets gång.

Delar av arbetsmiljön där försök görs att skapa det sammanhangsberoende objektet dynamiskt borde anpassas till IContextProvider.class-objektet som nyckel:

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

Gränssnittet för sammanhangsprovidern förutsätter att tre metoder implementeras:

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

Om en sammanhangsberoende ändringsmask ger NONE i retur, måste ett sammanhangsberoende objekt tillhandahållas när arbetsmiljödelen aktiveras. Om SELECTION ges i retur, måste du tillhandahålla ett sammanhangsberoende objekt som är känsligt för delens aktuella urval. Varje gång en delurvalsprovider aktiverar en urvalsändringshändelse ombeds sammanhangsprovidern att tillhandahålla ett sammanhangsberoende objekt.

Alternativt kan ett sökuttryck för den dynamiska hjälpen tillhandahållas. Annars kommer en kombination av delnamnet och perspektivnamnet att användas med, i de flesta fall, goda resultat.

Obs! Du kan dessutom (eller alternativt) använda XML-anteckningar till att filtrera avsnitt i sammanhangsberoende hjälp (förutom att använda kontextleverantörer).