Dynamické vytváření kontextové nápovědy

Kromě statického přiřazování ID kontextu k prvkům widget lze tuto informaci poskytovat dynamicky pro účely ještě dynamičtější funkci kontextově citlivé nápovědy. Systém nápovědy používá ID kontextů k vyhledání odpovídajícího objektu org.eclipse.help.IContext. Nový pohled nápovědy sleduje aktivaci částí pracovní plochy (pohledů a editorů) a ověřuje, zda se přizpůsobují rozhraní org.eclipse.help.IContextProvider. Pokud ano, pohled použije poskytovatele kontextu k vyhledání objektu IContext a získá požadovanou informaci od něj. Tento objekt lze ukládat do mezipaměti nebo jej lze vytvářet za běhu.

Části pracovní plochy, které chtějí vytvářet objekt kontextu dynamicky, by měly adaptovat objekt IContextProvider.class ve funkci klíče:

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

Rozhraní poskytovatele obsahu vyžaduje implementaci tří metod:

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

Pokud maska změny kontextu vrací NONE, bude při aktivaci části pracovní plochy zapotřebí poskytnout objekt kontextu. Vrací-li SELECTION, budete muset poskytnout objekt kontextu, který je citlivý na aktuální výběr v části. Vždy, když poskytovatel výběru části aktivuje událost změny výběru, poskytovatel kontextu bude vyzván k poskytnutí objektu kontextu.

Volitelně lze poskytnout vyhledávací výraz pro dynamickou nápovědu. V opačném případě bude použita kombinace názvu části a názvu perspektivy, jež ve většině případů poskytuje optimální výsledky.