Améliorer le rendu de JavaHelp

Un pétard mouillé JavaHelp? Pas vraiment.

Il existe heureusement des solutions pour contourner ce problème d’affichage. Toutes passent par l’api de JavaHelp (c’est donc standard) pour changer la visionneuse.

JavaHelp a eu le bon goût d’être une spécification très modulaire. De nombreux éléments de l’interface peuvent être reconfigurés. Ainsi, vous trouverez dans ce billet de Roger Brinkley, qui date de 2004, une méthode très simple pour remplacer le JEditorPane par une visionneuse utilisant un navigateur natif. Au travers de Java Desktop Integration Component (JDIC), JavaHelp va ainsi demander à votre navigateur préféré (Mozilla, Internet Explorer) de faire le rendu, au sein même de votre application java.

Le code est on ne peut plus simple. Avant d’invoquer la première fois javahelp, il suffit de faire ceci:

1
2
3
    import javax.help.SwingHelpUtilities;
    ...
    SwingHelpUtilities.setContentViewerUI("javax.help.plaf.basic.BasicNativeContentViewerUI");

Cette solution est merveilleuse, n’est-ce pas? Rien n’est plus apte à afficher une page HTML que votre fidèle navigateur. Que c’est beau! Allez, on applaudit et on va se boire un café.

Ce serait même encore plus beau si ça fonctionnait correctement. En effet, pour intégrer le navigateur de l’OS dans votre application java, JDIC passe par une librairie native. Hors, si comme moi vous êtes sous linux 64 bits, ça commence à sentir tout doucement le sapin. Aucune librairie native n’est fournie pour linux 64 bits. Pas de librairie windows 64 bits non plus ni de librairie Mac OS X, quelle que soit la version.

De plus, JDIC utilise soit Intenet Explorer, soit Mozilla. Hors, Mozilla ce n’est ni Firefox ni Chrome. Bien que basé sur du code commun à Mozilla, Firefox est une version allégée. Il n’intègre pas les librairies permettant l’inclusion du moteur de rendu dans une autre application. Quand à Chrome, inutilisable avec JDIC, trop récent.

En résumé, les utilisateurs qui ne pourront pas lire votre aide dans ce cas seront

  • Les utilisateurs linux 64 bits
  • Les utilisateurs windows 64 bits
  • Les utilisateurs Mac OS X
  • Les utilisateurs sous d’autres OS moins répandus
  • Les utilisateur linux 32 bits ayant installé Firefox ou Opera mais pas Mozilla
  • A priori, les futurs utilisateurs européens de Windows Seven ayant pris autre chose que « Internet Explorer » comme navigateur

Vous laisseriez beaucoup d’utilisateurs sur le carreau avec un telle solution! Pour une application professionnelle, cette situation n’est pas acceptable.

2 réflexions au sujet de « Améliorer le rendu de JavaHelp »

  1. Super intéressant …

    J’avais pour d’autre besoin html utilisé SWT et son composant Browser (le problème des librairies natives doit être le même qu’avec JDIC)

    Et j’avais même trouvé une intégration Swing de ce composant SWT.

    Lobo et Cobra, c’est bon à savoir.

Laisser un commentaire