Forums : Les possiblités de la plateforme Mozilla

Aller à la discussion :  Plus récente Plus ancienne

# Quand utiliser XBL ? Quand utiliser un Overlay ? Encore un peu flou...

Envoyé par : Raphael

Date : 17/06/2007 20:06

Bonjour, et oui c'est encore moi, je suis en plein retour en force dans le développement XUL et j'ai tout plein de questions, désolé =p

A mes débuts, j'ai laissé de côté tout ce qui était XBL/Overlay, trop compliqué pour un débutant. Je me suis donc attaché à découvrir XUL tant bien que mal et je développe pour l'instant à peu près ce que je veux...

... mais plus je développe, plus je me rend compte que je suis très brouillon, n'étant pas informaticien de formation. Alors oui, j'arrive à mes fins, mais avec des fonctions très brouillons, et je commence à arriver au bout de cette méthode de programmation, j'en ressens maintenant complètement les limites !

Ainsi, je m'intéresse à une nouvelle façon de programmer, plus "simple" à réutiliser à terme, et donc, à XBL, aux Overlays,... Je comprends aujourd'hui mieux ces notions qu'avant, mais il reste encore quelques flous dans mon esprit concernant l'utilisation de ces 2 types de technologies.

  • XBL semble plus destiné à la création de widgets réutilisables à volonté. On peut passer des paramètres, créer des méthodes, etc...
  • Les Overlay semblent destinés à des éléments communs à plusieurs fenêtres, pour éviter de les réécrire et centraliser ainsi les MAJ. Mais peut-on les utiliser pour modifier son Menu par exemple, comme sous Mac, je m'explique : Sous Mac, la barre de menu est commune pour toutes les applications et change donc selon l'application qui a le focus. Imaginons que j'ai un logiciel qui se compose de différents modules, et donc mon menu comporterait une partie commune, et une partie spécifique à chaque module. Peut-on définie la partie propre à chaque module dans des Overlay pour les inclure selon le module qui a le focus ? Comment faire ? Faut-il changer par exemple notre "<menu id="module_1" />" en "<menu id="module_2" />" ? Mais ce n'est pas très pratique par ID... Peut-on utiliser les Overlay avec des class en transformant par exemple "<menu id="main_menu" class="module_1" />" en "<menu id="main_menu" class="module_2" />" ?

Maintenant voici mon type de problème : J'ai une application me permettant de naviguer dans une base de données de cartes, que je peux ajouter à un "panier"... C'est donc un créateur de "paniers" en seomme.

Actuellement, tout est codé en JS/XUL... Je n'ai donc qu'une seule instance de cette navigation et de cette création de "panier".

Je voudrais maintenant pouvoir créer plusieurs instances de création de "panier"... par exemple, par un système d'onglets qui me permettrait de remplir plusieurs paniers simultanément. Mais comment faire ?

  • J'avais pensé à tabbrowser chargeant un fichier .xul identique dans chaque Tab (ou bien simuler tabbrowser avec des Tabs + iFrame), mais là, je ne sais pas du tout comment créer mon code, pour que les onglets ne se mélangent pas les pinceaux. En effet, les éléments auraient les même ID, et mes variables seraient les mêmes... Je ne vois pas comment modifier mon code pour créer à chaque fois une nouvelle instance de mes variables pour la navigation et la création de mon "panier"
  • Avec XBL est-ce possible ? Je pourrais créer un "type d'interface de remplissage de panier" que je pourrais réutiliser dans chaque onglet ? Mais là encore, la partie du code m'échappe, faudrait-il obligatoirement créer des méthodes XBL pour tout gérer ? Ma navigation comporte un treeview personnalisé avec connexion SQLite3, est-ce faisable en XBL ? Peut-on atteindre des variables JS depuis XBL ?
  • Avec des Overlay, je pourrais dans chaque onglet appeler une box avec un ID me permettant de le remplir de mon interface par Overlay... Mais pourrais-je avoir 2 instances ? Pas en utilisant l'ID je pense, mais en utilisant class serait-ce possible ? Du genre, chaque tab serait définie comme ça :
