]> git.pond.sub.org Git - eow/blobdiff - static/dojo-release-1.1.1/dojox/wire/ml/Data.js
add Dojo 1.1.1
[eow] / static / dojo-release-1.1.1 / dojox / wire / ml / Data.js
diff --git a/static/dojo-release-1.1.1/dojox/wire/ml/Data.js b/static/dojo-release-1.1.1/dojox/wire/ml/Data.js
new file mode 100644 (file)
index 0000000..71ab0ad
--- /dev/null
@@ -0,0 +1,143 @@
+if(!dojo._hasResource["dojox.wire.ml.Data"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dojox.wire.ml.Data"] = true;
+dojo.provide("dojox.wire.ml.Data");
+dojo.provide("dojox.wire.ml.DataProperty");
+
+dojo.require("dijit._Widget");
+dojo.require("dijit._Container");
+dojo.require("dojox.wire.ml.util");
+
+dojo.declare("dojox.wire.ml.Data", [dijit._Widget, dijit._Container], {
+       //      summary:
+       //              A widget for a data object
+       //      description:
+       //              This widget represents an object with '_properties' property.
+       //              If child 'DataProperty' widgets exist, they are used to initialize
+       //              propertiy values of '_properties' object.
+
+       startup: function(){
+               //      summary:
+               //              Call _initializeProperties()
+               //      description:
+               //              See _initializeProperties().
+               this._initializeProperties();
+       },
+
+       _initializeProperties: function(/*Boolean*/reset){
+               //      summary:
+               //              Initialize a data object
+               //      description:
+               //              If this widget has child DataProperty widgets, their getValue()
+               //              methods are called and set the return value to a property
+               //              specified by 'name' attribute of the child widgets.
+               //      reset:
+               //              A boolean to reset current properties
+               if(!this._properties || reset){
+                       this._properties = {};
+               }
+               var children = this.getChildren();
+               for(var i in children){
+                       var child = children[i];
+                       if((child instanceof dojox.wire.ml.DataProperty) && child.name){
+                               this.setPropertyValue(child.name, child.getValue());
+                       }
+               }
+       },
+
+       getPropertyValue: function(/*String*/property){
+               //      summary:
+               //              Return a property value
+               //      description:
+               //              This method returns the value of a property, specified with
+               //              'property' argument, in '_properties' object.
+               //      property:
+               //              A property name
+               //      returns:
+               //              A property value
+               return this._properties[property]; //anything
+       },
+
+       setPropertyValue: function(/*String*/property, /*anything*/value){
+               //      summary:
+               //              Store a property value
+               //      description:
+               //              This method stores 'value' as a property, specified with
+               //              'property' argument, in '_properties' object.
+               //      property:
+               //              A property name
+               //      value:
+               //              A property value
+               this._properties[property] = value;
+       }
+});
+
+dojo.declare("dojox.wire.ml.DataProperty", [dijit._Widget, dijit._Container], {
+       //      summary:
+       //              A widget to define a data property
+       //      description:
+       //              Attributes of this widget are used to add a property to the parent
+       //              Data widget.
+       //              'type' attribute specifies one of "string", "number", "boolean",
+       //              "array", "object" and "element" (DOM Element)
+       //              (default to "string").
+       //              If 'type' is "array" or "object", child DataProperty widgets are
+       //              used to initialize the array elements or the object properties.
+       //      name:
+       //              A property name
+       //      type:
+       //              A property type name
+       //      value:
+       //              A property value
+       name: "",
+       type: "",
+       value: "",
+
+       getValue: function(){
+               //      summary:
+               //              Returns a property value
+               //      description:
+               //              If 'type' is specified, 'value' attribute is converted to
+               //              the specified type and returned.
+               //              Otherwise, 'value' attribute is returned as is.
+               //      returns:
+               //              A property value
+               var value = this.value;
+               if(this.type){
+                       if(this.type == "number"){
+                               value = parseInt(value);
+                       }else if(this.type == "boolean"){
+                               value = (value == "true");
+                       }else if(this.type == "array"){
+                               value = [];
+                               var children = this.getChildren();
+                               for(var i in children){
+                                       var child = children[i];
+                                       if(child instanceof dojox.wire.ml.DataProperty){
+                                               value.push(child.getValue());
+                                       }
+                               }
+                       }else if(this.type == "object"){
+                               value = {};
+                               var children = this.getChildren();
+                               for(var i in children){
+                                       var child = children[i];
+                                       if((child instanceof dojox.wire.ml.DataProperty) && child.name){
+                                               value[child.name] = child.getValue();
+                                       }
+                               }
+                       }else if(this.type == "element"){
+                               value = new dojox.wire.ml.XmlElement(value);
+                               var children = this.getChildren();
+                               for(var i in children){
+                                       var child = children[i];
+                                       if((child instanceof dojox.wire.ml.DataProperty) && child.name){
+                                               value.setPropertyValue(child.name, child.getValue());
+                                       }
+                               }
+                       }
+               }
+               return value; //anything
+       }
+});
+
+}