Tópicos Dinâmicos

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.

Exemplo do Produtor de Conteúdo

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.

Restrições

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.