|
|
|
|
Bien le salut,
Plutôt que de programmer ça moi-même je me suis dit que ce serait bien de chercher s'il existait déjà une librairie Java pour afficher une fenêtre d'aide avec une TOC et où les fichiers de contenu seraient écrits en HTML.
Je l'ai trouvée, elle s'appelle HelpGUI (http://helpgui.sourceforge.net).
La démo fonctionne super mais si je télécharge le JAR et que je l'inclus à mon projet, je n'arrive pas à lui faire repérer mon dossier où se trouvent les fichiers toc.xml ainsi que les fichiers HTML. Je développe avec Eclipse et mon projet se constitue comme suit :
Dossier projet src mon package (view) Ma classe amorçe Eventuellement une autre classe un autre package Une classe Encore une autre classe ... dossier des fichiers d'aide (htmlhelpfiles) toc.xml home.htm style.css ... lib helpgui-1.1.jar
<?xml version="1.0" encoding="ISO-8859-1" ?>
<toc>
<tocitem text="General">
<tocitem text="Introduction" target="home.htm" home="true"/>
</tocitem>
</toc>
package view;
import javax.swing.JFrame;
import net.sourceforge.helpgui.gui.MainFrame;
public class HTMLHelpViewer /*extends JFrame*/ {
public static void main(String[] args) {
JFrame helpFrame = new MainFrame("./htmlhelpfiles", "plastic");
File file = new File("./htmlhelpfiles");
if(file.exists() && file.isDirectory()) {
System.out.println("Le chemin est bon");
}
helpFrame.setVisible(true);
}
}
java.lang.IllegalArgumentException: InputStream cannot be null Le chemin est bon
Bon...
saxParser.parse(/*TocOpen.class.getResourceAsStream(*/MainFrame.helpPath+"/toc.xml"/*)*/, handler); url = new URL(/*TextArea.class.getResource(*/"file:"+MainFrame.helpPath+"/"+page.getTarget()/*)*//*.toString()*/);Et là soulagement tout fonctionne (logique) ! Sauf que je ne comprends toujours pas ce mystère avec le classpath... Je place quand même mon dossier "htmlhelpfiles" à la racine du projet (donc là où se trouve le fichier .classpath) alors je ne comprends pas comment dans sa logique il ne cherche pas là dedans par défaut. J'ai même essayé d'inclure le dossier projet lui-même juste avant l'exécution dans l'onglet "classpath" et rien. Conclusion Ce viewer d'aide, comme il fallait s'y attendre, n'est ni plus ni moins qu'un JTree contrôlant le contenu d'un JTextPane avec tous ses défauts : - Ne pensez pas pouvoir faire de l'XHTML. L'utilisation de balises auto-fermantes se traduira par l'impression du caractère ">" même si la balise sera interprétée. Déclarer le fichier HTML comme étant de l'XML ne changera rien... Java s'attend à recevoir de l'HTML tout court. - Si vous essayez de définir le codage de la page HTML (<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />) avant la déclaration de la feuille de style (<link rel=stylesheet type="text/css" href="../style.css" />), cette dernière sera ignorée pour une raison obscure (pas de style c'est moche). On peut la mettre après par contre mais je ne sais pas si ça a un intérêt, je dis juste ça parce qu'une page correctement formée devrait contenir cette déclaration plutôt que de laisser le soin au navigateur de détecter automatiquement le charset avec les risques que cela encourt. Ce ne sont que deux gros défauts trouvés en 5 minutes... imaginez comment pourrait virer la suite. En conclusion, si vous avez une version online de votre documentation réalisée sous respect des standards du Web, vous êtes partis pour vous taper une deuxième version non standard... maintenir une version dynamique + une version statique risque de demander beaucoup d'efforts. Dommage... |