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.