| /* |
| Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved. |
| Available via Academic Free License >= 2.1 OR the modified BSD license. |
| see: http://dojotoolkit.org/license for details |
| */ |
| |
| |
| if(!dojo._hasResource["dojox.wire.Wire"]){ |
| dojo._hasResource["dojox.wire.Wire"]=true; |
| dojo.provide("dojox.wire.Wire"); |
| dojo.require("dojox.wire._base"); |
| dojo.declare("dojox.wire.Wire",null,{_wireClass:"dojox.wire.Wire",constructor:function(_1){ |
| dojo.mixin(this,_1); |
| if(this.converter){ |
| if(dojo.isString(this.converter)){ |
| var _2=dojo.getObject(this.converter); |
| if(dojo.isFunction(_2)){ |
| try{ |
| var _3=new _2(); |
| if(_3&&!dojo.isFunction(_3["convert"])){ |
| this.converter={convert:_2}; |
| }else{ |
| this.converter=_3; |
| } |
| } |
| catch(e){ |
| } |
| }else{ |
| if(dojo.isObject(_2)){ |
| if(dojo.isFunction(_2["convert"])){ |
| this.converter=_2; |
| } |
| } |
| } |
| if(dojo.isString(this.converter)){ |
| var _4=dojox.wire._getClass(this.converter); |
| if(_4){ |
| this.converter=new _4(); |
| }else{ |
| this.converter=undefined; |
| } |
| } |
| }else{ |
| if(dojo.isFunction(this.converter)){ |
| this.converter={convert:this.converter}; |
| } |
| } |
| } |
| },getValue:function(_5){ |
| var _6=undefined; |
| if(dojox.wire.isWire(this.object)){ |
| _6=this.object.getValue(_5); |
| }else{ |
| _6=(this.object||_5); |
| } |
| if(this.property){ |
| var _7=this.property.split("."); |
| for(var i in _7){ |
| if(!_6){ |
| return _6; |
| } |
| _6=this._getPropertyValue(_6,_7[i]); |
| } |
| } |
| var _8=undefined; |
| if(this._getValue){ |
| _8=this._getValue(_6); |
| }else{ |
| _8=_6; |
| } |
| if(_8){ |
| if(this.type){ |
| if(this.type=="string"){ |
| _8=_8.toString(); |
| }else{ |
| if(this.type=="number"){ |
| _8=parseInt(_8,10); |
| }else{ |
| if(this.type=="boolean"){ |
| _8=(_8!="false"); |
| }else{ |
| if(this.type=="array"){ |
| if(!dojo.isArray(_8)){ |
| _8=[_8]; |
| } |
| } |
| } |
| } |
| } |
| } |
| if(this.converter&&this.converter.convert){ |
| _8=this.converter.convert(_8,this); |
| } |
| } |
| return _8; |
| },setValue:function(_9,_a){ |
| var _b=undefined; |
| if(dojox.wire.isWire(this.object)){ |
| _b=this.object.getValue(_a); |
| }else{ |
| _b=(this.object||_a); |
| } |
| var _c=undefined; |
| var o; |
| if(this.property){ |
| if(!_b){ |
| if(dojox.wire.isWire(this.object)){ |
| _b={}; |
| this.object.setValue(_b,_a); |
| }else{ |
| throw new Error(this._wireClass+".setValue(): invalid object"); |
| } |
| } |
| var _d=this.property.split("."); |
| var _e=_d.length-1; |
| for(var i=0;i<_e;i++){ |
| var p=_d[i]; |
| o=this._getPropertyValue(_b,p); |
| if(!o){ |
| o={}; |
| this._setPropertyValue(_b,p,o); |
| } |
| _b=o; |
| } |
| _c=_d[_e]; |
| } |
| if(this._setValue){ |
| if(_c){ |
| o=this._getPropertyValue(_b,_c); |
| if(!o){ |
| o={}; |
| this._setPropertyValue(_b,_c,o); |
| } |
| _b=o; |
| } |
| var _f=this._setValue(_b,_9); |
| if(!_b&&_f){ |
| if(dojox.wire.isWire(this.object)){ |
| this.object.setValue(_f,_a); |
| }else{ |
| throw new Error(this._wireClass+".setValue(): invalid object"); |
| } |
| } |
| }else{ |
| if(_c){ |
| this._setPropertyValue(_b,_c,_9); |
| }else{ |
| if(dojox.wire.isWire(this.object)){ |
| this.object.setValue(_9,_a); |
| }else{ |
| throw new Error(this._wireClass+".setValue(): invalid property"); |
| } |
| } |
| } |
| },_getPropertyValue:function(_10,_11){ |
| var _12=undefined; |
| var i1=_11.indexOf("["); |
| if(i1>=0){ |
| var i2=_11.indexOf("]"); |
| var _13=_11.substring(i1+1,i2); |
| var _14=null; |
| if(i1===0){ |
| _14=_10; |
| }else{ |
| _11=_11.substring(0,i1); |
| _14=this._getPropertyValue(_10,_11); |
| if(_14&&!dojo.isArray(_14)){ |
| _14=[_14]; |
| } |
| } |
| if(_14){ |
| _12=_14[_13]; |
| } |
| }else{ |
| if(_10.getPropertyValue){ |
| _12=_10.getPropertyValue(_11); |
| }else{ |
| var _15="get"+_11.charAt(0).toUpperCase()+_11.substring(1); |
| if(this._useAttr(_10)){ |
| _12=_10.attr(_11); |
| }else{ |
| if(_10[_15]){ |
| _12=_10[_15](); |
| }else{ |
| _12=_10[_11]; |
| } |
| } |
| } |
| } |
| return _12; |
| },_setPropertyValue:function(_16,_17,_18){ |
| var i1=_17.indexOf("["); |
| if(i1>=0){ |
| var i2=_17.indexOf("]"); |
| var _19=_17.substring(i1+1,i2); |
| var _1a=null; |
| if(i1===0){ |
| _1a=_16; |
| }else{ |
| _17=_17.substring(0,i1); |
| _1a=this._getPropertyValue(_16,_17); |
| if(!_1a){ |
| _1a=[]; |
| this._setPropertyValue(_16,_17,_1a); |
| } |
| } |
| _1a[_19]=_18; |
| }else{ |
| if(_16.setPropertyValue){ |
| _16.setPropertyValue(_17,_18); |
| }else{ |
| var _1b="set"+_17.charAt(0).toUpperCase()+_17.substring(1); |
| if(this._useAttr(_16)){ |
| _16.attr(_17,_18); |
| }else{ |
| if(_16[_1b]){ |
| _16[_1b](_18); |
| }else{ |
| _16[_17]=_18; |
| } |
| } |
| } |
| } |
| },_useAttr:function(_1c){ |
| var _1d=false; |
| if(dojo.isFunction(_1c.attr)){ |
| _1d=true; |
| } |
| return _1d; |
| }}); |
| } |