除 doc.zip 或文件系统插件目录下的静态 HTML 文件之外,帮助还会显示文档插件动态生成的文档。这种插件需要包含能够产生可供帮助系统从静态文件中读取的内容的 Java 代码。如果实现 org.eclipse.help.IHelpContentProducer 的类是由插件使用 org.eclipse.help.contentProducer 扩展点提供给帮助系统的,帮助系统将对从此插件访问的每个文档调用 getInputStream。如果导致非空输入流,它将被发送至浏览器进行显示。如果 IHelpContentProdcuer 返回空,帮助系统在缺省情况下将在 doc.zip 和插件目录中搜索文档。
例如,IHelpConentProducer 的实现如下所示:
package com.my.company.doc;
public class DynamicTopics implements IHelpContentProducer {
public InputStream getInputStream(
String pluginID,
String name,
Locale locale) {
if (name.indexOf("dynamic") >= 0)
return new ByteArrayInputStream(
("<html><body>Content generated "
+ new Date().toString()
+ ".</body></html>")
.getBytes());
else
return null;
}
}
在 plugin.xml 文件中被扩展标识为:
<extension point="org.eclipse.help.contentProducer"
name="dynamicTopics"
id="my.company.doc.dynamicTopics">
<contentProducer producer="com.my.company.doc.DynamicTopics" />
</extension>
将为路径或文件名中包括“dynamic”字样的所有文档引用生成 HTML 文档内容。
插件可自由使用用于产生内容的方法或底层框架。但是,应确保用于生成内容的语言正确并且作了相应的编码,浏览器可以显示它们。用户使用的语言环境将提供给 getInputStream 方法。如果无法提供可翻译内容,应缺省为平台的缺省语言环境的内容。