XSEDITSEDITV3XSEDIT
Mise en œuvre de XSEdit
Description de l’application
L’outil d’édition coopérative que nous avons mis en œuvre permet à des utilisateurs distants de coopérer pour éditer, annoter et visualiser des documents au format XML.
Il a été développé en langage JAVA avec l’environnement eclipse d’IBM. Afin de simplifier la génération de l’interface graphique de l’éditeur et dans le but de consommer un minimum de ressources systèmes, on a choisi un moyen simple de développement : décrire toute l’interface graphique dans un fichier de propriété (Editeur.properties) et développer des méthodes qui, lors de l’exécution, accèderons au fichier et développerons les principaux menus et barres d’outils de l’interface graphique de XSEdit.
La figure suivante montre un extrait du fichier Editeur.properties décrivant la barre de menu principale de l’éditeur.
Figure 1: Extrait du fichier de configuration de XSEdit
Voici l’interface principale de l’éditeur XSEdit:
Figure 2: Ecran de l’interface graphique de XSEdit
Les principales fonctionnalités de cet outil sont présentées et classées par niveau d’interaction.
La coopération
Notre application offre un service de coopération permettant aux utilisateurs de rejoindre une session coopérative où ils peuvent éditer et réviser des documents. Pour rejoindre une session, un participant active la fonction connect() en appuyant sur le bouton de la barre d’édition et procède à la saisie de son identifiant (login) pour s’authentifier auprès du service.
Figure 3: Ecran de Connexion au service d’édition coopérative
Une fois, un participant est connecté à la session, le module de gestion du contexte lui associe le contexte actuel de la session pour lui permettre de participer aux échanges de documents entre les participants.
La coordination
Tous les participants d’une session coopérative qui manipulent le même document partagent un jeton de coordination. Dès la connexion d’un participant, il est informé de l’état du jeton (s’il est libre ou détenu par un participant). Les fonctions grabToken() et releaseToken() activées en appuyant sur le bouton avec l’icône suivant , permettent de réserver ou de libérer le jeton. Un utilisateur ne peut modifier un document partagé que s’il possède le jeton.
La communication
Une des premières fonctionnalités fournie par cet outil est de permettre d’avoir la même vue du document pour tous les participants à une session d’édition coopérative. En effet lorsqu’un participant à la session coopérative enregistre un document sur le support de stockage, tout les autres participants qui visualisent le même document seront notifier de ce changement par un message qui les invites a importer la nouvelle version ou par une mise à jour automatique du document suivant le paramétrage de leurs cliente et ceux avec un temps d’affichage ne dépassant pas les 5 secondes.
Figure 4: Fiabilité de transmission du contenu d’un document partagé
Edition de texte
L’éditeur XSEdit propose la plupart des fonctions de traitement de texte : formats de police, mise en page, copier/coller… Il propose également des fonctions d’écoute sur le document (undo/redo) pour permettre de revenir à un état antérieur du document et pouvoir défaire ou refaire certaines opérations.
Figure 5: Mise en œuvre des possibilités de mise en forme du texte
Chargement de documents locaux ou distants
XSEdit propose des fonctions de chargement de documents depuis l’espace de travail local ou depuis un référentiel de documents sur le web afin de procéder à leurs modifications.
Figure 6: Chargement d’un document sur l’interface d’édition
Une boite de dialogue permet de choisir le document à afficher sur l’interface d’édition.
Au dessus de la barre de tâches de l’éditeur, une barre de progression indique l’évolution du chargement du document.
Annotation du texte
Pour voir les annotations liées à un paragraphe du document, il suffit de positionnée le curseur sur le texte du paragraphe ou de sélectionné un élément de la table des matières associée au document qui positionnera directement le curseur sur le texte lui correspondante. En effet un élément JTable affiche en permanence les annotations liées au texte sélectionné.
Figure 7: Visualisation de la structure arborescente associée au document partagé
Lorsqu’on clic sur le bouton Editer de la table des matières, une fenêtre qui permet de manipuler les annotations liées au texte sélectionné s’affiche.
Figure 8: Fenêtre de gestion des annotations
Audit des évènements
Chaque événement survenant lors d’une session coopérative est enregistré et stocké en local chez chaque participant dans un journal d’audits.
Ce journal pourra être utilisé comme une historique des évènements qui ont survenu et pourra être consulté pour revenir sur des informations utiles comme pour savoir qui détient le jeton actuellement ou bien quand est-ce qu’a lieu la dernière mise a jour du document, connaître des statistiques et autres informations pour optimiser les prochaines sessions.
Figure 9: Visualisation du journal des évènements de la session
Notification
Une barre de tâches permet d’afficher tous les messages de notification nécessaires pour assurer une bonne coopération entre les participants.
Figure 10: Visualisation de la barre de tâches de l’application XSEdit
Gestion des Versions
Lorsque q'un client connectés essai d’importer une version d’un document en cliquant sur le bouton avec l'icône , une fenêtre contenant la structure arborescente des documents sur le support de stockage s’affiche pour lui permettre de sélectionné le document souhaité.
Figure 11: Liste des version des documents disponibles sur le support de stockage
Insertion d’images
Lors d’une tentative d’insertion d’image une fenêtre permettant de visualiser et d’insérer les images disponibles dans le répertoire images qui se trouve ou même emplacement du document actuel s’affiche, si le document n’est pas encore enregistré, la fenêtre affiche les images disponibles dans un répertoire temporaire.
Figure 12: Insertion d'images
Le Service de Recherche
Pour permettre aux clients d’une session coopérative de chercher des informations sur la base de données eXist en utilisant les intentions (metadonnées) des auteurs, une fenêtre similaire a celle utilisée pour manipuler les annotations permet d’exécuter une requête XQuery et de récupérer le résultat sous forme d’un document, il suffit de choisir les metadonnées, l’environnement de recherche puis le nombre de résultats a afficher.
La figure suivante montre la fenêtre permettant d’effectuer cette recherche.
Figure 13: rechercher par les intentions
Recherche en local
Comme tout éditeur de texte XSEdit permet de rechercher ou de remplacer toutes les occurrences d'un mot ou d'une expression spécifique du document édité.
Figure 14 : Fenêtre permettant les fonctions rechercher/remplacer
Gestion des préférences
A l’instar des éditeurs de texte professionnels, notre éditeur est entièrement paramétrable, en effet une fenêtre nous permets de choisir les options et paramètres de fonctionnement, dont voici la liste.
* Type de mise à jour, elle peut être automatique ou avec avertissement. * Permettre ou non la modification des sources. * Encodage du texte, soit le ISO-8859-1 ou UTF-8 * Les chemins vers les feuilles de styles. * Les thèmes visuels.
Affichage de la source XML d’un document
Parmi les fonctionnalisées de notre éditeur l’affichage des sources, en effet un composant JTextPane permet d’afficher en couleurs et en permanence la source du document édité.
Figure 15: Affichage de la source
Insertion de plugin
On a vu dans le chapitre précédant que notre éditeur permet d’insérer des objets complexes comme les tableaux sous forme de plugin, en effet lorsque l’utilisateur active l’action insérer objet du menu insertion, une fenêtre s’affiche permettant d’afficher la liste des plugin disponibles dans le répertoire plugins qui se trouve a la racine de l’application, dans cette version seul un plugin pour la gestion des tableaux est disponible.
Figure 16: insertion de plugins
Exportation vers d’autres formats
Grâce a une transformation xml-xsl notre éditeur propose la possibilité de transformer le document en cours vers d’autres formats connus comme le format PDF obtenu grâce a une transformation xsl-FO ou encore vers le format html.
Figure 17: exporter les documents vers d'autres formats
Aperçu avant impression
Grâce aux possibilités offertes par l’API XSL-FO notamment la fonction FOP-AWT-Preveiw qui permet de visualiser le document après transformation dans un composant visuel, notre éditeur permet d’imprimer et d’avoir un aperçu avant impression du document en cours.
L’image suivante présente l‘aperçu avant impression d’un document :
Figure 18: Aperçu avant impression
Service d’aide en ligne
Chaque fenêtre de l’éditeur contient un bouton avec le label « Aide » qui permet d’afficher l’aide correspondant a l’action proposé par cette dernière.
Figure 19: affichage de l’aides en ligne
Changement du Look&Feel
Afin de permettre à chaque utilisateur de retrouver l’environnement dont il est habitué à travailler, nous avons définis plusieurs Look & Feel pour l’application. Chaque Look&Feel permet de transformer l’interface graphique (Menu Bar, Boutons, Boites de Dialogues) pour s’intégrer avec le système d’exploitation sous-jacent. On retrouve l’aspect visuel de Windows, des Systèmes Unix ou un aspect standard d’une application Java.
Figure 20: Changement de l’interface graphique selon l’environnement d’exécution