Как сделать Help в Java для десктопной программы.

R5AM, Александр Ящук, Москва, 2015г.
На главную

1.
Сначала лучше почитать для общего понимания работы Oracle Help for Java (OHJ) на сайте Oracle:
www.oracle.com/technetwork/developer-tools/help/index.html
docs.oracle.com/middleware/1213/jdev/develop-help/toc.htm


Можно посмотреть мои переводы некоторых разделов про OHJ:
Metadata Files
Help Information Files
Authoring Oracle Help Systems
Helpset Authoring Wizard
Adding OHJ to Your Application
Deploying an OHJ Help System
2.
Скачать набор разработки Oracle Help - OHJDK: c www.oracle.com/technetwork/developer-tools/help/utilsoft-ohw-422139.html
На текущий момент файл имеет имя ohj-12.1.3.0.0.zip.


Пример работы OHJ запускаем из архива ohguide.cmd:

Пример работающего OHJ.
3.
Все файлы для хелпа лучше сложить в отдельную папку, например help:
	
	    /com/yourCompany/yourProduct/help/MyProgram.hs
	    /com/yourCompany/yourProduct/help/MyProgram.map
	    /com/yourCompany/yourProduct/help/MyProgramTOC.xml
	    /com/yourCompany/yourProduct/help/SomeHelpTopic1.html
	    /com/yourCompany/yourProduct/help/SomeHelpTopic2.html
	    /com/yourCompany/yourProduct/help/help-share.jar
	    /com/yourCompany/yourProduct/help/jewt.jar
	    /com/yourCompany/yourProduct/help/ohj.jar
	    /com/yourCompany/yourProduct/help/oracle_ice.jar
	    /com/yourCompany/yourProduct/help/share.jar
	    /com/yourCompany/yourProduct/help/stylesheet.css
	
    
Файл helpset *.hs определяет характеристики системы помощи.
4.
Подключить из OHJDK в свой проект библиотечные jar-файлы:
ohj.jar,
oracle_ice.jar,
help-share.jar,
jewt.jar и
share.jar.

В IntelliJ IDEA нужно на закладке с иерархией файлов проекта Project добавить их в проект Add as library... правой кнопкой мыши.
5.
Подключить библиотеки в java-файле:
	
    import oracle.help.Help;
    import oracle.help.library.helpset.HelpSet;
    import oracle.help.library.helpset.HelpSetParseException;    
	
    
6.
Простой класс для показа помощи:
	
    // Образец класса показа помоши:
    // Выводим на экран HELP
    
    class ohjHelp {
	public void showHelp() throws HelpSetParseException {
		
        String helpsetFileName = "help/MyProgram.hs"; 	// HelpSet file
    	String firstHelpTopic = "topic1";   		// Topic for first showing
					
        Help myHelp = new Help();
	Help.setHelpEncoding("UTF-8");
						    
        try {
		// Possible variant N1
		// HelpSet myHelpSet = new HelpSet(MyProgram.class, helpsetFileName);
		    
		// Possible variant N2
		HelpSet myHelpSet = new HelpSet(getClass().getResource(helpsetFileName));
					
		myHelp.addBook(myHelpSet);
		myHelp.showNavigatorWindow();
		myHelp.showTopic(myHelpSet, firstHelpTopic);
	} catch (Exception ex) {
				System.out.println("Exception in showHelp (OHJ).");
				ex.printStackTrace();
	  }
    }
	
    
6.
Из приложения запустить Help:
	    
    public class MyProgram {

	public static void main(String[] args) {

	    System.out.println("Start OHJ...");

	    try {
		 ohjHelp MyHelp = new ohjHelp();
		 MyHelp.showHelp();
	    } catch (HelpSetParseException e) {
		 e.printStackTrace();
	      }
	}
    }
	    
	
7.
Образец Helpset файла (MyProgram.hs):
	    
    <?xml ?>
    <helpset>
      <title>MyProgram</title>
      <maps>
        <mapref location="MyProgram.map"/>
        <homeID>default</homeID>
      </maps>
    
      <view>
          <name>MyProgram</name>
          <label>MyProgram</label>
          <type>oracle.help.navigator.tocNavigator.TOCNavigator</type>
          <data engine="oracle.help.engine.XMLTOCEngine">MyProgramTOC.xml</data>
      </view>
    </helpset>
	    
	
8.
Образец Map-файла (MyProgram.map):
	    
    <?xml version='1.0' encoding='windows-1251' standalone='yes' ?>
    <map version="1.0">
	<mapID target="topic1" url="SomeHelpTopic1.html" />
	<mapID target="topic2" url="SomeHelpTopic2.html" />
	<mapID target="topic3" url="SomeHelpTopic3.html" />
	<mapID target="topic4" url="SomeHelpTopic4.html" />
	<mapID target="topic5" url="SomeHelpTopic5.html" />
    </map>
	    
	
9.
Образец TOC-файла (MyProgramTOC.xml):
	    
    <?xml version="1.0" encoding="UTF-8"?>
    <toc>
    <tocitem text="MyProgram">
	<tocitem text="Введение">
	    <tocitem target="topic1" text="Для кого эта программа"></tocitem>
	    <tocitem target="topic2" text="Что нового"></tocitem>
	</tocitem>
	<tocitem text="Приступая к работе">
    	    <tocitem target="topic3" text="Системные требования"></tocitem>
    	    <tocitem target="topic4" text="Получение помощи"></tocitem>
	</tocitem>
	<tocitem text="Работа с программой">
    	    <tocitem target="topic5" text="Выход из программы"></tocitem>
	</tocitem>
	</tocitem>
    </toc>
	    
	
10.
Образец одного из файлов тем (topic-file SomeHelpTopic1.html):
	    
    <html>
    <head>
	<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
	<title>Topic 1</title>
    </head>
    <body>
	<p>
	    <b> Topic 1 </b>
	<p>
	    Topic 1
	    Это WIN-1251.
	    Для кого эта программа.
	<hr>
	<p>
    </body>
    </html>
	    
	
11.
В архиве находится полный код примера использования OHJ - можно компилить в командной строке, можно импортировать в Intellij-IDEA, есть pom-файл для генерации билда Maven-ом (mvn compile), BAT-файл для запуска помощи после компиляции Maven-ом (Maven нужно перед этим инсталлировать в систему). Также добавил build.gradle для Gradle и BAT-обёртку для него: можно запустить gradlew.bat - подтянется из Интернета сам Gradle, затем выполнить gradlew.bat run - проект соберётся при помощи Gradle и запустится пример OHJ.

exampleProjectOHJ.zip - проект примера использования OHJ.
ohj-12.1.3.0.0.zip - набор разработки Oracle Help - OHJDK.
12.

Пример работающего OHJ в Windows 7:

Пример работающего OHJ в Windows 7.


Пример работающего OHJ во FreeBSD:

Пример работающего OHJ во FreeBSD.


Пример работающего OHJ в Windows XP:

Пример работающего OHJ в Windows XP.


Пример работающего OHJ в Ubuntu:

Пример работающего OHJ в Ubuntu.




На главную
К началу страницы