Changeset 11135


Ignore:
Timestamp:
06/03/08 20:40:12 (4 years ago)
Author:
sys
Message:

choice input : possibilité de spécifier un provider pour le contenu de l'énumération.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Xul_XedLib/chrome/content/scenarixedlib/libUiBase/widgets/xedUiInputs.xbl.xml

    r10950 r11135  
    4242        <!-- xul:choiceInput  
    4343                 
    44                 2 possibilités pour spécifier le contenu du popup : 
    45                 - balises filles de xul:choiceInput  : <ciItem label="" value=""/>, <ciSeparator/> (adapté si peu de valeurs) 
    46                 - attribut "menupopup" spécifiant un noeud xed avec id : "url#id" ou "#id" si le noeud est dans le même fichier xed. (adapté si beaucoup de valeurs, si menu hiérarchique ou si réutilisés plusieurs fois) 
    47                   Exemple de noeud xed : <se:template se:id="monMenu"><xul:menuitem label="bonjour"/></se:template>  
     44                Trois possibilités pour spécifier le contenu du popup : 
     45                1. Balises filles de xul:choiceInput  : <ciItem label="" value=""/>, <ciSeparator/> (adapté si peu de valeurs) 
     46                2. Attribut "menupopup" spécifiant un noeud xed avec id : "url#id" ou "#id" si le noeud est dans le même fichier xed. (adapté si beaucoup de valeurs, si menu hiérarchique ou si réutilisés plusieurs fois) 
     47                   Exemple de noeud xed : <se:template se:id="monMenu"><xul:menuitem label="bonjour"/></se:template>  
     48                3. Attribut "providerXPath" spécifiant un xpath permettant de pointer un élément du document en cours qui implémente 
     49                   une méthode fillChoicePopup(pRoot) insérant des balises xul:menuitem et ou des sous-menus à pRoot. Le provider est appelé 
     50                   à chaque affichage du popup. A lui de décider si la liste doit être rafraichie ou pas si elle est déjà remplie. 
    4851        --> 
    4952        <binding id="choiceInput" extends="chrome://scenarixedlib/content/libUiBase/widgets/xedUiBase.xbl.xml#input"> 
     
    130133                        <method name="xFillPopup"> 
    131134                                <body><![CDATA[ 
    132                                         if( ! this.fChoicePopup.hasChildNodes() && this.fPopupContent) { 
     135                                        if(this.hasAttribute("providerXPath")){ 
     136                                                try { 
     137                                                        if( ! this.fProvider) this.fProvider = document.evaluate(this.getAttribute('providerXPath'), this, vModel.ownerDocument.createNSResolver(vModel), XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; 
     138                                                        this.fProvider.fillChoicePopup(this.fChoicePopup); 
     139                                                } catch(e){ 
     140                                                        xed.debug("providerXPath not found or failed: "+this.getAttribute('providerXPath') + " - " + e); 
     141                                                } 
     142                                        } else if( ! this.fChoicePopup.hasChildNodes() && this.fPopupContent) { 
    133143                                                //Aucune ligne de menu, on le remplit. 
    134144                                                var vReadOnly = this.isReadOnly; 
Note: See TracChangeset for help on using the changeset viewer.