Changeset 11136 for trunk/Xul_XedLib/chrome/content/scenarixedlib/libUiBase/widgets/xedUiInputs.xbl.xml
- Timestamp:
- 06/04/08 11:54:37 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Xul_XedLib/chrome/content/scenarixedlib/libUiBase/widgets/xedUiInputs.xbl.xml
r11135 r11136 47 47 Exemple de noeud xed : <se:template se:id="monMenu"><xul:menuitem label="bonjour"/></se:template> 48 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. 49 deux méthodes : 50 * fillChoicePopup(pRoot, pReadOnly) insérant des balises xul:menuitem et/ou des sous-menus à pRoot. Le provider est appelé 51 à chaque affichage du popup. A lui de décider si la liste doit être rafraichie ou pas si elle est déjà remplie. 52 * getChoiceItem retourne un élément Dom avec un attribut label et optionnellement value correspondant à pVlaue. 53 Retourne null si cette valeur n'appartient pas à la liste autorisée. Le paramètre pChoiceInput pointant le widget xed pourrait permettre une 54 validation asynchrone en appelant un refresh ultérieurement. 51 55 --> 52 56 <binding id="choiceInput" extends="chrome://scenarixedlib/content/libUiBase/widgets/xedUiBase.xbl.xml#input"> … … 131 135 ]]></body> 132 136 </method> 137 <property name="provider"> 138 <getter> 139 if( ! this.fProvider) this.fProvider = document.evaluate(this.getAttribute('providerXPath'), this, document.createNSResolver(this), XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; 140 return this.fProvider; 141 </getter> 142 </property> 133 143 <method name="xFillPopup"> 134 144 <body><![CDATA[ 135 145 if(this.hasAttribute("providerXPath")){ 136 146 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); 147 this.provider.fillChoicePopup(this.fChoicePopup, this.isReadOnly); 139 148 } catch(e){ 140 149 xed.debug("providerXPath not found or failed: "+this.getAttribute('providerXPath') + " - " + e); … … 242 251 this.fSelectedItem = null; 243 252 if(pVal != null) { 244 function findSelectItem (pEnum, pItem, pVal){ 245 while(pItem){ 246 if(pItem.nodeType==1){ 247 if(pItem.localName == "ciSubList") { 248 //On passe en revue les ciItem fils. 249 findSelectItem(pEnum, pItem.firstChild, pVal); 250 if(pEnum.fSelectedItem) return; 251 } else if(pItem.localName == "menu") { 252 //On saute la balise menupopup 253 var vChildItem = pItem.firstChild; 254 while(vChildItem && vChildItem.nodeType != 1) vChildItem = vChildItem.nextSibling; 255 if(vChildItem) { 256 //On passe en revue les menus fils. 257 findSelectItem(pEnum, vChildItem.firstChild, pVal); 253 if(this.hasAttribute("providerXPath")){ 254 this.fSelectedItem = this.provider.getChoiceItem(this, pVal); 255 } else { 256 function findSelectItem (pEnum, pItem, pVal){ 257 while(pItem){ 258 if(pItem.nodeType==1){ 259 if(pItem.localName == "ciSubList") { 260 //On passe en revue les ciItem fils. 261 findSelectItem(pEnum, pItem.firstChild, pVal); 258 262 if(pEnum.fSelectedItem) return; 259 } 260 } else { 261 var vValue = pItem.hasAttribute("value") ? pItem.getAttribute("value") : pItem.getAttribute("label"); 262 if(vValue == pVal) { 263 //xed.debug("vValue == pVal"+xed.getXml(pItem)); 264 if(pItem.getAttribute("collapsed")!="true" && pItem.getAttribute("hidden")!="true") { 265 pEnum.fSelectedItem = pItem; 266 return; 263 } else if(pItem.localName == "menu") { 264 //On saute la balise menupopup 265 var vChildItem = pItem.firstChild; 266 while(vChildItem && vChildItem.nodeType != 1) vChildItem = vChildItem.nextSibling; 267 if(vChildItem) { 268 //On passe en revue les menus fils. 269 findSelectItem(pEnum, vChildItem.firstChild, pVal); 270 if(pEnum.fSelectedItem) return; 271 } 272 } else { 273 var vValue = pItem.hasAttribute("value") ? pItem.getAttribute("value") : pItem.getAttribute("label"); 274 if(vValue == pVal) { 275 //xed.debug("vValue == pVal"+xed.getXml(pItem)); 276 if(pItem.getAttribute("collapsed")!="true" && pItem.getAttribute("hidden")!="true") { 277 pEnum.fSelectedItem = pItem; 278 return; 279 } 267 280 } 268 281 } 269 282 } 283 pItem= pItem.nextSibling; 270 284 } 271 pItem= pItem.nextSibling; 272 } 273 } 274 findSelectItem(this, this.fPopupContent.firstChild, pVal); 285 } 286 findSelectItem(this, this.fPopupContent.firstChild, pVal); 287 } 275 288 } 276 289 if(pVal){ 277 290 this.removeAttribute("empty"); 278 291 if(this.fSelectedItem) { 279 //On affiche de préférence le label.280 292 var vLabel = this.fSelectedItem.getAttribute("label"); 281 293 this.fDisplay.setAttribute("value", vLabel ? vLabel : " ");
Note: See TracChangeset
for help on using the changeset viewer.