Dynamická témata

Navíc ke statickým souborům HTML v souboru doc.zip nebo k systému souborů v adresáři modulů plug-in může nápověda zobrazovat dokumenty, které jsou dynamicky generovány dokumentačním modulem plug-in. Takový plug-in musí obsahovat kód Java schopný produkovat obsah, který by se jinak četl ze statických souborů prostřednictvím systému nápovědy. Pokud je prostřednictvím modulu plug-in vložena třída implementující org.eclipse.help.IHelpContentProducer do systému nápovědy pomocí bodu rozšíření org.eclipse.help.contentProducer, systém nápovědy zavolá getInputStream pro každý dokument, ke kterému se přistupuje z tohoto modulu plug-in. Pokud nebude výsledkem InputStream s hodnotou null, bude odeslán k zobrazení do prohlížeče. Pokud IHelpContentProdcuer vrátí hodnotu null, systém nápovědy bude standardně hledat dokument v adresáři s doc.zip a v adresáři modulů plug-in.

Příklad tvůrce obsahu

Implementaci IHelpConentProducer můžete provést následujícím způsobem:

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;
}
}

identifikováno pomocí extension v souboru plugin.xml file jako:

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


vytvoří obsah dokumentu HTML pro všechny odkazy na dokumenty, které mají slovo "dynamic" jako součást názvu cesty nebo souboru.

Omezení

Modul plug-in má úplnou svobodu ohledně metody nebo základního vývojového prostředí, které je použito k tvorbě obsahu.  Mělo by se ale zajistit, aby byl obsah generován ve správném jazyce a zakódován odpovídajícím způsobem tak, aby jej prohlížeč mohl zobrazit.  Národní prostředí používané uživatelem je poskytnuto do metody getInputStream.  Pokud není schopno poskytnout přeložitelný obsah, měl by se standardně použít obsah pro výchozí národní prostředí platformy.