Flux rss
Rechercher : dans
Par :

[JAVA] Librairie HelpGUI

Posotaz, le lundi 3 décembre 2007 à 00:43:50 
 Signaler ce message aux modérateurs

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

C'est donc directement sur le jar contenu dans mon dissier lib que j'ai fait le lien dans mon projet et en cochant ce jar. En fait la lien vers la librairie semble être effectué correctement puisqu'il ne met pas d'erreurs à ce niveau là.

Mon fichier toc.xml contient :
<?xml version="1.0" encoding="ISO-8859-1" ?>
<toc>
  <tocitem text="General">
    <tocitem text="Introduction"       target="home.htm" home="true"/>
  </tocitem>
</toc>

Ma classe amorçe contient ceci :
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);
	}
	
}

Aucune erreur de compilation et dès que je lance, la fenêtre s'affiche avec tous les boutons... mais pas la TOC. En y regardant de plus près je lis sur la console :

java.lang.IllegalArgumentException: InputStream cannot be null
Le chemin est bon

Cette erreur se produit au moment d'instancier un objet MainFrame.

Le fait qu'il dise "Le chemin est bon" prouve bien que le dossier "htmlhelpfiles" existe bien. Donc c'est peut-être moi qui n'ai pas saisi un truc dans les explications fournies sur le site...

Si quelqu'un veut bien essayer de se pencher sur le problème je l'en remercierai.

1

 Posotaz, le mardi 4 décembre 2007 à 02:25:43

Bon...

Me doutant bien que le code ne devait pas être terrifiant, j'ai téléchargé les sources, créé un projet appropié et j'ai passé le tout en mode débugguage.

Au moment du parsage du fichier XML (la toc) et puis après au moment du chargement de l'URL de la page HTML (une partie du contenu), les concepteurs de cette librairie ont utilisé les méthodes getResource() et getResourceAsStream() de la classe courante qui ont pour but de se référer au classpath du projet.

Je m'en suis assuré en remplaçant les lignes originales des classes TocOpen et TextArea de ce package par :

saxParser.parse(/*TocOpen.class.getResourceAsStream(*/MainFr­ame.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...

Répondre à Posotaz
PDF avec Itext librairie Java Bonjour, Actuellement je crée un pdf avec la librairie iText de java, Mais j'ai plusieurs soucis.(Sous Eclipse) En effet je voudrais faire un peu de "mise en page", retrait de texte ect. Ainsi que d'insérer des outils formulaires types cases à cocher... www.commentcamarche.net/forum/affich-2335218-pdf-avec-itext-librairie-java
Nouvelle librairie JAVA Bonjour, j'ai un problème que je n arrive pas à résoudre et il me faudrais de l'aide.... je voudrais créer une nouvelle librairie java avec des fonction bien a moi mais je sais pas comment l implémenter et ou la créer pourrier vous me donner un... www.commentcamarche.net/forum/affich-1346902-nouvelle-librairie-java
Librairie java bonjour, qui pourrez m'expliquez comment fonctionne la commande IMPORT dans java. je fais des import de package et ces derniers sont bien dans le repertoire ou je compile mon programme, mais il m'affiche qu'il n'arrive pas a retrouver ces packages: ex... www.commentcamarche.net/forum/affich-56750-librairie-java
[Firefox] plugin Java Jre de SunA) Les différentes variantes Java chez Sun B) Installation sous Mandriva Limited Edition 2005 ETAPE 1 ETAPE 2: Création du lien symbolique C) Installation sous debian lenny D) Installation sous ubuntu hardy heron A) Les différentes... www.commentcamarche.net/faq/sujet-1824-firefox-plugin-java-jre-de-sun
Installer Java sous UbuntuPar défaut, Firefox n'est pas fourni avec Java. Voici comment procéder pour l'installer: Ouvrez un terminal (Menu Applications > Accessoires > Terminal) et tapez: sudo aptitude install sun-java6-jre sun-java6-plugin ou sudo aptitude install ... www.commentcamarche.net/faq/sujet-5400-installer-java-sous-ubuntu
Java Runtime MachineJava Runtime Machine Certains sites internet mais aussi certains programmes requièrent la présence de la Java Runtime Machine (JRM) pour exécuter les applets Java. Si vous n'avez pas, ou plus, cette Java Runtime Machine,... www.commentcamarche.net/faq/sujet-640-java-runtime-machine
[Java] Path et classpath ????Bonjour tout le monde; je voudrais des explication concernant les variables d'environement que je dois les chnager pour compiler et exicuter des programmes java et qui sont le PATH et CLASSPATH et quelles sont leurs valeurs. je met quoi dans le PATH... www.commentcamarche.net/forum/affich-4645220-java-path-et-classpath
FTP en javaBonjour à tous ! Voilà mon problème : je recherche une librairie JAVA pour faire du FTP en mode actif et passif... mes recherches sur le net ne m'ont conduit pour le moment qu'à des librairies ne supportant qu'un des deux modes... Quelqu'un pourrais... www.commentcamarche.net/forum/affich-77356-ftp-en-java
Taille des objets java en mémoireBonjour, Je fais une étude comparative entre le Java et la librairie Javolution. Je cherche à comparer l'espace mémoire pris par une String, un StringBuffer et un Text (javolution). Comment peut-on faire pour mesurer la taille d'un objet en mémoire? Merci www.commentcamarche.net/forum/affich-4360079-taille-des-objets-java-en-memoire
Télécharger Java Runtime EnvironmentJava Runtime Environment (JRE) installe la machine virtuelle Java, permettant de jouer en ligne, de discuter avec des personnes dans le monde entier, de calculer les intérêts de votre prêt immobilier ou de visualiser des images en 3D. Ces... www.commentcamarche.net/telecharger/telecharger-34055318-java-runtime-environment
Télécharger Cavaj Java DecompilerCavaj Java Decompiler est un éditeur gratuit de code Java. Il permet de recomposer le code source Java d'un fichier CLASS. Il prend en charge la décompilation des applets Java, des archives ZIP et JAR. Le code source Java obtenu est précis. Il intègre... www.commentcamarche.net/telecharger/telecharger-34056787-cavaj-java-decompiler
Télécharger Java ToolsJava Tools est un IDE très léger pour la création, la compilation, l'exécution et le débogage des applications Java et des applettes. L'outil inclus des points et des clics d'accès aux commandes Java, aux documents, au répertoire et aux fichiers. Il... www.commentcamarche.net/telecharger/telecharger-34056297-java-tools
Java - Premier programmePremière application avec Java La première chose à faire est de créer un simple fichier texte (sans mise en forme) et de taper les quelques lignes suivantes : // Votre premiere application en Java class FirstApp { public static void main... www.commentcamarche.net/contents/java/javaprem.php3
Java - Les types de donnéesLes primitives Java est un langage orienté objet, c'est-à-dire que les éléments manipulés sont des classes, ou plus exactement des objets, c'est-à-dire des instances de classes. Toutefois ces objets contiennent des données possèdant un type (et... www.commentcamarche.net/contents/java/javatype.php3
J2EE - Java 2 Enterprise EditionIntroduction au Java Framework Le «Java Framework» (Java 2 Platform) est composé de trois éditions, destinées à des usages différents : J2ME : Java 2 Micro Edition est prévu pour le développement d'applications embarquées, notamment sur des... www.commentcamarche.net/contents/j2ee/j2ee-intro.php3