动态创建上下文帮助

除了静态地使窗口小部件与上下文标识相关联以外,也可以动态地提供此信息以实现更动态的上下文相关帮助功能。帮助系统使用上下文标识来查找匹配的 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,则您需要提供对部件中的当前选择敏感的上下文对象。每当部件选择提供者激发选择更改事件时,上下文提供者就会被要求提供上下文对象。

(可选)可以提供动态帮助的搜索表达式。如果未提供该表达式,就将使用部件名与透视图名的组合,在大多数情况下,这能获得不错的结果。