도움말은 플러그인 디렉토리 아래의 doc.zip 또는 파일 시스템에 있는 정적 HTML 파일 외에 문서 플러그인에서 동적으로 생성하는 문서도 표시할 수 있습니다. 이러한 플러그인에는 도움말 시스템이 달리 정적 파일에서 읽는 컨텐츠를 생성할 수 있는 Java 코드가 포함되어야 합니다. org.eclipse.help.IHelpContentProducer를 구현하는 클래스가 org.eclipse.help.contentProducer 확장점을 사용하여 플러그인을 통해 도움말 시스템에 제공되면 도움말 시스템은 이 플러그인에서 액세스한 각 문서에 대해 getInputStream을 호출합니다. 해당 결과가 널(null) InputStream이 아닐 경우 표시를 위해 브라우저로 송신됩니다. IHelpContentProdcuer가 널(null)을 리턴할 경우 도움말 시스템은 문서에서 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 메소드에 제공됩니다. 변환 가능한 컨텐츠를 제공할 수 없을 경우 이 로케일에는 기본 플랫폼 로케일의 컨텐츠로 기본값이 지정됩니다.