Subversion Repositories Applications.papyrus

Rev

Blame | Last modification | View Log | RSS feed

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);
                        }
                }
        }
});

}