Envoyé par : Naiekko
Date : 07/06/2005 11:00
Bonjour,
Je suis débutant en XUL et je voulais savoir si il était possible de créer des onglets et de les fermer, par exemple comme le menu contextuel de Firefox sur les onglets?
Par avance merci !
Envoyé par : Utilisateur anonyme
Date : 07/06/2005 11:10
Oui c'est tout à fait possible. Moi je l'ai fait en passant par une fonction JavaScript :
function InsererNouvelOnglet(TabId, treeId){ var tree = document.getElementById(treeId); var name = tree.view.getCellText(tree.currentIndex,"name"); var nouveauTab = document.createElement("tab"); nouveauTab.setAttribute("label", name); document.getElementById(TabId).firstChild.appendChild(nouveauTab); }
En fait il suffit de construire ton onglet dynamiquement. Dans l'exemple ci-dessus, je construis un nouvel élément tab et je lui ajoute un nom name au label. Puis je l'attache à l'élément TabId de mon fichier XUL.
Voila, j'espère que cela pourra t'aider.
Arnaud.
Envoyé par : Naiekko
Date : 07/06/2005 12:28
Ca commence à m'aider mais je ne comprends pas à quoi correspondent les variables TabId et treeId?
Envoyé par : Utilisateur anonyme
Date : 07/06/2005 14:35
Désolé de ne pas avoir changé ou expliqué mes variables.
En fait, la variable treeId me permet de récupérer un nom qui me sert à mettre un label à l'onglet.
La variable TabId correspond à l'identifiant d'un élément XUL qui est un objet Tab :
<tabbox id="tablist"> </tabbox>
TabId correspond à l'identifiant tablist qui est déclaré dans le fichier XUL. L'objet XUL tabbox est déjà créé mais il ne contient rien puisque c'est ma fonction javascript qui va créer les éléments fils (tabs) de l'élément tabbox.
Voila j'espère que j'ai été un peu plus clair.
Arnaud.
Envoyé par : Naiekko
Date : 07/06/2005 15:04
Ouaip c'est un peu plus clair sauf que quand j'essaye de créer un nouvel onglet en mettant dans treeId un nom quelconque j'obtient : Erreur : tablist is not defined Qu'est-ce que je fais pas correctement?
Envoyé par : Utilisateur anonyme
Date : 07/06/2005 17:53
En fait tu n'as pas besoin de treeId surtout si tu sais quel label va avoir ton onglet. Je reprens mon code :
Dans la fonction JavaScript :
function InsererNouvelOnglet(TabId){ var nouveauTab = document.createElement("tab"); nouveauTab.setAttribute("label", "le_label_de_longlet"); document.getElementById(TabId).firstChild.appendChild(nouveauTab); }
Dans ton fichier XUL :
<tabbox id="tablist"> <tabs> </tabs> </tabbox> <button label="AjouterOnglet" oncommand="InsererNouvelOnglet('tablist')"/>
Je crois que j'avais oublié l'élément tabs. La fonction JavaScript va ajouter l'élément nouveauTab au 1er fils de l'élément tabbox qui est l'élément tabs. Le bouton permet juste d'appeler la fonction JavaScript.
Arnaud.
Envoyé par : Naiekko
Date : 08/06/2005 09:56
Merci beaucoup !
Est-ce qu'on peut faire l'inverse c'est-à-dire fermer les onglets ouverts?
Envoyé par : Julien Appert
Date : 08/06/2005 10:26
J'ai bricolé un exemple qui gère la création et la suppression d'onglets avec menu contextuel et bouton de fermeture.
Enjoy.
Envoyé par : Naiekko
Date : 08/06/2005 11:15
Merci beaucoup c'est vraiment cool :D
Envoyé par : skyba
Date : 10/06/2005 12:27
je viens de jeter un oeil au code de la suppression en fait et vous allez me dire si je me trompe mais: On supprime bien le tab qui est sélectionné mais on ne supprime pas le tabpanel qui va avec! Le lien est cassé donc on ne peut plus y accéder mais pour optimiser un peut je pense qu'il serait nécessaire de libérer l'espace occupé. C'est surtout dans le cas où le tabpanel contiendrai un document assez conséquent et donc occupant un peu de mémoire ;)
mais j'avoue c'est du chipotage de ma part
Envoyé par : Julien Appert
Date : 10/06/2005 13:10
C'est vrai, j'ai oublié de supprimer le tabpanel. Y a des claques qui se perdent... ;o)
Envoyé par : Naiekko
Date : 14/06/2005 15:20
J'ai une autre question sur la fermeture des onglets, je voulais savoir comment si il était possible de ne pas fermer tous les onglets sur l'action onclosetab?
Envoyé par : skyba
Date : 14/06/2005 15:33
tu peux juste fermer l'onglet sélectionné à l'aide du DOM:
var nodetab = document.getElementsByAttribute('selected','true');
et le supprimer
Envoyé par : Julien Appert
Date : 14/06/2005 15:36
Je ne comprends pas ton problème. Sur mon exemple, l'action onclosetab ne ferme que l'onglet sélectionné.
Envoyé par : Naiekko
Date : 14/06/2005 15:57
Je veux pouvoir conserver les deux premiers onglets créés au début et donc ne pas les fermer si je clique sur l'image tabbox-close.
Il n'est plus possible de poster des messages dans ce forum.
Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.
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.