Виджеты и контекстов можно ассоциировать не только статически, но и динамически. Для поиска соответствующего объекта
org.eclipse.help.IContext справочная система использует идентификаторы контекста. Новая панель Справка отслеживает активации частей рабочей среды (панелей и редакторов) и проверяет, поддерживают ли они интерфейс
org.eclipse.help.IContextProvider. Если это так, панель найдет объект IContext с помощью службы контекста и запросит у него необходимую информацию. Этот объект может быть кэширован или создан непосредственно.
Части рабочей среды, создающие объект контекста динамически, должны применять объект IContextProvider.class в качестве ключа:
public Object getAdapter(Class key) {
if (key.equals(IContextProvider.class)) {
return new MyContextProvider();
}
return super.getAdapter(key);
}
Интерфейс службы контекста требует реализации трех методов:
public class MyContextProvider implements IContextProvider {
int getContextChangeMask() {
return NONE;
}
IContext getContext(Object target) {
return myContext;
}
String getSearchExpression(Object target) {
return null;
}
}
Если getContextChangeMask() возвращает NONE, объект контекста должен будет предоставлен при активации части рабочей среды. Если возвращается SELECTION, нужно будет предоставлять объект контекста для текущего выделения в части. при каждом событии изменения выделения в части рабочей среды служба контекста должна будет предоставить объект контекста.
Также, для динамической справки может быть предоставлено выражение поиска.
В противном случае будет использована комбинация имени части и имени проекции.