除了静态地使窗口小部件与上下文标识相关联以外,也可以动态地提供此信息以实现更动态的上下文相关帮助功能。帮助系统使用上下文标识来查找匹配的
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;
}
}
如果上下文更改掩码返回了 NONE,则激活工作台部件时将需要提供上下文对象。如果返回了
SELECTION,则您需要提供对部件中的当前选择敏感的上下文对象。每当部件选择提供者激发选择更改事件时,上下文提供者就会被要求提供上下文对象。
(可选)可以提供动态帮助的搜索表达式。如果未提供该表达式,就将使用部件名与透视图名的组合,在大多数情况下,这能获得不错的结果。