Dynamiczne tworzenie pomocy kontekstowej

Oprócz statycznego powiązania widgetów i identyfikatorów kontekstu istnieje możliwość dynamicznego udostępniania tych informacji w celu zapewnienia dynamicznej pomocy kontekstowej. Do znalezienia odpowiedniego obiektu org.eclipse.help.IContext system pomocy używa identyfikatorów kontekstu. Nowy widok pomocy śledzi aktywowanie części środowiska roboczego (widoków i edytorów) i sprawdza, czy można je zaadoptować do interfejsu org.eclipse.help.IContextProvider. Jeśli tak, widok użyje dostawcy kontekstu w celu znalezienia obiektu IContext i pobrania z niego niezbędnych informacji. Obiekt ten może być przechowywany w pamięci podręcznej lub tworzony podczas pracy.

Części środowiska roboczego dynamicznie tworzące obiekt kontekstu powinny być możliwe do zaadoptowania jako klucz obiektu IContextProvider.class:

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

Interfejs dostawcy kontekstu wymaga implementacji trzech metod:

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

Jeśli maska zmiany kontekstu zwróci wartość NONE, to w przypadku aktywowania części środowiska roboczego będzie konieczne udostępnienie obiektu kontekstu. Jeśli zostanie zwrócona wartość SELECTION, konieczne będzie udostępnienie obiektu kontekstu uwzględniającego bieżący wybór w części. Zawsze, gdy dostawca wyboru części wyzwoli zdarzenie zmiany wyboru, do dostawcy kontekstu zostanie wysłane żądanie o udostępnienie obiektu kontekstu.

Opcjonalnie dla pomocy dynamicznej można określić wyszukiwane wyrażenie. W przeciwnym razie zostaną użyte nazwa części i nazwa perspektywy, co zwykle zapewnia zwrócenie odpowiednich wyników wyszukiwania.