<tab id="tab_1 class="creation_panier" />
<tab id="tab_2 class="creation_panier" />

Et pareil que précédemment, comment disposer mon code JS ? Comment l'adapter et où le charger ?

Voilà, je ne sais pas si vous avez eu le courage de tout lire jusqu'au bout... Si oui, je vous tire mon chapeau.

J'espère que j'ai été assez clair sur ce que je voudrais pouvoir faire et les points que j'ai du mal à comprendre.

Merci d'avance.

# Re: Quand utiliser XBL ? Quand utiliser un Overlay ? Encore un peu flou...

Envoyé par : thefab

Date : 18/06/2007 09:57

Je ne suis pas tout à fait sur de ce que j'avance, à vérifier donc, mais un script rattaché à une fenêtre ne concerne que celle-ci: donc si tu as plusieurs fenêtres avec un script panier.js il y aura autant d'instances que de fenêtres (d'où les nombreuses questions sur le forum pour créer des variables vraiment globales). Concernant les identifiants il faudrait tester si appeler getElementById() depuis l'onglet (et non pas depuis le document) retourne bien le bon élément ?

# Re: Quand utiliser XBL ? Quand utiliser un Overlay ? Encore un peu flou...

Envoyé par : Raphael

Date : 18/06/2007 10:14

Oui, c'est effectivement l'un de mes problèmes : Si je lançais 2 fenêtre différentes, il n'y aurait pas de problèmes je pense car chacune marcherait indépendamment l'une de l'autre...

Mais est-ce possible non pas dans 2 fenêtres mais plutôt dans 2 onglets différents d'une même fenêtre ? Je ne sais pas... et si oui, comment ? Overlay ? XBL ? Tabbrowser ? Tabbrowser émulé par Tab + iFrame ?

# Re: Quand utiliser XBL ? Quand utiliser un Overlay ? Encore un peu flou...

Envoyé par : thefab

Date : 18/06/2007 11:19

Mais est-ce possible non pas dans 2 fenêtres mais plutôt dans 2 onglets différents d'une même fenêtre ?

Je ne sais pas mais si tu places ça dans des tabs + iframe ça devrait revenir au même que plusieurs fenêtres. Les scripts devraient être indépendants et getElementById() depuis de document à l'intérieur de l'iframe (et non du document principal) devrait fonctionner correctement.

Après si ça fonctionne tu peux toujours transformer ça en XBL, overlay ou autre. Mais je ne vois vraiment pas ce que ça peut améliorer dans ton cas précis.

# Re: Quand utiliser XBL ? Quand utiliser un Overlay ? Encore un peu flou...

Envoyé par : Raphael

Date : 20/06/2007 09:09

En fait tu as raison, ça marche très bien avec des Tabbrowser... Il faut mieux que j'utilise XBL pour par exemple créer un objet "carte" que je reconstituerai avec stack à partir de son image, de son texte, de ses propriétés, là je pense que ce serait pertinent.

Concernant mon menu dont je veux que le contenu change selon le module se trouvant dans le Tab qui a le focus, est-ce qu'un Overlay est là bonne chose à faire ? Je sais qu'en théorie, c'est fait pour un objet qui va se répéter plusieurs fois... mais là c'est plutôt pour définir plusieurs menus d'un même menu selon le Tab ouvert, c'est possible ?

Mon idée générale serait :

  • Attacher un AddEventListener à mon tabbrowser
  • Sur un changement, je regarde la class de mon tab (que j'aurai préalablement affecté du nom du module genre class="deck_manager")
  • Si c'est un onglet d'un module différent, alors on change l'id du menu pour charger l'overlay du menu du module correspondant au nouvel onglet.

C'est faisable ça ? Et est-ce possible de scruter directement la "class" de mon onglet, afin qu'il n'y ait même pas de tests à faire sur la class pour savoir si on change d'onglet mais pas de module, mais que le scrutateur ne se déclenche réellement que lorsqu'on change d'onglets ET de module ?

Merci.

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.