Além dos arquivos HTML estáticos presentes no doc.zip ou o sistema de arquivos no diretório do plug-in, a ajuda pode exibir documentos que são gerados dinamicamente pelo plug-in da documentação. Esse plug-in precisa conter um código Java capaz de produzir conteúdo que seriam lidos a partir de arquivo estáticos pelo sistema de ajuda. Se uma classe implementando org.eclipse.help.IHelpContentProducer é contribuída por um plug-in para o sistema de ajuda utilizando o ponto de extensão org.eclipse.help.contentProducer, o sistema de ajuda chamará getInputStream para todos os documentos acessados a partir deste plug-in. Se isso resultar em InputStream não nulo, ele será enviado para o navegador para visualização. Se IHelpContentProdcuer retornar nulo, o sistema de ajuda colocará doc.zip e o diretório de plug-in como padrão na procura de um documento.
Por exemplo, uma implementação de IHelpConentProducer conforme a seguir:
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;
}
}
identificado pela extensão no arquivo plugin.xml como:
<extension point="org.eclipse.help.contentProducer"
name="dynamicTopics"
id="my.company.doc.dynamicTopics">
<contentProducer producer="com.my.company.doc.DynamicTopics" />
</extension>
produzirá um conteúdo de documento HTML para todas as referências do documento que possuem
uma palavra "dinâmica" como parte do caminho ou do nome do arquivo.
Um plug-in tem total liberdade de método do método ou estrutura de suporte que é utilizada para produzir o conteúdo. No entanto, deve assegurar que o conteúdo é gerado na linguagem correta e codificado adequadamente para que um navegador possa exibi-la. Um código do idioma utilizado pelo usuário é fornecido para o método getInputStream. Se não for possível fornecer um conteúdo que possa ser traduzido, o conteúdo deve ser padronizado para o código do idioma padrão da plataforma.