},\r
\r
members : {\r
+ hasEditableValues : function(){\r
+ var values = this.getValues();\r
+ if(!values) return false;\r
+ var editables = 0;\r
+ for(var key in values){\r
+ var valueObj = values[key];\r
+ if(!valueObj.getHidden() && !valueObj.getFrozen()){\r
+ editables ++;\r
+ }\r
+ }\r
+ return (editables > 0);\r
+ },\r
+ \r
/**\r
* Init the object from an XML representation\r
* @param xmlNode {Node} Castor representation of this object\r
*/ \r
_applyXmlNode : function(xmlNode){\r
- // Parse now\r
+ // Parse now \r
this.setName(org.argeo.ria.util.Element.getSingleNodeText(xmlNode, this.self(arguments).XPATH_NAME));\r
var values = org.argeo.ria.util.Element.selectNodes(xmlNode, this.self(arguments).XPATH_VALUES);\r
var parsedValues = {};\r
* @return {String} An XML String\r
*/\r
toXml : function(){\r
- var valuesXml = '';\r
- var values = this.getValues();\r
- for(var key in values){\r
- valuesXml += values[key].toAttributeXml();\r
- }\r
- return '<slc:default-execution-spec name="'+this.getName()+'"><slc:values>'+valuesXml+'</slc:values></slc:default-execution-spec>';\r
+ return org.argeo.ria.util.Element.getXMLString(this.getXmlNode());\r
}\r
} \r
\r