Динамическое создание контекстной справки

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

Также, для динамической справки может быть предоставлено выражение поиска. В противном случае будет использована комбинация имени части и имени проекции.