Виджеты и контекстов можно ассоциировать не только статически, но и динамически. Для поиска соответствующего объекта
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
, нужно будет предоставлять объект контекста для текущего выделения в части. при каждом событии изменения выделения в части рабочей среды служба контекста должна будет предоставить объект контекста.
Также, для динамической справки может быть предоставлено выражение поиска.
В противном случае будет использована комбинация имени части и имени проекции.