Fixes on natures management
[lgpl/argeo-commons.git] / security / runtime / org.argeo.security.ria / src / argeo-ria-lib / security / class / org / argeo / security / ria / components / SimpleUserNatureImpl.js
index 9ddb7420d7d3c4ce15b087a11557b5a995aeb7b6..8f3b94c9000a8af843aae7b7c8fbe477f2464dd2 100644 (file)
@@ -7,7 +7,8 @@ qx.Class.define("org.argeo.security.ria.components.SimpleUserNatureImpl", {
        statics : {\r
                NATURE_TYPE : "org.argeo.security.nature.SimpleUserNature",\r
                NATURE_LABEL : "Simple User",\r
-               NATURE_ICON : ""\r
+               NATURE_ICON : "",\r
+               NATURE_RANK     : 0             \r
        },\r
        properties : {\r
                valid : {\r
@@ -71,7 +72,8 @@ qx.Class.define("org.argeo.security.ria.components.SimpleUserNatureImpl", {
                \r
                _applyEditMode : function(value){\r
                        for(var key in this.fields){\r
-                               this.fields[key].setEnabled(value);\r
+                               if(value && this.fields[key].getReadOnly && this.fields[key].getReadOnly()) continue;\r
+                               this.fields[key].setEnabled(value);                             \r
                        }\r
                },\r
                \r
@@ -81,7 +83,11 @@ qx.Class.define("org.argeo.security.ria.components.SimpleUserNatureImpl", {
                setData    : function(dataMap, format){\r
                        for(var key in this.fields){\r
                                if(dataMap[key]){\r
-                                       this.fields[key].setValue(dataMap[key]);\r
+                                       if(qx.Class.hasInterface(qx.Class.getByName(this.fields[key].classname), qx.ui.form.IModelSelection)){\r
+                                               this.fields[key].setModelSelection([dataMap[key]]);\r
+                                       }else{\r
+                                               this.fields[key].setValue(dataMap[key]);\r
+                                       }\r
                                }\r
                        }\r
                        this.setDataMap(dataMap);\r
@@ -89,7 +95,12 @@ qx.Class.define("org.argeo.security.ria.components.SimpleUserNatureImpl", {
                getData    : function(format){\r
                        var dataMap = this.getDataMap();\r
                        for(var key in this.fields){\r
-                               dataMap[key] = this.fields[key].getValue();\r
+                               if(qx.Class.hasInterface(qx.Class.getByName(this.fields[key].classname), qx.ui.form.IModelSelection)){\r
+                                       var sel = this.fields[key].getModelSelection();\r
+                                       if(sel && qx.lang.Type.isArray(sel)) dataMap[key] = sel[0];                                     \r
+                               }else{\r
+                                       dataMap[key] = this.fields[key].getValue();\r
+                               }\r
                        }\r
                        this.setDataMap(dataMap);\r
                        return dataMap;\r