Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# overlays dynamique

Envoyé par : wako

Date : 09/05/2006 17:43

Et il possible de charger un overlay dynamiquement ?

J'ai essayer en creer l'id de l'overlay par l'intermédiaire du dom js, sa n'a rien donné.

Comment doit on faire ? ou alors ce n'est peut être tout simplement impossible.

La solution se situe dans les bindings alors p e ?

wako

# Re: overlays dynamique

Envoyé par : thefab

Date : 09/05/2006 21:36

Salut,

Avec loadOverlay()

# Re: overlays dynamique

Envoyé par : wako

Date : 10/05/2006 10:18

En effet, sa charge bien mon overlay, mais quelque chose de bisard ce passe quand même.

Mon overlay contient 1 arbre qui se charge automatiquement via un rdf.

Le problème : l'arbre n'affiche rien alors que dans la source DOM, tout est parfaitement la, tel que sa devrait être chargé.

Au chargement j'obtient une erreur JS :

Erreur : this.view has no properties
Fichier source : chrome://global/content/bindings/tree.xml
Ligne : 0

Quand je fait un :

document.getElementById("addLdapTree").view.rowCount (addLdapTree est le nom de l'id de l'arbre)

J'obtient une erreur dans la console JS :

document.getElementById("addLdapTree") has no property

Bref, je comprend pas pk mes elements ne s'affiche pas.

wako

# Re: overlays dynamique

Envoyé par : laurentj

Date : 10/05/2006 11:51

erreur classique : tu essaie d'acceder à un element qui n'existe pas encore. loadOverlay effectue le chargement de manière asynchrone.

# Re: overlays dynamique

Envoyé par : wako

Date : 10/05/2006 14:15

J'ai pensé à cela, mais ce n'est pas sa.

J'ai mis l'action ci dessus sur un bouton. Je vérifie dans la source DOM l'existance de l'id, et le résultat est le même.

Pour l'instant j'ai tricher en créant deux pagewizard et en fonction des choix précedent, j'affiche l'une ou l'autre. Mais je trouve pas sa tip top.

wako

# Re: overlays dynamique

Envoyé par : wako

Date : 11/05/2006 15:44

J'ai un nouveau petit problème avec ces overlays dynamiques.

Quelqu'un a t il eu le cas d'un overlay contenant un ou plusieurs tree qui se remplisse via des templates ?

Chez moi, tout fonctionne, mais rien ne s'affiche (en contenu).

Quand on regarde la source, on peut récuperer des valeurs qui ne sont pas vu par l'utilisateur (les deux sources DOM des screenshots suivants sont identique, sisi).

Par contre, si on charge l'overlays directement genre

chrome://apl/content/overlays/tree.xul

Dans ce cas là, tout fonctionne parfaitement.

Si quelqu'un à eu le cas, a t il trouvé une solution ?

J'ai essayer de le refresh ainsi que de le rebuild, mais rien n'y fait, toujours pas affiché.

Un peu de code maintenant :

Pour charger mon overlay

document.loadOverlay("chrome://apl/content/overlays/tree.xul", null);

tree.xul :

<?xml version="1.0" encoding="utf8" ?>
<!DOCTYPE overlay SYSTEM "chrome://apl/locale/tree.dtd" >
<overlay
 xmlns:html="http://www.w3.org/1999/xhtml"
 xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
>
 <hbox id="mainTree" flex="8">
  <tree 
   id="ldapTree"
   datasources="http://localhost/apl/data/treeLdap.rdf"
   ref="http://apl/domain"
   hidecolumnpicker="true"
   context="popupTreemenu"
   onclick="getInfo(this)"
   onselect="getInfo(this)"
   min-width="150"
   flex="1">
  <!-- ici ce trouve le contenu + template -->
  <splitter />
  <hbox /> <!-- Dans cet boite s'affiche le contenu de l'item selectionner dans le tree -->
 </hbox>
</overlay>

En cadeau bonus au problème, deux screenshots, l'un avec le loadOverlay et l'autre en notifiant l'overlay dans la fenaitre principal.

celui avec un probleme de loadOverlay

celui sans problème, mais pas charger dynamiquement

wako

# Re: overlays dynamique

Envoyé par : wako

Date : 17/05/2006 09:03

Je n'ai pas trouver de solution au loadoverlay avec un tree, du coup, je triche en utilisant des proprietés d'affichage (display / visibility).

Si quelqu'un trouve une solution, je suis toujours preneur car la mienne alourdie sensiblement le code.

wako

# Re: overlays dynamique

Envoyé par : Eric

Date : 17/07/2006 17:31

Voici une solution

var observer = {
  observe: function(subject, topic, data){
    alert("Topic sent: " + topic);
  }
};
document.loadOverlay("chrome://apl/content/overlays/tree.xul",  observer);

Apès avoir chargé l'overlay, le document notifie l'observer au moyen du topic xul-overlay-merged.

Il faut noter que le système va être modifié en 2.0 : http://developer.mozilla.org/en/docs/doc(..)

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.