IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

HTMLDocument et JTextPane, en mieux


Sujet :

Java

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 442
    Points : 417
    Points
    417
    Par défaut HTMLDocument et JTextPane, en mieux
    Bonjour à tous,

    J'écris ici parce que j'utilise un HTMLDocument associé à un JTextPane dans une application client lourd et que j'ai découvert la bouse que c'était. L'essentiel des problèmes venant notamment du fait que le JTextPane ne supporte rien de plus récent que le HTML 3.2 ! (pour rappel, HTML 3.2 : 1997, HTML 4 : 1998, donc techniquement périmée depuis 15 ans...)

    J'ai choisi d'utiliser le HTML pour avoir une compatibilité simple et efficace entre mon appli et d'autres applis comme Word par exemple. Ces appli -honte à elles - utilisent généralement des standards récents, me forçant à faire des pirouettes sans nom pour les faire avaler au JTextPane.

    Aujourd'hui j'ai atteint la limite de ce qu'il était possible de faire en termes de bidouillages. Les bugs d'affichage se multiplient, je n'ai toujours pas trouvé d'équivalent aux balises "span" qui N'EXISTENT PAS en HTML3.2... Bref, je craque.

    S'il vous plaît :

    EXISTE-T-IL EN JAVA UN EDITEUR DE TEXTE SIMPLE, SUPPORTANT LE HTML ?

    Merci infiniment pour votre aide.

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    les editeurs html java sont souvent basés sur le JEditorPane, ou sont fermés (c'est un composant, pas une api), ou les deux d'ailleurs

    En gratuit, il y'a Ekit. Je ne sais pas trop ce que ça vaut.


    j'en connais un ou deux payants (comme Ephox EditLive, que j'ai intégré dans l'appli que je developpe au boulot, mais qui est basé également sur le JEditorPane), ou Sferyx, qui a l'avantage de proposer une version SWT ou JWebEngine (compatible html 4)), et fermés (même si on peut se débrouiller parfois pour bidouiller certains trucs, en tout cas avec EditLive en ce qui me concerne ) !

    Tu peux regarder aussi du coté de Native Swing du DJ Project. C'est une approche complètement différente, mais l'intégration de FCK, CK ou TinyMCE marchent pas mal. C'est du pur html/js, pilotable via java, par contre.

    Sinon, il y a Open Office aussi... qui te permettra probablement d'éditer plus facilement du word. On avait tenté de l'intégrer au début, mais notre besoin étant de faire du html, c'était trop galère, et on est passé à EditLive (le seul qui nous proposait une fonction de trackchange).

    Aucun problème par contre avec les balises span avec EditLive. La seule galère que j'ai avec c'est son système événementiel (tout se passe par événements, y compris les commandes) qui me gène parce que je fait une intégration dans SWT (un enfer pour éviter les deadlocks entre SWING et SWT entre autres)
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 442
    Points : 417
    Points
    417
    Par défaut
    Merci pour ta réponse !

    Ok. Je commence à regarder Ekit. Je reviendrai si j'ai des problèmes.

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 442
    Points : 417
    Points
    417
    Par défaut
    Bon, Ekit a pas l'air de vraiment résoudre le problème.

    J'ai cru voir sur le net que JavaFX permettait de supporter le HTML5. Par contre, j'ai vraiment pas compris comment je pouvais faire pour intégrer un élément de JavaFX à mon projet...

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 442
    Points : 417
    Points
    417
    Par défaut
    Bon, sinon, une autre piste, j'ai vu qu'on pouvait étendre les EditorKit pour faire accepter au JTextPane le format de donné qu'on voulait. J'ai alors pensé à étendre le HTMLEditorKit pour lui faire reconnaître le HTML récent, en particulier les span, les font, etc.

    Mais là aussi j'aurais besoin d'aide sur la façon de m'y prendre... Il doit falloir que je travaille au niveau du parser au moment où il lit le html et crée les noeuds du document, mais j'ai aucune idée de où et comment ça se passe...

  6. #6
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 166
    Points
    4 166
    Par défaut
    Jette un oeil à ce projet :
    http://code.google.com/p/flying-saucer/
    Si tu as la main sur le html et que tu peux le rendre compatible XHTML, c'est peut-être une solution.

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 442
    Points : 417
    Points
    417
    Par défaut
    Ca avait l'air parfait... Jusqu'à cette ligne :
    It cannot be used for user-editable content; output is read-only.
    Effectivement, j'ai la main sur le HTML. En tout cas, je peux le nettoyer, mais dans 99% des cas normalement j'ai du XHTML au final.

    Merci pour ta proposition. Malheureusement, j'ai besoin de ça dans le cadre d'un éditeur.

    Par contre, je mets de plus en plus d'espoirs dans la simple amélioration du système existant en étendant les différentes classes du modèle (Element, EditorKit, Document, etc), ceci afin de leur faire comprendre correctement la balise span, et en leur faisant rendre correctement les font.

    Quelqu'un a de l'expérience là-dedans ?

  8. #8
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 442
    Points : 417
    Points
    417
    Par défaut
    Bon, si je comprends bien, je dois étendre HTMLDocument.HTMLReader qui étend HTMLEditorKit.ParserCallBack.

    Maintenant, je dois repérer les balises span et créer un élément dans l'arbre du document. Est-ce que j'ai bon jusque là ?

  9. #9
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Sharcoux Voir le message
    Bon, si je comprends bien, je dois étendre HTMLDocument.HTMLReader qui étend HTMLEditorKit.ParserCallBack.

    Maintenant, je dois repérer les balises span et créer un élément dans l'arbre du document. Est-ce que j'ai bon jusque là ?
    Salut,

    ça si tu as besoin de modifier le parsing, pour traiter d'éventuelles balises non traitées par le HtmlEditorKit.

    Pour construire la vue (les élements en fonction des tags lus), il suffit que tu redéfinisses la ViewFactory de l'éditeur kit, en t'inspirant de HTMLFactory
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  10. #10
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 442
    Points : 417
    Points
    417
    Par défaut
    Bon, ok. Je peux donc créer un noeud dans l'arbre du document en remplaçant le traitement des span (actuellement traité comme un charactère) par un traitement "block".

    Maintenant, je veux changer l'affichage pour un affichage inline. Je dois étendre HTMLFactory, je suppose, et modifier le type de vue affectée à mon Span. Qu'est-ce que je peux mettre comme vue pour faire du inline ? Toutes les vues sont des blocks ou des trucs particuliers (br, hr, etc)...

    Merci de votre aide

    Edit : Non, ok, j'avais pas vu "inlineView"

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Swing] Centré un texte dans un JTextPane
    Par titi_22 dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 24/06/2011, 17h09
  2. [JTextPane] saut de ligne...
    Par neric dans le forum Composants
    Réponses: 2
    Dernier message: 21/01/2004, 16h01
  3. Scroll automatique dans un JTextPane
    Par regbegpower dans le forum Composants
    Réponses: 9
    Dernier message: 11/11/2003, 10h24
  4. [dBase]il y a mieux que la commande sql UPDATE ?
    Par sana72 dans le forum Autres SGBD
    Réponses: 4
    Dernier message: 12/12/2002, 12h59
  5. Langage le mieux adapté pour application client serveur ?
    Par guenus dans le forum Débats sur le développement - Le Best Of
    Réponses: 4
    Dernier message: 17/06/2002, 16h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo