]> git.pond.sub.org Git - eow/blobdiff - static/dojo-release-1.1.1/dojox/wire/CompositeWire.js
add Dojo 1.1.1
[eow] / static / dojo-release-1.1.1 / dojox / wire / CompositeWire.js
diff --git a/static/dojo-release-1.1.1/dojox/wire/CompositeWire.js b/static/dojo-release-1.1.1/dojox/wire/CompositeWire.js
new file mode 100644 (file)
index 0000000..7d1015d
--- /dev/null
@@ -0,0 +1,103 @@
+if(!dojo._hasResource["dojox.wire.CompositeWire"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dojox.wire.CompositeWire"] = true;
+dojo.provide("dojox.wire.CompositeWire");
+
+dojo.require("dojox.wire._base");
+dojo.require("dojox.wire.Wire");
+
+dojo.declare("dojox.wire.CompositeWire", dojox.wire.Wire, {
+       //      summary:
+       //              A Wire for composite values in object or array
+       //      description:
+       //              This class has multiple child Wires for object properties or array
+       //              elements.
+       //              When an object with Wires is specified to 'children' property, they
+       //              are used to get or set an object with property values.
+       //              When an array of Wiares is specified to 'children' property, they
+       //              are used to get or set an array with element values.
+       
+       _wireClass: "dojox.wire.CompositeWire",
+
+       constructor: function(/*Object*/args){
+               //      summary:
+               //              Initialize properties
+               //      description:
+               //              If object properties or array elements specified in 'children'
+               //              property are not Wires, Wires are created from them as
+               //              arguments, with 'parent' property set to this Wire instance.
+               //      args:
+               //              Arguments to initialize properties
+               //              children:
+               //                      An object or array containing child Wires
+               this._initializeChildren(this.children);
+       },
+       _getValue: function(/*Object||Array*/object){
+               //      summary:
+               //              Return an object with property values or an array with element
+               //              values
+               //      description:
+               //              This method calls getValue() method of the child Wires with
+               //              'object' argument and returns an object with the values as
+               //              properties or an arary of the values as elements.
+               //      object:
+               //              A root object
+               //      returns:
+               //              An object or array with values
+               if(!object || !this.children){
+                       return object; //Object||Array
+               }
+
+               var value = (dojo.isArray(this.children) ? [] : {}); // array or object
+               for(var c in this.children){
+                       value[c] = this.children[c].getValue(object);
+               }
+               return value;//Object||Array
+       },
+
+       _setValue: function(/*Object||Array*/object, /*Object||Array*/value){
+               //      summary:
+               //              Set an object properties or an array elements to an object
+               //      desription:
+               //              This method calls setValues() method of the child Wires with
+               //              a corresponding property or element in 'value' argument and
+               //              'object' argument.
+               //      object:
+               //              A root object
+               //      value:
+               //              An object or array with values to set
+               //      returns:
+               //              'object'
+               if(!object || !this.children){
+                       return object; //Object||Array
+               }
+
+               for(var c in this.children){
+                       this.children[c].setValue(value[c], object);
+               }
+               return object; //Object||Array
+       },
+
+       _initializeChildren: function(/*Object||Array*/children){
+               //      summary:
+               //              Initialize child Wires
+               //      description:
+               //              If object properties or array elements specified in 'children'
+               //              argument are not Wires, Wires are created from them as
+               //              arguments, with 'parent' property set to this Wire instance.
+               //      children:
+               //              An object or array containing child Wires
+               if(!children){
+                       return; //undefined
+               }
+
+               for(var c in children){
+                       var child = children[c];
+                       child.parent = this;
+                       if(!dojox.wire.isWire(child)){
+                               children[c] = dojox.wire.create(child);
+                       }
+               }
+       }
+});
+
+}