root / trunk / web / dojo / dojox / form / manager / _Mixin.js
History | View | Annotate | Download (6.06 KB)
| 1 |
/*
|
|---|---|
| 2 |
Copyright (c) 2004-2010, The Dojo Foundation All Rights Reserved.
|
| 3 |
Available via Academic Free License >= 2.1 OR the modified BSD license.
|
| 4 |
see: http://dojotoolkit.org/license for details
|
| 5 |
*/
|
| 6 |
|
| 7 |
|
| 8 |
if(!dojo._hasResource["dojox.form.manager._Mixin"]){ |
| 9 |
dojo._hasResource["dojox.form.manager._Mixin"]=true; |
| 10 |
dojo.provide("dojox.form.manager._Mixin");
|
| 11 |
dojo.require("dijit._Widget");
|
| 12 |
(function(){
|
| 13 |
var fm=dojox.form.manager,aa=fm.actionAdapter=function(_1){ |
| 14 |
return function(_2,_3,_4){ |
| 15 |
if(dojo.isArray(_3)){
|
| 16 |
dojo.forEach(_3,function(_5){
|
| 17 |
_1.call(this,_2,_5,_4);
|
| 18 |
},this);
|
| 19 |
}else{
|
| 20 |
_1.apply(this,arguments); |
| 21 |
} |
| 22 |
}; |
| 23 |
},ia=fm.inspectorAdapter=function(_6){ |
| 24 |
return function(_7,_8,_9){ |
| 25 |
return _6.call(this,_7,dojo.isArray(_8)?_8[0]:_8,_9); |
| 26 |
}; |
| 27 |
},_a={domNode:1,containerNode:1,srcNodeRef:1,bgIframe:1},_b=fm._keys=function(o){
|
| 28 |
var _c=[],_d;
|
| 29 |
for(_d in o){ |
| 30 |
if(o.hasOwnProperty(_d)){
|
| 31 |
_c.push(_d); |
| 32 |
} |
| 33 |
} |
| 34 |
return _c;
|
| 35 |
},_e=function(_f){ |
| 36 |
var _10=_f.get("name"); |
| 37 |
if(_10&&_f instanceof dijit.form._FormWidget){ |
| 38 |
if(_10 in this.formWidgets){ |
| 39 |
var a=this.formWidgets[_10].widget; |
| 40 |
if(dojo.isArray(a)){
|
| 41 |
a.push(_f); |
| 42 |
}else{
|
| 43 |
this.formWidgets[_10].widget=[a,_f];
|
| 44 |
} |
| 45 |
}else{
|
| 46 |
this.formWidgets[_10]={widget:_f,connections:[]}; |
| 47 |
} |
| 48 |
}else{
|
| 49 |
_10=null;
|
| 50 |
} |
| 51 |
return _10;
|
| 52 |
},_11=function(_12){ |
| 53 |
var _13={};
|
| 54 |
aa(function(_14,w){
|
| 55 |
var o=w.get("observer"); |
| 56 |
if(o&&typeof o=="string"){ |
| 57 |
dojo.forEach(o.split(","),function(o){ |
| 58 |
o=dojo.trim(o); |
| 59 |
if(o&&dojo.isFunction(this[o])){ |
| 60 |
_13[o]=1;
|
| 61 |
} |
| 62 |
},this);
|
| 63 |
} |
| 64 |
}).call(this,null,this.formWidgets[_12].widget); |
| 65 |
return _b(_13);
|
| 66 |
},_15=function(_16,_17){ |
| 67 |
var t=this.formWidgets[_16],w=t.widget,c=t.connections; |
| 68 |
if(c.length){
|
| 69 |
dojo.forEach(c,dojo.disconnect); |
| 70 |
c=t.connections=[]; |
| 71 |
} |
| 72 |
if(dojo.isArray(w)){
|
| 73 |
dojo.forEach(w,function(w){
|
| 74 |
dojo.forEach(_17,function(o){
|
| 75 |
c.push(dojo.connect(w,"onChange",this,function(evt){ |
| 76 |
if(this.watch&&dojo.attr(w.focusNode,"checked")){ |
| 77 |
this[o](w.get("value"),_16,w,evt); |
| 78 |
} |
| 79 |
})); |
| 80 |
},this);
|
| 81 |
},this);
|
| 82 |
}else{
|
| 83 |
var _18=w.declaredClass=="dijit.form.Button"?"onClick":"onChange"; |
| 84 |
dojo.forEach(_17,function(o){
|
| 85 |
c.push(dojo.connect(w,_18,this,function(evt){ |
| 86 |
if(this.watch){ |
| 87 |
this[o](w.get("value"),_16,w,evt); |
| 88 |
} |
| 89 |
})); |
| 90 |
},this);
|
| 91 |
} |
| 92 |
}; |
| 93 |
dojo.declare("dojox.form.manager._Mixin",null,{watch:true,startup:function(){ |
| 94 |
if(this._started){ |
| 95 |
return;
|
| 96 |
} |
| 97 |
this.formWidgets={};
|
| 98 |
this.formNodes={};
|
| 99 |
this.registerWidgetDescendants(this); |
| 100 |
this.inherited(arguments); |
| 101 |
},destroy:function(){ |
| 102 |
for(var _19 in this.formWidgets){ |
| 103 |
dojo.forEach(this.formWidgets[_19].connections,dojo.disconnect);
|
| 104 |
} |
| 105 |
this.formWidgets={};
|
| 106 |
this.inherited(arguments); |
| 107 |
},registerWidget:function(_1a){ |
| 108 |
if(typeof _1a=="string"){ |
| 109 |
_1a=dijit.byId(_1a); |
| 110 |
}else{
|
| 111 |
if(_1a.tagName&&_1a.cloneNode){
|
| 112 |
_1a=dijit.byNode(_1a); |
| 113 |
} |
| 114 |
} |
| 115 |
var _1b=_e.call(this,_1a); |
| 116 |
if(_1b){
|
| 117 |
_15.call(this,_1b,_11.call(this,_1b)); |
| 118 |
} |
| 119 |
return this; |
| 120 |
},unregisterWidget:function(_1c){ |
| 121 |
if(_1c in this.formWidgets){ |
| 122 |
dojo.forEach(this.formWidgets[_1c].connections,this.disconnect,this); |
| 123 |
delete this.formWidgets[_1c]; |
| 124 |
} |
| 125 |
return this; |
| 126 |
},registerWidgetDescendants:function(_1d){ |
| 127 |
if(typeof _1d=="string"){ |
| 128 |
_1d=dijit.byId(_1d); |
| 129 |
}else{
|
| 130 |
if(_1d.tagName&&_1d.cloneNode){
|
| 131 |
_1d=dijit.byNode(_1d); |
| 132 |
} |
| 133 |
} |
| 134 |
var _1e=dojo.map(_1d.getDescendants(),_e,this); |
| 135 |
dojo.forEach(_1e,function(_1f){
|
| 136 |
if(_1f){
|
| 137 |
_15.call(this,_1f,_11.call(this,_1f)); |
| 138 |
} |
| 139 |
},this);
|
| 140 |
return this.registerNodeDescendants?this.registerNodeDescendants(_1d.domNode):this; |
| 141 |
},unregisterWidgetDescendants:function(_20){ |
| 142 |
if(typeof _20=="string"){ |
| 143 |
_20=dijit.byId(_20); |
| 144 |
}else{
|
| 145 |
if(_20.tagName&&_20.cloneNode){
|
| 146 |
_20=dijit.byNode(_20); |
| 147 |
} |
| 148 |
} |
| 149 |
dojo.forEach(dojo.map(_20.getDescendants(),function(w){
|
| 150 |
return w instanceof dijit.form._FormWidget&&w.get("name")||null; |
| 151 |
}),function(_21){
|
| 152 |
if(_21){
|
| 153 |
this.unregisterNode(_21);
|
| 154 |
} |
| 155 |
},this);
|
| 156 |
return this.unregisterNodeDescendants?this.unregisterNodeDescendants(_20.domNode):this; |
| 157 |
},formWidgetValue:function(_22,_23){ |
| 158 |
var _24=arguments.length==2&&_23!==undefined,_25; |
| 159 |
if(typeof _22=="string"){ |
| 160 |
_22=this.formWidgets[_22];
|
| 161 |
if(_22){
|
| 162 |
_22=_22.widget; |
| 163 |
} |
| 164 |
} |
| 165 |
if(!_22){
|
| 166 |
return null; |
| 167 |
} |
| 168 |
if(dojo.isArray(_22)){
|
| 169 |
if(_24){
|
| 170 |
dojo.forEach(_22,function(_26){
|
| 171 |
_26.set("checked",false,!this.watch); |
| 172 |
}); |
| 173 |
dojo.forEach(_22,function(_27){
|
| 174 |
_27.set("checked",_27.value===_23,!this.watch); |
| 175 |
}); |
| 176 |
return this; |
| 177 |
} |
| 178 |
dojo.some(_22,function(_28){
|
| 179 |
if(dojo.attr(_28.focusNode,"checked")){ |
| 180 |
_25=_28; |
| 181 |
return true; |
| 182 |
} |
| 183 |
return false; |
| 184 |
}); |
| 185 |
return _25?_25.get("value"):""; |
| 186 |
} |
| 187 |
if(_22.declaredClass=="dijit.form.CheckBox"){ |
| 188 |
if(_24){
|
| 189 |
_22.set("value",Boolean(_23),!this.watch); |
| 190 |
return this; |
| 191 |
} |
| 192 |
return Boolean(_22.get("value")); |
| 193 |
} |
| 194 |
if(_24){
|
| 195 |
_22.set("value",_23,!this.watch); |
| 196 |
return this; |
| 197 |
} |
| 198 |
return _22.get("value"); |
| 199 |
},formPointValue:function(_29,_2a){ |
| 200 |
if(_29&&typeof _29=="string"){ |
| 201 |
_29=this[_29];
|
| 202 |
} |
| 203 |
if(!_29||!_29.tagName||!_29.cloneNode){
|
| 204 |
return null; |
| 205 |
} |
| 206 |
if(!dojo.hasClass(_29,"dojoFormValue")){ |
| 207 |
return null; |
| 208 |
} |
| 209 |
if(arguments.length==2&&_2a!==undefined){ |
| 210 |
_29.innerHTML=_2a; |
| 211 |
return this; |
| 212 |
} |
| 213 |
return _29.innerHTML;
|
| 214 |
},inspectFormWidgets:function(_2b,_2c,_2d){ |
| 215 |
var _2e,_2f={};
|
| 216 |
if(_2c){
|
| 217 |
if(dojo.isArray(_2c)){
|
| 218 |
dojo.forEach(_2c,function(_30){
|
| 219 |
if(_30 in this.formWidgets){ |
| 220 |
_2f[_30]=_2b.call(this,_30,this.formWidgets[_30].widget,_2d); |
| 221 |
} |
| 222 |
},this);
|
| 223 |
}else{
|
| 224 |
for(_2e in _2c){ |
| 225 |
if(_2e in this.formWidgets){ |
| 226 |
_2f[_2e]=_2b.call(this,_2e,this.formWidgets[_2e].widget,_2c[_2e]); |
| 227 |
} |
| 228 |
} |
| 229 |
} |
| 230 |
}else{
|
| 231 |
for(_2e in this.formWidgets){ |
| 232 |
_2f[_2e]=_2b.call(this,_2e,this.formWidgets[_2e].widget,_2d); |
| 233 |
} |
| 234 |
} |
| 235 |
return _2f;
|
| 236 |
},inspectAttachedPoints:function(_31,_32,_33){ |
| 237 |
var _34,_35={};
|
| 238 |
if(_32){
|
| 239 |
if(dojo.isArray(_32)){
|
| 240 |
dojo.forEach(_32,function(_36){
|
| 241 |
var _37=this[_36]; |
| 242 |
if(_37&&_37.tagName&&_37.cloneNode){
|
| 243 |
_35[_36]=_31.call(this,_36,_37,_33);
|
| 244 |
} |
| 245 |
},this);
|
| 246 |
}else{
|
| 247 |
for(_34 in _32){ |
| 248 |
var _38=this[_34]; |
| 249 |
if(_38&&_38.tagName&&_38.cloneNode){
|
| 250 |
_35[_34]=_31.call(this,_34,_38,_32[_34]);
|
| 251 |
} |
| 252 |
} |
| 253 |
} |
| 254 |
}else{
|
| 255 |
for(_34 in this){ |
| 256 |
if(!(_34 in _a)){ |
| 257 |
var _38=this[_34]; |
| 258 |
if(_38&&_38.tagName&&_38.cloneNode){
|
| 259 |
_35[_34]=_31.call(this,_34,_38,_33);
|
| 260 |
} |
| 261 |
} |
| 262 |
} |
| 263 |
} |
| 264 |
return _35;
|
| 265 |
},inspect:function(_39,_3a,_3b){ |
| 266 |
var _3c=this.inspectFormWidgets(function(_3d,_3e,_3f){ |
| 267 |
if(dojo.isArray(_3e)){
|
| 268 |
return _39.call(this,_3d,dojo.map(_3e,function(w){ |
| 269 |
return w.domNode;
|
| 270 |
}),_3f); |
| 271 |
} |
| 272 |
return _39.call(this,_3d,_3e.domNode,_3f); |
| 273 |
},_3a,_3b); |
| 274 |
if(this.inspectFormNodes){ |
| 275 |
dojo.mixin(_3c,this.inspectFormNodes(_39,_3a,_3b));
|
| 276 |
} |
| 277 |
return dojo.mixin(_3c,this.inspectAttachedPoints(_39,_3a,_3b)); |
| 278 |
}}); |
| 279 |
})(); |
| 280 |
dojo.extend(dijit._Widget,{observer:""});
|
| 281 |
} |