Incorporando sistema de ajuda on-line em aplicações Java Parte 03

Gerando a busca de conteúdo

A engine da busca de conteúdo recupera tanto documentos quanto trechos específicos dos documentos em resposta às consultas do usuário. A base de dados para busca é gerada a partir da ferramenta jhindexer.jar sobre o diretório de arquivos de informações HTML. Logo, todos os arquivos de documentação devem ser salvos num diretório específico.

Neste exemplo, todos os arquivos .html serão salvos em JH_HOME\javahelp\bin\html. Para a geração da busca de conteúdo, o seguinte comando deve ser executado:

jhindexer html

onde o parâmetro html constitui o diretório onde a documentação de consulta (arquivos .html) foi salva. Após a execução do comando, a base de dados gerada será armazenada no diretório JavaHelpSearch.

Para testar a busca sobre a base gerada, use a ferramenta jhsearch executando o comando

jhsearch JavaHelpSearch

O comando retornará solicitando a palavra a ser buscada na base

initialized; enter query

Neste momento, deve ser informada uma palavra a ser pesquisada ou o caracter . (ponto) para finalizar a busca.

Adicionando JavaHelp à aplicação

A aplicação de exemplo, que terá o JavaHelp incorporado, tem a seguinte estrutura de pacotes:

pb_12_06_09_pic10.JPG

O arquivo jhall.jar deve ser adicionado ao classpath da aplicação. O conteúdo do diretório JavaHelpSearch, gerado a partir da ferramenta jhindexer, deve ser copiado para o pacote correpondente na aplicação (com.myapp.help.JavaHelpSearch).

A aplicação de exemplo é constituída de apenas duas entradas de menu. A primeira entrada correspondendo às operações disponibilizadas pela aplicação, e a segunda compondo a chamada ao tópico de ajuda. A tela é mostrada na Figura 01 e seu respectivo código na Listagem 05.

Listagem 05. Tela da aplicação.
pb_12_06_09_pic11.JPG


pb_12_06_09_pic12.JPG

Figura 01. Tela da aplicação com JavaHelp incorporado.

O código da Listagem 06 mostra como o acionamento da JavaHelp é feito a partir da seleção do menu de ajuda da aplicação. Como a aplicação utiliza a API Swing, o evento é capturado e tratado pela implementação da interface ActionListener.

Listagem 06. Código que implementa o tratamento do evento de seleção do menu de ajuda da aplicação.

pb_12_06_09_pic13.JPG

Com essa estrutura construída, ao acionar a opção "Tópicos de Ajuda" no menu de Ajuda da aplicação, conforme Figura 01, o JavaHelp será acionado conforme exposto na Figura 02.



pb_12_06_09_pic114.JPG

Figura 02. Sistema JavaHelp em ação


Considerações Finais

O sistema JavaHelp, em sua versão mais atual, não possui internacionalização para Português (pt, pt_BR). Por este motivo, o label de busca, no navegador de pesquisa de conteúdo, encontra-se em inglês - Find.

Outro detalhe a ser ressaltado é que, se os arquivos .html, referenciados no map.jhm, não forem criados com a tag

A aplicação construída neste artigo incorporou a base de dados gerada para busca de conteúdo do JavaHelp diretamente na sua estrutura de pacotes. Isso porém, pode ser alterado empacotando-se essa base num arquivo .jar. Para isso, basta acessar o diretório onde essa base está sendo gerada e executar o comando

jar -cf custom-javahelp.jar

Em seguida, basta adicionar o arquivo gerado ao classpath da aplicação.

Referências

Help Systems - Design and Implementation (Greg Kearsley)
Disponível em:
http://java.sun.com/developer/technicalArticles/J2SE/Desktop/javahelp/
http://java.sun.com/javase/technologies/desktop/javahelp/faq.html#a

JavaHelp System User's Guide
JavaHelp 2.0 Specification Final Release