| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 | /*	Copyright (c) 2004-2012, 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.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: "",	_getValueAttr: function(){		return this.getValue();	},	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	}});}
 |