Создаём интерактивную справку Oracle на Java Application

Примечание: Эта информация предназначена для разработчиков, которым нужно, чтобы связать контекстно-зависимую справку (help по теме) для платформы Oracle для ваших API приложений.
Тип: Контекстно-зависимая справка API и поддержка файлов позволяет вызывать встроенные функции вместо того, чтобы создавать функции для отображения из тем.
Справка Oracle поддерживает контекстно-зависимую справку, но ваш разработчик должен писать и настраивать код, чтобы сделать её работоспособной.
Рабочий пример приложения Java с контекстно-зависимой справкой, представленным ниже. Чтобы выполнить этот пример:
1. Убедитесь, что у вас есть справка Oracle для компонентов Java и Sun Java 2 SDK или более поздней версии.
2. Скопируйте и вставьте код, вызвав файл: CSHDemo.java
3. Скомпилируйте заново (e.g., javac CSHDemo.java)
4. Запустите JAVA-аплет (e.g., java .cSHDemo ). Помошник Оракл должен иметь опцию fully-qualified к helpset файлу. Например, если вы создаёте Oracle Help helpset с именем «sample.hs» и сохраните это в «C:\myFiles,» команда для запуска вашего helpset файла будет с тем же путём) java CSHDemo C:\myFiles\Sample.hs (helpset)

Пример Интерактивного Справочника Помощи на Java Application

/*********************************************************************************
* Oracle Help Context Sensitive Help Пример приложения

*

* Это приложение предназначено как пример для вывода нескольких

* пунктов помощи (находящихся в контексте) Oracle Help.

*

* ИСПОЛЬЗОВАНИЕ:  CSHSample <полный путь до helpset файла>

*

*********************************************************************************/

import oracle.help.Help;
import oracle.help.CSHManager;

import oracle.help.library.Book;

import oracle.help.library.helpset.HelpSet;

import oracle.help.navigator.Navigator;

import java.awt.*;
import java.awt.event.*;

import java.net.URL;

public class CSHSample extends Frame implements ActionListener
{
private Help helpObj;
private Book bookObj;
private CSHManager contextManager;
private MenuItem exitMenu;
private MenuItem contentsMenu;
private MenuItem searchMenu;
private MenuItem indexMenu;

// Константа отправленная TopicIDs из map-файла для Helpset передаётся
// в командной линии.

public static final String LABEL = «what_is_a_label_htm»;
public static final String FIELD = «what_is_a_text_field_htm»;

public static void main(String[] args)
{
if (args.length != 1) {
System.err.println(«Usage: CSHSample <full path to helpset file>»);
System.exit(1);
}

Book bookObj = null;
String filename = args[0];

// Допустимые имена файлов должны быть такие: «file:/[<drive>:/]dir/<helpset_file>»
// например: «file:/c:/myPath/myHelp.hs»
if (filename.charAt(0) == ‘/’)
filename = «file:» + filename;
else
filename = «file:/» + filename;

try {
bookObj = (Book) new HelpSet(new URL(filename));
}
catch (Exception e) {
System.err.println(«CSHSample Error: » + e.getMessage());
System.exit(1);
}

CSHSample sampApp = new CSHSample(bookObj);
sampApp.setVisible(true);
}

// Класс Constructor
public CSHSample(Book bookObj)
{
super(«CSH Sample Application»);

setResizable(false);
setSize(300, 200);

// Создаём Help объект
try {
helpObj = new Help(false, false);
contextManager = new CSHManager(helpObj);
contextManager.addBook(bookObj, true);
}
catch (Exception e) {
System.err.println(«CSHSample:: Failed While Creating Help object»);

e.printStackTrace();

System.exit(1);

}

/********************************************************************
* Добавляем UI Компоненты

*******************************************************************/

MenuBar menubar = new MenuBar();

Menu filemenu = new Menu(«File»);
exitMenu = new MenuItem(«Exit»);

filemenu.add(exitMenu);

exitMenu.addActionListener(this);

menubar.add(filemenu);

Menu helpmenu = new Menu(«Help»);
contentsMenu = new MenuItem(«Help Contents»);

contentsMenu.addActionListener(this);

helpmenu.add(contentsMenu);

indexMenu = new MenuItem(«Topic Index»);

indexMenu.addActionListener(this);

helpmenu.add(indexMenu);

searchMenu = new MenuItem(«Full Text Search»);

searchMenu.addActionListener(this);

helpmenu.add(searchMenu);

menubar.add(helpmenu);

setMenuBar(menubar);

Panel mainPanel = new Panel();
add(mainPanel, BorderLayout.CENTER);

// Добавляем название
Label label = new Label(«Country:», Label.LEFT);

mainPanel.add(label);

// Устанавливаем help для компоненты. TopicID = LABEL

// Передаём компоненту help c привязкой через TopicID в CSHManager объект

contextManager.addComponent(label, LABEL, true, true);

// ДобавляемTextField (текстовое поле)
TextField field = new TextField(15);

mainPanel.add(field);

//Установка значения для поиска. TopicID = FIELD

// Передача компоненты привязанной к TopicID в CSHManager объект

contextManager.addComponent(field, FIELD, true, true);

/********************************************************************
* Конец: Добавления UI Компоненты

*******************************************************************/

addWindowListener(
new WindowAdapter()

{

public void windowClosing(WindowEvent e)

{

setVisible(false);

System.exit(0);

}

}

);

}

public void actionPerformed(ActionEvent e)
{

Object source = e.getSource();

if (source == exitMenu) {
setVisible(false);

System.exit(0);

}

else if (source == contentsMenu) {

// Показать Help; отобразить содержимое

Navigator[] navs = contextManager.getAllNavigators();

if (navs != null)

contextManager.showNavigatorWindow(navs[0]);

}

else if (source == indexMenu) {

//Показать Help; Отобразить найденные темы

Navigator[] navs = contextManager.getAllNavigators();

if (navs != null)

contextManager.showNavigatorWindow(navs[1]);

}

else if (source == searchMenu) {

// Показать Help; Отобразить строку поиска

Navigator[] navs = contextManager.getAllNavigators();

if (navs != null)

contextManager.showNavigatorWindow(navs[2]);

}

}

}

Примечание: Справка Oracle использует тему с идентификаторами (map-файл), чтобы сделать контекстно-зависимая справку вызова. Вы можете изменить тему ID путем редактирования тега META непосредственно в вашем файле.