Comparaison de révisions

Intégration de l'éditeur

Révision 257228 :

Révision 257228 par Kyodev le

Révision 257229 :

Révision 257229 par Worms le

Titre :
Intégration de l'éditeur
Intégration de l'éditeur
Identifiant d'URL :
Intégration_de_l'éditeur
Intégration_de_l'éditeur
Étiquettes :
Midas, Mozilla_embarqué, Traduction_à_relire
Midas, Mozilla_embarqué, Traduction_à_relire
Contenu :

Révision 257228
Révision 257229
n14      Ce document présente les possibilités actuelles d'intégratin14      Ce document présente les possibilités actuelles d'intégrati
>ons d'un éditeur, les problèmes causés par l'intégration existant>on d'un éditeur, les problèmes causés par l'intégration existante
>e, quelques scénarios d'intégrations possibles pour s'en sortir, >, quelques scénarios d'intégration possibles pour s'en sortir, et
>et une solution d'intégration pour les réaliser. Pour finir, la s> une solution d'intégration pour les réaliser. Pour finir, la sol
>olution retenue sera décrite étape par étape.>ution retenue sera décrite étape par étape.
n20      Ici sont décrit des scénarios d'intégration, nécessaires pon20      Ici sont décrits des scénarios d'intégration nécessaires po
>ur faire fonctionner un éditeur. Notez que j'utilise le terme de >ur faire fonctionner un éditeur. Notez que j'utilise le terme de 
>'Compositeur' pour désigner une interface de composition au forma>'Compositeur' pour désigner une interface de composition au forma
>t html qui fait de l'édition de texte enrichit et 'Editeur' pour >t html qui fait de l'édition de texte enrichi et 'Éditeur' pour u
>un éditeur en texte brut (aussi bien que pour la technologie sous>n éditeur en texte brut (aussi bien que pour la technologie sous-
>-jacente du compositeur). <code>&lt;htmlarea&gt;</code> est vu co>jacente du compositeur). <code>&lt;htmlarea&gt;</code> est vu com
>mme une formule pour désigner un objet texte contenant du texte e>me une formule pour désigner un objet texte contenant du texte en
>nrichit, cela ne veut pas dire pour autant que ce tag sera suppor>richi, cela ne veut pas dire pour autant que ce tag sera supporté
>té dans les versions suivantes de Mozilla.> dans les versions suivantes de Mozilla.
n26      Les développeurs ont besoin d'intégrer des compositeurs dann26      Les développeurs ont besoin d'intégrer des compositeurs dan
>s leurs applications XUL en utilisant le tag <code>&lt;editor&gt;>s leurs applications XUL en utilisant le tag <code>&lt;editor&gt;
></code>, comme on fait aujourd'hui. Ils devraient avoir le moins ></code>, comme cela se fait aujourd'hui. Ils devraient avoir le m
>de travail possible à faire pour obtenir les fonctions d'édition >oins de travail possible à faire pour obtenir les fonctions basiq
>basiques, avoir autant d'<code>&lt;editor&gt;</code>s par fenêtre>ues d'édition, avoir autant d'<code>&lt;editor&gt;</code>s par fe
> qu'ils le souhaitent et contrôler si ces <code>&lt;editor&gt;</c>nêtre qu'ils le souhaitent et pouvoir contrôler si ces <code>&lt;
>ode>s sont en mode HTML ou en mode texte.>editor&gt;</code>s sont en mode HTML ou en mode texte.
n32      Dans ce cas de figure, l'<code>&lt;iframe&gt;</code> dans ln32      Dans ce cas de figure, l'<code>&lt;iframe&gt;</code> dans l
>aquelle fonctionne l'éditeur est directement intégrée dans l'appl>aquelle fonctionne l'éditeur est directement intégrée dans l'appl
>ication native. Cela revient à intégrer un navigateur via nsIWebB>ication native. Cela revient à intégrer un navigateur via nsIWebB
>rowser mais à la place on obtient un document éditable. L'interfa>rowser, mais en obtenant, à la place, un document éditable. L'int
>ce du compositeur (barres d'outils ect) doit être implémentée à p>erface du compositeur (barres d'outils, etc.) doit être implément
>artir des éléments d'interface graphique présents dans le contene>ée à partir des éléments d'interface graphique présents dans le c
>ur ou en utilisant du XUL. Cette interface doit être configurable>onteneur ou en utilisant du XUL. Cette interface doit être config
>, avec notamment des barres d'outils flottantes déplaçables (dock>urable, avec notamment des barres d'outils flottantes déplaçables
>able&nbsp;?), une même barre d'outil pour plusieurs objets compos> (dockable&nbsp;?), une même barre d'outils pour plusieurs objets
>iteur ou une pour chaque.> compositeur, ou une pour chaque.
33    </p>
34    <p>33    </p>
34    <p>
35      Ce type d'intégration requiert que le code du compositeur f35      Ce type d'intégration requiert que le code du compositeur f
>onctionne quelque soit l'interface utilisateur (IU). La communica>onctionne quelle que soit l'interface utilisateur (IU). La commun
>tion entre le noyau de l'éditeur et l'interface utilisateur doit >ication entre le noyau de l'éditeur et l'interface utilisateur do
>pouvoir passer par une ou plusieurs interfaces qui isolent l'édit>it pouvoir passer par une ou plusieurs interfaces qui isolent l'é
>eur de l'application hôte. (L'<code>nsEditorShell</code> existant>diteur de l'application hôte. (L'<code>nsEditorShell</code> exist
> fait des suppositions sur l'hébergement de document XUL, qui doi>ant fait des suppositions sur l'hébergement de document XUL, qui 
>vent être contredites.)>doivent être contredites.)
n41      IE 5 supporte l'<a class="external" href="http://www.siteexn41      IE 5 supporte l'<a class="external" href="http://www.siteex
>perts.com/ie5/htmlarea/page1.asp">élément <code>&lt;HTMLArea&gt;<>perts.com/ie5/htmlarea/page1.asp">élément <code>&lt;HTMLArea&gt;<
>/code></a>, si Mozilla travaille à supporter quelque chose de sim>/code></a>&nbsp;; si Mozilla travaille à supporter quelque chose 
>ilaire, l'éditeur doit être intégrable dans la mesure du possible>de similaire, l'éditeur doit être intégrable dans la mesure du po
>. C'est pourquoi nous utilisons <a class="external" href="http://>ssible. C'est pourquoi nous utilisons <a class="external" href="h
>www.mozilla.org/projects/xbl/xbl.html">XBL</a> pour implémenté ce>ttp://www.mozilla.org/projects/xbl/xbl.html">XBL</a> pour impléme
> type d'objet, (?? comme c'est le cas pour les autre formes de co>nté ce type d'objet, (?? comme c'est le cas pour les autres forme
>ntrôles - as is the plan for other form controls.)>s de contrôles - as is the plan for other form controls.)
42    </p>
43    <p>42    </p>
44      Dans le cas de l'intégration du compositeur dans une applic43    <p>
>ation native, il y a içi nécessité de rendre l'interface utilisat 
>eur configurable, de façon que l'on puisse aussi bien l'afficher  
>comme une barre d'outils au dessus de <code>&lt;htmlarea&gt;</cod 
>e>, comme une fenêtre flottante, ou comme une barre d'outil de ha 
>ut-niveau (top-level). 
44      Dans le cas de l'intégration du compositeur dans une applic
 >ation native, il est donc ici nécessaire de rendre l'interface ut
 >ilisateur configurable, de façon que l'on puisse aussi bien l'aff
 >icher comme une barre d'outils au dessus de <code>&lt;htmlarea&gt
 >;</code>, comme une fenêtre flottante, ou comme une barre d'outil
 > de haut-niveau (top-level).
