Outre les fichiers HTML statiques présents dans le fichier doc.zip ou dans le système de fichiers dans le répertoire des plug-ins, l'aide peut afficher des documents qui sont générés dynamiquement par le plug-in de la documentation. Un plug-in de ce type doit contenir du code Java capable de produire le contenu que serait lu autrement dans des fichiers statiques par le système d'aide. Si une classe qui implémente org.eclipse.help.IHelpContentProducer est fournie par un plug-in dans le système d'aide à l'aide du point d'extension org.eclipse.help.contentProducer, le système d'aide appelle getInputStream pour chaque document auquel ce plug-in accède. Si le résultat de InputTream prend une valeur différente de null, il est envoyé au navigateur qui l'affiche. Si IHelpContentProdcuer renvoie la valeur null, le système d'aide propose par défaut de rechercher le fichier doc.zip et le répertoire des plug-ins pour un document.
Imaginez, par exemple, une implémentation de 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;
}
}
identifié par l'extension dans le fichier plugin.xml de la manière suivante :
<extension point="org.eclipse.help.contentProducer"
name="dynamicTopics"
id="my.company.doc.dynamicTopics">
<contentProducer producer="com.my.company.doc.DynamicTopics" />
</extension>
va produire un contenu de document HTML pour toutes les références de document dont le chemin ou le nom de fichier possède un mot "dynamique".
Un plug-in dispose d'une liberté totale pour choisir la méthode ou la structure sous-jacente utilisée pour produire le contenu. Il doit cependant s'assurer que le contenu est généré dans la langue adéquate et encodé en conséquence afin qu'un navigateur puisse l'afficher. Des paramètres régionaux utilisés par l'utilisateur sont fournis pour la méthode getInputStream. S'il n'est pas en mesure de fournir un contenu qui peut être traduit, le contenu des paramètres régionaux de la plate-forme doit être proposé par défaut.