Кроме статических файлов HTML, расположенных в файле doc.zip или каталоге модулей, справочная система поддерживает документы, создаваемые модулем документации в динамическом режиме. В состав такого модуля должен входить исходный код Java, предназначенный для создания содержимого, которое в противном случае должно извлекаться справочной системой из статических файлов. Если класс, применяющий интерфейс org.eclipse.help.IHelpContentProducer, добавляется модулем в справочную систему с помощью точки расширения org.eclipse.help.contentProducer, то справочная системы вызывает метод getInputStream для обработки каждого документа, к которому обращается этот модуль. Если возвращается не пустой поток ввода, он передается браузеру для отображения. Если IHelpContentProdcuer возвращает нулевое значение, то справочная система выполняет поиск документа в файле doc.zip и каталоге модулей.
В качестве примера рассмотрим реализацию интерфейса 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;
}
}
он определяется расширением в файле plugin.xml:
<extension point="org.eclipse.help.contentProducer"
name="dynamicTopics"
id="my.company.doc.dynamicTopics">
<contentProducer producer="com.my.company.doc.DynamicTopics" />
</extension>
Для всех ссылок на документы, в пути которых указано слово "dynamic", создается
содержимое в формате HTML.
Для создания содержимого модуль может использовать произвольные метод и базовую среду. Однако дополнительно требуется выполнить проверку правильности языка и кодировки в соответствии с конфигурацией браузера. Локаль, применяемую пользователем, можно определить с помощью метода getInputStream. Если переведенное содержимое определить не удалось, он должен выбрать локаль платформы по умолчанию.