Código java para usar JavaHelp

From ChuWiki
Jump to navigation Jump to search

Una vez que tenemos nuestros Ficheros de configuracion de JavaHelp sólo nos queda hacer el código java necesario para leerlos y mostrar las ventanas de ayuda. Por supuesto, necesitaremos añadir los .jar de JavaHelp a nuestro ClassPath.

  • jh.jar Esta es la librería que normalmente tendremos que incluir. Tiene lo básico para funcionar con JavaHelp más un motor de búsqueda para poder hacer que nuestra ayuda tenga la caja de búsqueda.
  • jhbasic.jar Una versión reducida de la anterior, sin el motor de búsqueda. La podemos usar en lugar de la anterior si no queremos que nuestra ventana de ayuda tenga búsqueda.
  • jsearch.jar El motor de búsqueda suelto.
  • jhall.jar La más completa de todas, con soporte para que podamos hacer nuestros propios motores de búsqueda.

Lo primero que hay que hacer en nuestro código java es leer el fichero .hs -Help Set-. Para ello, usamos estas líneas.

File fichero = new File("help_set.hs");
hsURL = fichero.toURI().toURL();
HelpSet hs = new HelpSet(null, hsURL);

El primer parámetro que se pasa en el constructor de HelpSet es el ClassLoader a usar. Si se pone null, se usará el ClassLoader por defecto. Si nuestro fichero help_set.hs anda metido dentro de un jar, posiblemente tengamos que conseguir el ClassLoader de una clase que esté en ese jar -UnaClase.getClassLoader()- para usarlo aquí.

Ahora se presentan dos opciones. Por un lado podemos ir construyendo una a una todas las partes de la ventana de ayuda -tabla de contenidos, visor de ayuda, panel de búsqueda, etc- para construir nuestra propia ventana de ayuda, o bien podemos usar una por defecto. Vamos con esta segunda opción que es más fácil.

Para ello, creamos una clase HelpBroker, que es la que nos da una interface sencilla para manejar todas las ventanas de ayuda y métodos adecuados para que podamos añadir dichas ventanas a nuestros botones de ayuda o a la pulsación de la tecla de ayuda F1.

HelpBroker hb = hs.createHelpBroker();

Ahora, símplemente en nuestros botones, paneles o lo que sea, debemos ir añadiendo qué clave de fichero de ayuda queremos que muestren.

Para un botón o item de menú que al pulsarlo muestre la ayuda pondríamos

JButton b = new JButton("Ayuda");
hb.enableHelpOnButton(b, "clave", helpset);

donde "clave" es la clave que hayamos puesto al fichero .html en nuestro fichero mapa mapa.jhm -ver Ficheros de configuracion de JavaHelp-.

Si lo que queremos es que se muestre la ayuda al pulsar la tecla de ayuda F1, normalmente lo haremos sobre una ventana completa. Entonces, si nuestra ventana es por ejemplo un JFrame, podemos poner

JFrame v = new JFrame ("La ventana principal de nuestra aplicacion");
hb.enableHelpKey(v.getContentPane(), "clave", helpset);

Esto hará que si cualquier botón, caja de texto, menú o lo que sea de esta ventana tiene el foco, al pulsar F1 se abrirá la ventana de ayuda mostrando el fichero .html indicado por "clave" en nuestro mapa "mapa.jhm" -ver Ficheros de configuracion de JavaHelp-.

Hay muchas más posibilidades, pero para poder emepzar con ello creo que ya está bien.