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

Sistemas de Ajuda

Sistemas de Ajuda (SA) são aquisições relativamente recentes dos projetos de software. Até 1975, sistemas que apresentassem esse tipo de funcionalidade eram raros. Atualmente, porém, a disponibilização de um SA é tida como componente essencial para um bom projeto de software.
Nesse sentido, um SA se encarrega das responsabilidades de prover, de forma intuitiva, informações que facilitem aos usuários navegar, pesquisar e aprender a utilizar o sistema do qual a ajuda é parte integrante.

A consideração primária relativa ao projeto de um SA é se este será dinâmico ou estático. Sistemas de ajuda dinâmicos variam a ajuda oferecida baseando-se tanto na localização do usuário dentro da aplicação, quanto de suas ações prévias sobre a mesma. Em contrapartida, os sistemas de ajuda estáticos não levam em conta essas duas variáveis ao interagir com o usuário. Funcionam como um guia de referência online onde os termos de entrada são determinados previamente. Quando a ajuda é requisitada, o usuário tem a oportunidade de obter esclarecimento do termo desejado, ou selecionar um termo de uma lista provida. Este artigo se dedicará a analisar um sistema de ajuda estático.

Tecnologia JavaHelp

JavaHelp é tanto uma API quanto um sistema extensível e independente de plataforma para implementação da ajuda ao usuário em aplicações e geração de documentação online. É escrito em Java e, portanto, roda em qualquer plataforma ou browser com suporte ao JRE. Baseado em Swing, o JavaHelp provê uma interface padrão que habilita tanto desenvolvedores quanto autores a adicionarem uma ajuda online em suas aplicações.

O sistema JavaHelp é flexível para prover ajuda online em diferentes cenários:

- Aplicações (applet e standalone)
- Componentes JavaBeans
- Applets em páginas HTML
- Aplicações Web.

Diversos aspectos distinguem o JavaHelp de outros sistemas de ajuda baseados em Java. São alguns deles:

- Navegadores de Help: Tabela de conteúdo (TOC) articulada, dando suporte à expansão e sintetização de tópicos, número ilimtados de níveis hierárquicos e full-text search flexível e configurável.

- Compressão: Pode ser comprimido e encapsulado em um único arquivo .jar.

- Extensibilidade e Personalização: A API do JavaHelp pode ser usada para personalizações ou extensões da interface com o usuário e de suas funcionalidades.

- Atualizações dinâmicas: permite que um sistema de ajuda online  seja dinamicamente atualizado após a geração de uma release.

- Internacionalizável: dá suporte à internacionalização (I18N).

Diante dessa capacidade do JavaHelp em prover sistemas de ajuda para aplicações em geral, o objetivo deste artigo será o de apresentar um passo-a-passo de como este sistema pode ser incorporado em uma aplicação standalone de exemplo.

O Sistema JavaHelp

O sistema JavaHelp, implementação de referência da Sun MicroSystems, encontra-se na versão  2.0_05 e pode ser baixado pelo endereço
http://java.sun.com/products/javahelp. Seu desenvolvimento e evolução continua sendo sustentado pela própria Sun, a qual se mantém aberta e flexível a contribuições externas.

Assumindo-se que a descompactação do arquivo zipado foi feita no diretório C:\ do Windows, o JavaHelp estará disponível em C:\jh2.0 (JH_HOME). Algumas bibliotecas e ferramentas são:

pb_12_06_09_pic01.JPG

Afim de se implementar um mecanismo de ajuda utilizando-se o sistema JavaHelp, são necessários criar arquivos de metadados que o JavaHelp utilizará para apresentar as informações. Além disso, é exigido que aja a criação de uma estrutura de tópicos da informação a ser exibida para o usuário. O conjunto desses arquivos, necessários para a implementação de um projeto de ajuda online, é conhecido como helpset.

Dessa forma, a criação do helpset consiste numa seqüência de passos:

1. Criação das páginas HTML (tópicos)
2. Criação do arquivo helpset propriamente dito
3. Criação do arquivo de mapeamentos
4. Criação da tabela de conteúdo do help
5. Criação do índice conteúdo do help
6. Criação da base de dados para a funcionalidade de full-text search

Esses passos básicos possibilitam a geração de um sistema de ajuda ao usuário. Vale destacar que os passos 5 e 6 são necessários somente se as funcionalidade de índice de palavras e busca de conteúdo (full-text search) forem requeridas como parte integrante do sistema de ajuda.