TUTORIEL XML 
Les éléments de XUL
Présentation des principales balises du langage d'interface XML de Mozilla : fenêtres, blocs et éléments de mise en page. (30/09/2004)

Apprendre XUL, c'est un peu apprendre à nouveau HTML, mais dans le but de construire les éléments d'une application plutôt que de mettre en page le contenu d'une page. Les éléments XUL sont en effet très divers, et rangé par groupe de fonctionnalités : boîte, grille, liste, menu, raccourcis clavier...

Nous allons prendre le temps de présenter les principaux éléments de XUL, en s'efforçant autant que possible de donner des exemples. Ce faisant, nous nous construirons donc un dictionnaire d'où tirer le vocabulaire nécessaire à la construction d'interfaces XUL.

Les fenêtres
window
C'est l'élément de base de tout document XUL : il permet de définir une fenêtre, par défaut affichant ses éléments horizontalement (l'un après l'autre). C'est l'équivalent de la balise body du HTML. Il ne peut y avoir qu'un seul élément window par fenêtre/fichier.
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<window id="identifiant" title="Ceci est un titre" xmlns="http://www.mozilla.org/keymaster/
gatekeeper/there.is.only.xul">
...
</window>

page
Comme window, mais réservé aux fichiers XUL chargés au sein d'une iframe (contenue par window).

dialog
Remplace window dans le cas où le fichier XUL sert à afficher une boîte de dialogue.

Overlay
Permet de définir un bloc réutilisable par plusieurs fenêtres, comme des menus. Cela permet de simplifier les fichiers, et de modulariser les fonctionnalités. Ils disposent d'une déclaration XUL à part :
<?xul-overlay href="chrome://global/content/globalOverlay.xul"?>

wizard
Un type particulier de fenêtre, toujours accompagné de wizardpage, chargé de guider l'utilisateur à travers d'une série d'étapes, chacune ayant un écran différent.
<wizard id="instal" title="Installation du logiciel" onwizardcancel="return annulerInstal();" onwizardfinish="return terminerInstal();" xmlns="http://www.mozilla.org/keymaster/ gatekeeper/there.is.only.xul">
  <wizardpage id="wPage1" pageid="page1">
...
  </wizardpage>
  <wizardpage id="wPage2" pageid="page2">
...
  </wizardpage>
  <wizardpage id="wPage3" pageid="page3">
...
  </wizardpage>
</wizard>

Les blocs

Sans être des éléments visuels, ce sont les conteneurs de base permettant de positionner les éléments de plus haut niveau.
box
Cet élément sert à regrouper un nombre indéfini d'éléments - on peut bien entendu orienter leur placement (gauche-droite, vertical, ...). box est la version la plus simplifié de cet ensemble, mais pas le plus pratique à utiliser car il faut tout y définir (dans le cas où l'agencement par défaut ne convient pas).

hbox, bbox et vbox
Ces trois éléments ont été créés pour simplifier légèrement la création de bloc :
- hbox est en fait box, mais le h est un rappel que l'agencement est horizontal
- pareillement, vbox correspond à box si on lui donnait pour attribut orient="vertical",
- bbox, enfin, correspond à hbox (donc, box) auquel on aurait attribué align="baseline", c'est-à-dire que les étiquettes ("label") des éléments qu'il contient sont alignés.

<vbox>
  <description>Bla bla bla</description>
  <image src="lapin.png">
</vbox>

Quelques éléments de mise en page
stack
Permet de grouper des blocs d'éléments les uns derrière les autres. C'est le dernier élément ajouté qui est placé "en haut de la pile".
<stack>
  <button label="Matin" left="0" top="0" />
  <button label="Midi" left="15" top="15"/>
  <button label="Soir" left="30" top="30"/>
</stack>

deck
Comme stack, mais n'affiche un élément à la fois, cet élément étant déterminé par l'attribut selectedIndex.
<deck selectedIndex="2">
  <button label="Matin" left="0" top="0" />
  <button label="Midi" left="15" top="15"/>
  <button label="Soir" left="30" top="30"/>
</deck>

n'affichera que le bouton "Midi", le second dans la liste. La disposition peut ensuite être modifiée en travaillant selectedIndex via le DOM.

scrollbox et arrowscrollbox
Permettent de grouper des éléments au sein d'un bloc, et de faire apparaître (explicitement ou implicitement) des flèches de déplacement dans le cas où le contenu prendrait plus de place que son contenant.
<scrollbox width="200" height="200">
  <button width="150" label="grosbutton" />
  <button width="150" label="grrrrosbutton" />
</scrollbox>

  Forum

Réagissez dans les forums de JDN Développeurs

iframe
A la manière de son homonyme en HTML, iframe permet de créer, au sein d'un document, une "fenêtre" où se charge un document externe (HTML, XUL, ...).
<iframe id="options" src="quizz.xul" />

Nous aborderons les éléments graphiques lors d'un prochain article...

 
Xavier Borderie, JDN Développeurs
 
Accueil | Haut de page
 
 





Quand achetez-vous le plus en ligne ?
Du lundi au vendredi
Le samedi
Le dimanche

Tous les sondages