Skip to topic | Skip to bottom
Home
Minfo03
Minfo03.TWEDocr1.2 - 08 Jun 2004 - 09:30 - MandrioliDamientopic end

Start of topic | Skip to actions

TWiki WYSIWYG Editor

Manuel de maintenance

Damien Mandrioli (md@nefnetNoSpaM.org)

Introduction

On dispose :

  • du traducteur TWiki ML <-> HTML de F. Luddeni
  • de l'API Java qui met en oeuvre, au travers de SWING, le modèle MVC (modèle vue contrôleur). Dans notre cas, les classes intervenant sont :
  • JEditorPane pour la vue
  • HTMLEditorKit pour le contrôleur
  • HTMLDocument pour le modèle

Un document TWiki peut être traduit en un document HTML, cependant ce document HTML ne comporte qu'un sous-ensemble limité de balises HTML.

L'idée du programme est de réaliser un éditeur HTML en Java dont le champ d'action correspond au sous-ensemble HTML en bijection avec les éléments de syntaxe TWiki. On trouvera plus de détail sur ce sous-ensemble dans les annexes du cahier des charges. L'éditeur WYSIWYG est complètement dépendant du traducteur aussi bien dans le sens entrant (TWiki ML -> HTML) que sortant (HTML -> TWiki ML). On s'efforcera donc de ne pas y toucher pour garantir l'évolutivité de l'application. Par rapport à un éditeur HTML classique, Un éditeur dédié à TWiki présente les intérêts suivants :

  • Ajout de fonctionnalités dynamiques (Insertion de WikiWord?, de pièces jointes, ...)
  • Gestion spécifique d'élément de syntaxe TWiki : par exemple, réalisé un mapping entre smileys TWiki et image gif correspondante dans l'éditeur HTML
  • Evolution des services dynamiques en relation avec le web service

Architecture de l'application

Packages

  • twe.actions.misc : contient les actions diverses telles que l'ouverture, la sauvegarde de documents locaux, la complétion,... .
  • twe.actions.twiki : contient les actions d'édition de texte (Titres, Gras, Insertion de tableau, ...).
  • twe.gui : contient les élements d'interface utilisateur.
  • twe.translator : contient le traducteur HTML <-> TWiki ML. Il est préférable de ne pas faire de modifications sur ce traducteur pour rendre l'éditeur indépendant d'éventuelles évolutions du traducteur.
  • twe.util contient diverses classes utiles à l'application. Concerne essentiellement HTMLDocument et Element

Fonctionnement

La classe principale est MainFrame. Cette classe est chargée de mettre en place les composants Swing de l'interface et de leur donnée vie au travers d'écouteurs et d'actions. MainFrame dispose d'un ensemble d'actions qui se trouve dans twe.actions. La plupart de ces actions implémentent TWEAction qui est une interface décrivant une action comme possédant un bouton un controleur et une icone. Cela facilite le montage de l'interface graphique.

La plupart des actions se contente d'hériter d'actions déjà existantes dans l'API Java. C'est le cas par exemple des actions pour le copier/coller ou pour le gras et l'italique. D'autres actions comme l'insertion de tableau ou de liste à puces n'existent pas dans l'API et doivent être codée en manipulant le document HTML.

Extensions de l'application

Ajouter une fonctionnalité

C'est très simple, il suffit de :

  • créer une classe héritant de Action et implémentant TWEAction
  • dans MainFrame, modifier la fonction buildMiscBar() ou buildFormatBar() en instantiant l'action nouvellement crée.

NB : Le code effectif de l'action nouvellement crée se trouve dans la fonction héritée actionPerformed. Une action disposant généralement d'un contrôleur (JEditorPane, MainFrame,...) il n'est pas nécessaire d'utiliser l'objet évenement passé en argument de actionPerformed pour récupérer la source de l'action. Il suffit d'utiliser directement la référence au contrôleur.

Modifier le traducteur (externe) TWiki ML <-> HTML

Il suffit de remplacer les classes du traducteur par les nouvelles. Du point de vue de l'éditeur, le traducteur est considéré comme un composant. Le package concerné est twe.translator.

Modifier les stubs d'appel au web service

Tout comme le traducteur, il suffit de remplacer les anciennes classes par les nouvelles. Cependant si la signature des fonctions d'appel au web service change, il faudra également modifier les appels à ces fonctions. Le package concerné est fr.unice.twikiservice.
to top


You are here: Minfo03 > TerBn1 > DocFinal > TWEDoc

to top

Copyright © 1999-2019 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding WIKIDeptinfo? Send feedback