12.7 Overlays inter-paquetage

Écrit par Neil Deakin , mise à jour par les contributeurs à MDC .
Traduit par Alain B. (04/04/2007).
Page originale : http://developer.mozilla.org/en/docs/XUL_Tutorial/Cross_Package_Overlays

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.

Cette section décrit comment appliquer des overlays à des fichiers qui ne les importent pas.

Application d'overlays à d'autres paquetages

Note : Cette section traite de contents.rdf qui a été remplacé par des fichiers manifest depuis Gecko 1.8.

Les overlays ont d'autres fonctionnalités très utiles. Dans les exemples de la section précédente, les overlays étaient importés par la fenêtre. Vous pouvez aussi utiliser une autre méthode en indiquant aux overlays pour quelles fenêtres ils seront appliqués. Il vous suffit de modifier le fichier contents.rdf de votre paquetage. Cette méthode est très utile car elle permet à un overlay de modifier l'interface utilisateur d'un autre paquetage sans pour cela modifier celui-ci. Par exemple, vous pouvez ajouter des items de menu ou des barres d'outils à la fenêtre du navigateur Mozilla.

Nous utiliserons cette fonctionnalité pour ajouter une barre d'outils dans le fenêtre du navigateur Mozilla. Le client courrier de Mozilla utilise les overlays pour ajouter du contenu à la fenêtre du navigateur. Par exemple, si le client n'est pas installé, il n'y a pas de commande pour de nouveaux messages. Toutefois, si le client est installé, un overlay sera appliqué au menu pour ajouter une commande de nouveaux messages. Ci-dessous, nous ajouterons une barre d'outils de recherche de fichiers au navigateur. Cette fonctionnalité n'a aucune utilité, mais nous l'intégreront quand même.

Mozilla vous permet d'ajouter une liste d'overlays dans le fichier contents.rdf utilisé pour spécifier les paquetages chrome, les thèmes graphiques et les localisations. Dès que vous avez créé un overlay, vous pouvez l'ajouter au fichier contents.rdf. Il vous suffit d'ajouter les informations pour chacune des fenêtres où vous voulez appliquer l'overlay.

Notre exemple de recherche de fichiers

Tout d'abord, créons un simple overlay. Il contiendra quelques champs de saisie pour la recherche d'un nom de fichier et d'un répertoire. Chargez le fichier foverlay.xul et ajoutez-le au répertoire de notre exemple de recherche de fichiers à côté de findfile.xul.

Notre exemple foverlay.xul

Exemple 12.7.1 : Source Voir (avec la balise window)

<?xml version="1.0" encoding="ISO-8859-1" ?>

<overlay
     xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">

<toolbox id="navigator-toolbox">
  <toolbar id="findfile_toolbar">
    <label control="findfile_filename" value="Recherche des fichiers nommés :"/>
    <textbox id="findfile_filename"/>
    <label control="findfile_dir" value="Répertoire :"/>
    <textbox id="findfile_dir"/>
    <button label="Parcourir..."/>
  </toolbar>
</toolbox>

</overlay>

Vous pouvez visualiser cet exemple en changeant l'élément overlay par window. La seule chose un peu spécifique est l'attribut id utilisé sur l'élément toolbox. Cette valeur (navigator-toolbox) est la même que l'identifiant de la boîte d'outils de la fenêtre du navigateur (navigator.xul). Elle signifie que cet overlay sera appliqué à la boîte d'outils du navigateur et que son contenu sera ajouté comme une barre d'outils supplémentaire.

Pour ajouter cet overlay au fichier manifest, vous devons ajouter deux ressources. Premièrement, nous en ajoutons une pour chaque fenêtre où l'overlay sera appliqué. Le code suivant doit être placé dans le fichier contents.rdf juste avant la balise fermante de RDF.

<RDF:Seq RDF:about="urn:mozilla:overlays">
  <RDF:li RDF:resource="chrome://navigator/content/navigator.xul"/>
</RDF:Seq>

Cette déclaration précise l'ajout d'une fenêtre overlay au système de gestion des overlays (urn:mozilla:overlays). Vous pouvez ajouter des n½uds supplémentaires pour chaque fenêtre à modifier en ajoutant des balises li supplémentaires.

Ensuite, nous ajoutons un n½ud pour chaque overlay s'appliquant à la fenêtre. Dans ce cas, vous n'en avez qu'un, mais d'autres peuvent être appliqués. Ajoutez ces lignes à la suite des précédentes :

<RDF:Seq RDF:about="chrome://navigator/content/navigator.xul">
  <RDF:li>chrome://findfile/content/foverlay.xul</RDF:li>
</RDF:Seq>

Mozilla lit cette information et construit une liste d'overlays appliqués à d'autres fenêtres. Il enregistre cette information dans un répertoire chrome/overlayinfo. Il n'est pas nécessaire que vous modifiez manuellement les fichiers de ce répertoire. Ils sont générés automatiquement et modifiés au premier lancement de Mozilla ou lorque de nouveaux paquetages sont installés. Toutefois, vous pouvez forcer la reconstruction de leurs données en effaçant ce répertoire et le fichier chrome.rdf.

Note complémentaire : vous pouvez utiliser cette même technique pour appliquer des feuilles de styles supplémentaires. L'exemple suivant vous montre comment :

<RDF:Seq RDF:about="urn:mozilla:stylesheets">
  <RDF:li RDF:resource="chrome://messenger/content/messenger.xul"/>
</RDF:Seq>

<RDF:Seq RDF:about="chrome://messenger/content/messenger.xul">
  <RDF:li>chrome://blueswayedshoes/skin/myskinfile.css</RDF:li>
</RDF:Seq>

Nous verrons ensuite comment créer un installeur pour une application XUL.


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.