n50      L'architecture du compositeur existant a été créé alors quen50      L'architecture du compositeur existant a été créée alors qu
> d'autres parties de Mozilla étaient encore en cours de développe>e d'autres parties de Mozilla étaient encore en cours de développ
>ment. Il en résulte de nombreux points faibles et anachronismes. >ement. Il en résulte de nombreux points faibles et anachronismes.
>Cette section décrit ses défauts majeurs.> Cette section décrit ses défauts majeurs.
n59      Le problème avec ce modèle d'appartenance est qu'il ne peutn59      Le problème avec ce modèle d'appartenance est qu'il ne peut
> y avoir qu'un éditeur par tag <code>&lt;editor&gt;</code>, alors> y avoir qu'un éditeur par tag <code>&lt;editor&gt;</code>, alors
> que le document chargé dans l'<code>&lt;iframe&gt;</code> peut t> que le document chargé dans l'<code>&lt;iframe&gt;</code> peut t
>rès bien contenir de multiples <code>&lt;iframe&gt;</code>s (dans>rès bien contenir de multiples <code>&lt;iframe&gt;</code>s (dans
> le cas d'un document frameset ou dans un document contenant lui-> le cas d'un document frameset ou dans un document contenant lui-
>même un <code>&lt;html:iframe&gt;</code>). Aujourd'hui, le compos>même un <code>&lt;html:iframe&gt;</code>). Aujourd'hui, le compos
>iteur ne fonctionne pas très bien avec ces types de document.>iteur ne fonctionne pas très bien avec ce types de document.
n65      Le compositeur construit sur une architecture XUL/C++ s'estn65      Le compositeur construit sur une architecture XUL/C++ s'est
> développé avec la supposition qu'un seul tag <code>&lt;editor&gt> développé sur le présupposé qu'un seul tag <code>&lt;editor&gt;<
>;</code> par fenêtre suffirait. Lors de la construction de la fen>/code> par fenêtre suffirait. Lors de la construction de la fenêt
>être, nous prenons l'editorShell de l'élément <code>&lt;editor&gt>re, nous prenons l'editorShell de l'élément <code>&lt;editor&gt;<
>;</code> <a class="external" href="http://lxr.mozilla.org/seamonk>/code> <a class="external" href="http://lxr.mozilla.org/seamonkey
>ey/source/editor/ui/composer/content/editor.js#169">que l'on met >/source/editor/ui/composer/content/editor.js#169">que l'on met da
>dans <code>window.editorShell</code></a>. A partir de là, beaucou>ns <code>window.editorShell</code></a>. A partir de là, beaucoup 
>p de Javascript dans editor.js, ComposerCommands.js et les différ>de Javascript dans editor.js, ComposerCommands.js et les différen
>ents fichiés JS de dialogue s'assurent de pouvoir atteindre le se>ts fichiés JS de dialogue s'assurent de pouvoir atteindre le seul
>ul bon éditeur via <code>window.editorShell</code>. Cette supposi> bon éditeur via <code>window.editorShell</code>. Ce présupposé m
>tion est peu clairevoyante et doit être corrigée.>anquait de clairevoyance et doit être corrigé.
n71      Du code C++ et JS présent dans l'éditeur suppose que celui-n71      Du code C++ et JS présent dans l'éditeur suppose que celui-
>ci se trouve dans un document XUL et qu'il y ait des noeuds du do>ci se trouve dans un document XUL et qu'il y ait des noeuds du do
>cument XUl en dehors, dont les attributs peuvent être récupérés p>cument XUL en dehors, dont les attributs peuvent être récupérés p
>our changer l'état de l'IU.(e.g. le style des boutons). Cela doit>our changer l'état de l'IU (e.g. le style des boutons). Cela doit
> être changé pour permettre aux conteneurs d'utiliser leurs propr> être changé pour permettre aux conteneurs d'utiliser leurs propr
>es IU, probablement natives. L'éditeur doit pouvoir faire des app>es IU, probablement natives. L'éditeur doit pouvoir faire des app
>els à travers une ou plusieurs interfaces quand il communique ave>els à travers une ou plusieurs interfaces quand il communique ave
>c l'IU.>c l'IU.
n81        <code>&lt;editor&gt;</code> doit vous offrir un éditeur fn81        <code>&lt;editor&gt;</code> devrait vous offrir un éditeu
>onctionnel dans une application XUL>r fonctionnel dans une application XUL
n87      <li>Les conteneurs doivent être capable de fournir leur pron87      <li>Les conteneurs devraient être capables de fournir leur 
>pre interface (barre d'outils etc).>propre interface (barre d'outils, etc).
n96      <li>traiter les documents contenant des <code>&lt;iframe&gtn96      <li>il doit pouvoir traiter les documents contenant des <co
>;</code>s>de>&lt;iframe&gt;</code>s
n98      <li>il ne doit pas dépendre d'une structure de document XULn98      <li>il ne doit pas dépendre d'une structure de document XUL
 > donnée
t111      <li>Faire une nouvelle interface&nbsp;: <b><code>nsIEditorFt111      <li>Faire une nouvelle interface&nbsp;: <b><code>nsIEditorF
>rame</code></b> qui est exécutée par <code>nsDocShell</code> ou u>rame</code></b> qui est exécutée par <code>nsDocShell</code> ou u
>ne classe liée. On doit pouvoir faire appel à l'une d'entre-elle >ne classe liée. On doit pouvoir faire appel à l'une d'entres elle
>à partir de <code>nsIDocShell</code>, si l'appel réussit, il indi> à partir de <code>nsIDocShell</code>, si l'appel réussit, il ind
>que que la frame est éditable. <code>nsIEditorFrame</code> doit c>ique que la frame est éditable. <code>nsIEditorFrame</code> doit 
>ontenir des méthodes pour obtenir la session d'édition et faire c>contenir des méthodes pour obtenir la session d'édition et faire 
>ertains traitements génériques liés à l'éditeur (probablement com>certains traitements génériques liés à l'éditeur (probablement co
>mun à l'édition HTML et texte brut). Une partie de <code>nsIEdito>mmun à l'édition HTML et texte brut). Une partie de <code>nsIEdit
>rShell</code> devraient probablement passer dans cette interface.>orShell</code> devraient probablement passer dans cette interface
> (Cela devrait être analogue à l'interface [http://lxr.mozilla.or>. (Cela devrait être analogue à l'interface [http://lxr.mozilla.o
>g/seamonkey/source/docshell/base/nsIWebNavigation.idl <code>nsIWe>rg/seamonkey/source/docshell/base/nsIWebNavigation.idl <code>nsIW
>bNavigation</code> utilisée par le navigateur.)>ebNavigation</code> utilisée par le navigateur.)

Retour à l'historique