Argomenti dinamici

Oltre ai file HTML statici presenti in doc.zip o nel filesystem nella directory del plugin, la guida può visualizzare i documenti generati dinamicamente dal plugin della documentazione. Tale plugin deve contenere il codice Java in grado di produrre il contenuto che altrimenti sarebbe letto dai file statici mediante il sistema della guida. Se una classe che implementa org.eclipse.help.IHelpContentProducer viene fornita da un plugin per il sistema della guida che utilizza il punto di estensione org.eclipse.help.contentProducer, il sistema della guida richiama getInputStream per tutti i documenti a cui è stato consentito l'accesso da questo plugin. Se ciò determina un InputStream non null, verrà inviato al browser per la visualizzazione. Se IHelpContentProdcuer restituisce un valore null, il sistema della guida viene impostato per valore predefinito sulla ricerca del file doc.zip e della directory di plugin per un documento.

Esempio di produzione del contenuto

Di seguito viene riportato un esempio di un'implementazione di 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;
}
}

identificato dall'estensione nel file plugin.xml:

<extension point="org.eclipse.help.contentProducer"
    name="dynamicTopics"
    id="my.company.doc.dynamicTopics">
    <contentProducer producer="com.my.company.doc.DynamicTopics" />
</extension>


produce un documento HTML per tutti i riferimenti dei documenti che presentano una parola "dynamic" come parte del percorso o del nome file.

Limitazioni

Un plugin può scegliere liberamente il metodo o il framework sottostante utilizzato per produrre il contenuto.  Deve tuttavia garantire che il contenuto venga generato nella lingua corretta e codificato in base a ciò che un browser può visualizzare.  Le impostazioni internazionali utilizzate dall'utente vengono fornite al metodo getInputStream.  Se il metodo non è in grado di fornire un contenuto traducibile, viene impostato il contenuto relativo alle impostazioni internazionali predefinite della piattaforma.