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