Écrit par Neil Deakin
,
mise à jour par les contributeurs à MDC
.
Traduit par Nadine Henry (24/07/2004), mise à jour par Alain B. (04/04/2007) .
Page originale :
http://developer.mozilla.org/en/docs/XUL_Tutorial/Introduction_to_XBL
Attention : Ce tutoriel est ancien et n'est pas mis à jour. Bien que beaucoup d'informations soient encore valables pour les dernières versions de gecko, beaucoup sont aussi obsolètes. Il est préférable d'aller consulter cette page sur la version française de ce tutoriel sur developer.mozilla.org.
XUL a un langage qui lui est parent, XBL (eXtensible Bindings Language). Ce langage est utilisé pour déclarer le comportement des éléments graphiques de XUL.
Vous pouvez utiliser XUL pour définir la mise en page de l'interface utilisateur d'une application. Vous pouvez adapter l'apparence des éléments en leur appliquant des styles. Vous pouvez aussi créer de nouveaux thèmes en modifiant les styles. L'apparence basique de tous les éléments, comme les barres de défilement et les cases à cocher pourrait être modifiée en ajustant le style ou en déclarant des attributs à l'élément. Cependant, XUL ne fournit aucun moyen de vous permettre de changer le fonctionnement d'un élément. Par exemple, vous pourriez vouloir changer le fonctionnement des composants d'une barre de défilement. Pour cela, vous avez besoin de XBL.
Un fichier XBL contient un ensemble de liaisons. Chaque liaison décrit le comportement d'un élément graphique de XUL. Par exemple, une liaison pourrait être attachée à une barre de défilement. Le comportement décrit les propriétés et méthodes de la barre de défilement en plus de décrire les éléments de XUL qui la composent.
Comme XUL, XBL est un langage XML, ainsi il a des règles syntaxiques similaires. L'exemple suivant montre le squelette basique d'un fichier XBL :
<?xml version="1.0"?>
<bindings xmlns="http://www.mozilla.org/xbl">
<binding id="liaison1">
<!-- le contenu, la propriété, la méthode et les descriptions d'évènements viennent ici -->
</binding>
<binding id="liaison2">
<!-- le contenu, la propriété, la méthode et les descriptions d'évènements viennent ici -->
</binding>
</bindings>
L'élément bindings
est
l'élément racine d'un fichier XBL et contient un ou plusieurs élément binding
. Chaque élément binding
déclare une seule liaison.
L'attribut id
peut être utilisé pour identifier la liaison,
comme dans l'exemple ci-dessus. Le modèle a deux liaisons, l'une appelée liaison1 et
l'autre appelée liaison2. L'une pourrait être attachée à une barre de défilement et
l'autre à un menu. Une liaison peut être attachée à n'importe quel élément de XUL. Si vous utilisez
des classes CSS, vous pouvez utiliser autant de liaisons que vous avez besoin. Notez l'espace de
nommage de l'élément bindings
dans le modèle ci-dessus. Il déclare que nous sommes en train d'utiliser une syntaxe XBL.
Vous assignez une liaison à un élément en déclarant la propriété CSS -moz-binding
avec l'URL des fichiers de liaisons. Par exemple :
scrollbar {
-moz-binding: url('chrome://findfile/content/findfile.xml#binding1');
}
L'URL pointe vers la liaison avec l'id
binding1 dans le fichier
'chrome://findfile/content/findfile.xml'. La syntaxe '#binding1' est utilisée pour pointer vers une
liaison spécifique, de la même façon que si vous pointiez vers une ancre dans un fichier HTML. Vous
mettrez habituellement toutes vos liaisons dans un seul fichier. Le résultat dans cet exemple,
est que toutes les barres de défilement auront leur comportement décrit par la liaison
"binding1". Si vous n'utilisez pas d'ancres dans l'URL -moz-binding
,
la première liaison dans le fichier XBL sera utilisée.
Une liaison déclare cinq types de choses :
L'élément box
est suffisamment générique
pour que vous l'utilisiez afin de créer des éléments graphiques personnalisés
(bien que vous puissiez utiliser d'autres éléments, même un élément composé par vous-même).
En assignant un attribut class
à une balise
box
, vous associez une liaison
aux boîtes qui possèdent cette classe. L'exemple suivant le démontre :
XUL (example.xul):
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<?xml-stylesheet href="chrome://example/skin/example.css" type="text/css"?>
<window
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<box class="okcancelbuttons"/>
</window>
CSS (example.css):
box.okcancelbuttons {
-moz-binding: url('chrome://example/skin/example.xml#okcancel');
}
XBL (example.xml):
<?xml version="1.0"?>
<bindings xmlns="http://www.mozilla.org/xbl"
xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<binding id="okcancel">
<content>
<xul:button label="OK"/>
<xul:button label="Annuler"/>
</content>
</binding>
</bindings>
Cet exemple crée une fenêtre avec une seule boîte. La boîte a été déclarée pour avoir un
attribut class
de valeur okcancelbuttons.
La feuille de styles associée au fichier indique que les boîtes avec les classes
okcancelbuttons ont une liaison spécialisée,
définie dans le fichier XBL. Vous pouvez employer d'autres éléments derrière l'élément
box
,
même pour votre propre balise adaptée.
Nous verrons plus de détails concernant la partie XBL dans la section suivante. Cependant, pour récapituler, cet exemple entraîne l'ajout automatique de deux boutons dans la boîte, un bouton Ok et un autre Annuler.
Dans la prochaine section, nous verrons comment créer un contenu avec XBL.
Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™
sont des marques de la fondation Mozilla.