Project

General

Profile

Statistics
| Revision:

root / trunk / web / dojo / dojox / wire / Wire.js @ 11

History | View | Annotate | Download (4.19 KB)

1 9 andrej.cim
/*
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.wire.Wire"]){
9
dojo._hasResource["dojox.wire.Wire"]=true;
10
dojo.provide("dojox.wire.Wire");
11
dojo.require("dojox.wire._base");
12
dojo.declare("dojox.wire.Wire",null,{_wireClass:"dojox.wire.Wire",constructor:function(_1){
13
dojo.mixin(this,_1);
14
if(this.converter){
15
if(dojo.isString(this.converter)){
16
var _2=dojo.getObject(this.converter);
17
if(dojo.isFunction(_2)){
18
try{
19
var _3=new _2();
20
if(_3&&!dojo.isFunction(_3["convert"])){
21
this.converter={convert:_2};
22
}else{
23
this.converter=_3;
24
}
25
}
26
catch(e){
27
}
28
}else{
29
if(dojo.isObject(_2)){
30
if(dojo.isFunction(_2["convert"])){
31
this.converter=_2;
32
}
33
}
34
}
35
if(dojo.isString(this.converter)){
36
var _4=dojox.wire._getClass(this.converter);
37
if(_4){
38
this.converter=new _4();
39
}else{
40
this.converter=undefined;
41
}
42
}
43
}else{
44
if(dojo.isFunction(this.converter)){
45
this.converter={convert:this.converter};
46
}
47
}
48
}
49
},getValue:function(_5){
50
var _6=undefined;
51
if(dojox.wire.isWire(this.object)){
52
_6=this.object.getValue(_5);
53
}else{
54
_6=(this.object||_5);
55
}
56
if(this.property){
57
var _7=this.property.split(".");
58
for(var i in _7){
59
if(!_6){
60
return _6;
61
}
62
_6=this._getPropertyValue(_6,_7[i]);
63
}
64
}
65
var _8=undefined;
66
if(this._getValue){
67
_8=this._getValue(_6);
68
}else{
69
_8=_6;
70
}
71
if(_8){
72
if(this.type){
73
if(this.type=="string"){
74
_8=_8.toString();
75
}else{
76
if(this.type=="number"){
77
_8=parseInt(_8,10);
78
}else{
79
if(this.type=="boolean"){
80
_8=(_8!="false");
81
}else{
82
if(this.type=="array"){
83
if(!dojo.isArray(_8)){
84
_8=[_8];
85
}
86
}
87
}
88
}
89
}
90
}
91
if(this.converter&&this.converter.convert){
92
_8=this.converter.convert(_8,this);
93
}
94
}
95
return _8;
96
},setValue:function(_9,_a){
97
var _b=undefined;
98
if(dojox.wire.isWire(this.object)){
99
_b=this.object.getValue(_a);
100
}else{
101
_b=(this.object||_a);
102
}
103
var _c=undefined;
104
var o;
105
if(this.property){
106
if(!_b){
107
if(dojox.wire.isWire(this.object)){
108
_b={};
109
this.object.setValue(_b,_a);
110
}else{
111
throw new Error(this._wireClass+".setValue(): invalid object");
112
}
113
}
114
var _d=this.property.split(".");
115
var _e=_d.length-1;
116
for(var i=0;i<_e;i++){
117
var p=_d[i];
118
o=this._getPropertyValue(_b,p);
119
if(!o){
120
o={};
121
this._setPropertyValue(_b,p,o);
122
}
123
_b=o;
124
}
125
_c=_d[_e];
126
}
127
if(this._setValue){
128
if(_c){
129
o=this._getPropertyValue(_b,_c);
130
if(!o){
131
o={};
132
this._setPropertyValue(_b,_c,o);
133
}
134
_b=o;
135
}
136
var _f=this._setValue(_b,_9);
137
if(!_b&&_f){
138
if(dojox.wire.isWire(this.object)){
139
this.object.setValue(_f,_a);
140
}else{
141
throw new Error(this._wireClass+".setValue(): invalid object");
142
}
143
}
144
}else{
145
if(_c){
146
this._setPropertyValue(_b,_c,_9);
147
}else{
148
if(dojox.wire.isWire(this.object)){
149
this.object.setValue(_9,_a);
150
}else{
151
throw new Error(this._wireClass+".setValue(): invalid property");
152
}
153
}
154
}
155
},_getPropertyValue:function(_10,_11){
156
var _12=undefined;
157
var i1=_11.indexOf("[");
158
if(i1>=0){
159
var i2=_11.indexOf("]");
160
var _13=_11.substring(i1+1,i2);
161
var _14=null;
162
if(i1===0){
163
_14=_10;
164
}else{
165
_11=_11.substring(0,i1);
166
_14=this._getPropertyValue(_10,_11);
167
if(_14&&!dojo.isArray(_14)){
168
_14=[_14];
169
}
170
}
171
if(_14){
172
_12=_14[_13];
173
}
174
}else{
175
if(_10.getPropertyValue){
176
_12=_10.getPropertyValue(_11);
177
}else{
178
var _15="get"+_11.charAt(0).toUpperCase()+_11.substring(1);
179
if(this._useGet(_10)){
180
_12=_10.get(_11);
181
}else{
182
if(this._useAttr(_10)){
183
_12=_10.attr(_11);
184
}else{
185
if(_10[_15]){
186
_12=_10[_15]();
187
}else{
188
_12=_10[_11];
189
}
190
}
191
}
192
}
193
}
194
return _12;
195
},_setPropertyValue:function(_16,_17,_18){
196
var i1=_17.indexOf("[");
197
if(i1>=0){
198
var i2=_17.indexOf("]");
199
var _19=_17.substring(i1+1,i2);
200
var _1a=null;
201
if(i1===0){
202
_1a=_16;
203
}else{
204
_17=_17.substring(0,i1);
205
_1a=this._getPropertyValue(_16,_17);
206
if(!_1a){
207
_1a=[];
208
this._setPropertyValue(_16,_17,_1a);
209
}
210
}
211
_1a[_19]=_18;
212
}else{
213
if(_16.setPropertyValue){
214
_16.setPropertyValue(_17,_18);
215
}else{
216
var _1b="set"+_17.charAt(0).toUpperCase()+_17.substring(1);
217
if(this._useSet(_16)){
218
_16.set(_17,_18);
219
}else{
220
if(this._useAttr(_16)){
221
_16.attr(_17,_18);
222
}else{
223
if(_16[_1b]){
224
_16[_1b](_18);
225
}else{
226
_16[_17]=_18;
227
}
228
}
229
}
230
}
231
}
232
},_useGet:function(_1c){
233
var _1d=false;
234
if(dojo.isFunction(_1c.get)){
235
_1d=true;
236
}
237
return _1d;
238
},_useSet:function(_1e){
239
var _1f=false;
240
if(dojo.isFunction(_1e.set)){
241
_1f=true;
242
}
243
return _1f;
244
},_useAttr:function(_20){
245
var _21=false;
246
if(dojo.isFunction(_20.attr)){
247
_21=true;
248
}
249
return _21;
250
}});
251
}