Resources, craete/save, modal windows, etc.
authorCharles du Jeu <charles.dujeu@gmail.com>
Thu, 17 Sep 2009 09:21:38 +0000 (09:21 +0000)
committerCharles du Jeu <charles.dujeu@gmail.com>
Thu, 17 Sep 2009 09:21:38 +0000 (09:21 +0000)
git-svn-id: https://svn.argeo.org/commons/trunk@2942 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

13 files changed:
security/runtime/org.argeo.security.ria/src/argeo-ria-lib/security/class/org/argeo/security/ria/RolesApplet.js
security/runtime/org.argeo.security.ria/src/argeo-ria-lib/security/class/org/argeo/security/ria/UserEditorApplet.js
security/runtime/org.argeo.security.ria/src/argeo-ria-lib/security/class/org/argeo/security/ria/UsersApplet.js
security/runtime/org.argeo.security.ria/src/argeo-ria-lib/security/class/org/argeo/security/ria/components/INaturePane.js
security/runtime/org.argeo.security.ria/src/argeo-ria-lib/security/class/org/argeo/security/ria/components/IUserDataPane.js
security/runtime/org.argeo.security.ria/src/argeo-ria-lib/security/class/org/argeo/security/ria/components/PasswordCredentialImpl.js
security/runtime/org.argeo.security.ria/src/argeo-ria-lib/security/class/org/argeo/security/ria/components/SimpleUserNatureImpl.js
security/runtime/org.argeo.security.ria/src/argeo-ria-lib/security/resource/org.argeo.security.ria/document-properties.png [new file with mode: 0644]
security/runtime/org.argeo.security.ria/src/argeo-ria-lib/security/resource/org.argeo.security.ria/document-save.png [new file with mode: 0644]
security/runtime/org.argeo.security.ria/src/argeo-ria-lib/security/resource/org.argeo.security.ria/go-next.png [new file with mode: 0644]
security/runtime/org.argeo.security.ria/src/argeo-ria-lib/security/resource/org.argeo.security.ria/list-add.png [new file with mode: 0644]
security/runtime/org.argeo.security.ria/src/argeo-ria-lib/security/resource/org.argeo.security.ria/list-remove.png [new file with mode: 0644]
security/runtime/org.argeo.security.ria/src/argeo-ria-lib/security/resource/org.argeo.security.ria/window-close.png [new file with mode: 0644]

index 3803968a9a9a797f33d730eb131dd3f1a4d0dbfb..f2f488d31a3220a38d4a93f35a773b2a2e992522 100644 (file)
@@ -28,9 +28,41 @@ qx.Class.define("org.argeo.security.ria.RolesApplet",
         */
        commands : {
                init : {
+                       "new_role" : {
+                               label           : "Create Role", 
+                               icon            : "org.argeo.security.ria/list-add.png",
+                               shortcut        : "Control+n",
+                               enabled         : true,
+                               menu            : "Roles",
+                               toolbar         : "role",
+                               callback        : function(e){
+                                       // Prompt for new name
+                               },
+                               command         : null
+                       },      
+                       "delete_role" : {
+                               label           : "Delete Role", 
+                               icon            : "org.argeo.security.ria/list-remove.png",
+                               shortcut        : "Control+s",
+                               enabled         : true,
+                               menu            : "Roles",
+                               toolbar         : "role",
+                               callback        : function(e){
+                                       // Call service to delete
+                                       var crtUsers = this.getViewSelection().getNodes();
+                                       for(var i=0;i<crtUsers.length;i++){
+                                               alert("Delete " + crtUsers[i]);
+                                       }
+                               },
+                               selectionChange : function(viewName, data){
+                                       if(viewName != "role") return;
+                                       this.setEnabled(!(data == null || !data.length));                                       
+                               },
+                               command         : null
+                       },                                              
                        "edit_role" : {
                                label           : "Edit Role", 
-                               icon            : "ria/window-close.png",
+                               icon            : "org.argeo.security.ria/document-properties.png",
                                shortcut        : "Control+r",
                                enabled         : true,
                                menu            : "Roles",
@@ -96,7 +128,7 @@ qx.Class.define("org.argeo.security.ria.RolesApplet",
                if(this.getView().headerLabel) this.getView().headerLabel.setMargin(8);
                this.getView().header.add(buttonPane, {edge:"east"});
        
-               this.toggleButton = new qx.ui.form.ToggleButton("Filter", "ria/go-right.png");
+               this.toggleButton = new qx.ui.form.ToggleButton("Filter", "org.argeo.security.ria/go-next.png");
                this.toggleButton.set({
                        show:"icon",
                        margin:2,
@@ -109,29 +141,40 @@ qx.Class.define("org.argeo.security.ria.RolesApplet",
                        this.setGuiMode(event.getData()?"filter":"clear");
                }, this);
                
-               this.saveButton = new qx.ui.form.Button("Save");
+               this.saveButton = new qx.ui.form.Button("Save", "org.argeo.security.ria/document-save.png");
                this.saveButton.set({
-                       show:"label",
+                       show:"icon",
                        margin:2,
                        toolTip :new qx.ui.tooltip.ToolTip("Save changes"),
                        visibility : "excluded"
                });
                buttonPane.add(this.saveButton);                
                
-               this.cancelButton = new qx.ui.form.Button("Cancel");
+               this.cancelButton = new qx.ui.form.Button("Cancel", "org.argeo.security.ria/window-close.png");
                this.cancelButton.set({
-                       show:"label",
+                       show:"icon",
                        margin:2,
                        toolTip :new qx.ui.tooltip.ToolTip("Cancel changes"),
                        visibility : "excluded"                         
                });
                buttonPane.add(this.cancelButton);              
                
-               var listener = function(){
+               this.saveButton.addListener("execute", function(){
+                       alert("Saving changes...");
                        this.setGuiMode(this.initialState);
-               };
-               this.saveButton.addListener("execute", listener, this);
-               this.cancelButton.addListener("execute", listener, this);
+               }, this);
+               this.cancelButton.addListener("execute", function(){
+                       if(!this.getChooserSelectionModified()){
+                               this.setGuiMode(this.initialState);
+                               return;
+                       }
+                       var modal = new org.argeo.ria.components.Modal("Warning");
+                       modal.addConfirm("There are unsaved changes!\n Are you sure you want to close?");
+                       modal.addListener("ok", function(){
+                               this.setGuiMode(this.initialState);
+                       }, this);
+                       modal.attachAndShow();                  
+               }, this);
                
                this.table.addListener("cellDblclick", function(cellEvent){
                        this.setGuiMode("edit");
index 7f18caaed2e49245245013ef2315273c636feb2e..395d170c0a76ce08b810814a72eaf9aa4bf5c20e 100644 (file)
@@ -3,7 +3,7 @@
  * The only associated command is the "Close" command.
  */
 /* *************************************************
-#asset(resource/org.argeo.ria.sample/window-close.png)
+#asset(resource/org.argeo.security.ria/*)
 ****************************************************/
 qx.Class.define("org.argeo.security.ria.UserEditorApplet",
 {
@@ -31,7 +31,7 @@ qx.Class.define("org.argeo.security.ria.UserEditorApplet",
                init : {
                        "save_user" : {
                                label           : "Save", 
-                               icon            : "ria/window-close.png",
+                               icon            : "org.argeo.security.ria/document-save.png",
                                shortcut        : "Control+s",
                                enabled         : true,
                                menu            : "Users",
@@ -50,14 +50,24 @@ qx.Class.define("org.argeo.security.ria.UserEditorApplet",
                        },
                        "close" : {
                                label           : "Close", 
-                               icon            : "org.argeo.ria.sample/window-close.png",
+                               icon            : "org.argeo.security.ria/window-close.png",
                                shortcut        : "Control+w",
                                enabled         : true,
                                menu            : "Users",
                                toolbar         : "user",
                                callback        : function(e){
                                        // Call service to delete
-                                       this.getView().closeCurrent();                                          
+                                       var iApplet = org.argeo.ria.components.ViewsManager.getInstance().getViewPaneById("editor").getContent();
+                                       if(!iApplet.getModified()){
+                                               this.getView().closeCurrent();
+                                               return;
+                                       }
+                                       var modal = new org.argeo.ria.components.Modal("Warning");
+                                       modal.addConfirm("There are unsaved changes!\n Are you sure you want to close?");
+                                       modal.addListener("ok", function(){
+                                               this.getView().closeCurrent();
+                                       }, this);
+                                       modal.attachAndShow();
                                },
                                command         : null
                        }                                               
@@ -118,10 +128,6 @@ qx.Class.define("org.argeo.security.ria.UserEditorApplet",
                
                // FIELDS
                this.usernameField = new qx.ui.form.TextField();
-               this.usernameField.addListener("changeValue", function(){
-                       this.setModified(true);
-                       this.getViewSelection().triggerEvent();
-               }, this);
                this.basicGB.add(new qx.ui.basic.Label("Username"), {row:0,column:0});                  
                this.basicGB.add(this.usernameField, {row:0,column:1});
                
@@ -135,14 +141,30 @@ qx.Class.define("org.argeo.security.ria.UserEditorApplet",
                
                this.naturesTab = new qx.ui.tabview.TabView("top");
                this.simpleNature = new org.argeo.security.ria.components.SimpleUserNatureImpl();
+               
                var page1 = new qx.ui.tabview.Page(this.simpleNature.getNatureLabel());
                page1.setLayout(new qx.ui.layout.Dock());
                page1.add(this.simpleNature.getContainer(), {edge:"center"});
                this.naturesTab.add(page1);
                this.naturesGB.add(this.naturesTab, {edge:"center"});
-                               
+                                       
        },
                
+       _attachListeners : function(){
+               this.usernameField.addListener("changeValue", function(){
+                       this.setModified(true);
+               }, this);
+               this.rolesField.addListener("changeValue", function(){
+                       this.setModified(true);
+               }, this);
+               this.passPane.addListener("modified", function(){
+                       this.setModified(true);
+               }, this);
+               this.simpleNature.addListener("modified", function(){
+                       this.setModified(true);
+               }, this);               
+       },
+       
        _initializeGroupBox: function(groupBox){
                groupBox.setPadding(0);
                groupBox.getChildrenContainer().setPadding(8);                  
@@ -157,6 +179,7 @@ qx.Class.define("org.argeo.security.ria.UserEditorApplet",
                        this.usernameField.setValue(userData);
                }
                this.setRolesList(["ROLE_ADMIN", "ROLE_USER"]);
+               this._attachListeners();
        },
                 
        addScroll : function(){
index 4522746ac10cdcefc24c781304820623193a86db..5eb44f42ed1b0feee5ebb76d97d51a8f3d74ebfb 100644 (file)
@@ -3,7 +3,7 @@
  * The only associated command is the "Close" command.
  */
 /* *************************************************
-#asset(resource/org.argeo.ria.sample/window-close.png)
+#asset(resource/org.argeo.security.ria/*)
 ****************************************************/
 qx.Class.define("org.argeo.security.ria.UsersApplet",
 {
@@ -29,12 +29,12 @@ qx.Class.define("org.argeo.security.ria.UsersApplet",
        commands : {
                init : {
                        "new_user" : {
-                               label           : "Create User", 
-                               icon            : "ria/window-close.png",
+                               label           : "New User", 
+                               icon            : "org.argeo.security.ria/list-add.png",
                                shortcut        : "Control+n",
                                enabled         : true,
                                menu            : "Users",
-                               toolbar         : "user",
+                               toolbar         : "userslist",
                                callback        : function(e){
                                        // Call service to delete
                                        var classObj = org.argeo.security.ria.UserEditorApplet;
@@ -42,47 +42,47 @@ qx.Class.define("org.argeo.security.ria.UsersApplet",
                                        iView.load();
                                },
                                command         : null
-                       },                      
-                       "edit_user" : {
-                               label           : "Edit User", 
-                               icon            : "ria/window-close.png",
-                               shortcut        : "Control+u",
+                       },      
+                       "delete_user" : {
+                               label           : "Delete User", 
+                               icon            : "org.argeo.security.ria/list-remove.png",
+                               shortcut        : "Control+s",
                                enabled         : true,
                                menu            : "Users",
-                               toolbar         : "user",
+                               toolbar         : "userslist",
                                callback        : function(e){
                                        // Call service to delete
-                                       var crtUser = this.getViewSelection().getNodes()[0];
-                                       var classObj = org.argeo.security.ria.UserEditorApplet;
-                                       var iView = org.argeo.ria.components.ViewsManager.getInstance().initIViewClass(classObj, "editor", crtUser);
-                                       iView.load(crtUser);                                    
+                                       var crtUsers = this.getViewSelection().getNodes();
+                                       for(var i=0;i<crtUsers.length;i++){
+                                               alert("Delete " + crtUsers[i]);
+                                       }
                                },
                                selectionChange : function(viewName, data){
                                        if(viewName != "users") return;
-                                       this.setEnabled(!(data == null || !data.length || data.length > 1));                                    
+                                       this.setEnabled(!(data == null || !data.length));                                       
                                },
                                command         : null
-                       },                      
-                       "delete_user" : {
-                               label           : "Delete User", 
-                               icon            : "ria/window-close.png",
-                               shortcut        : "Control+s",
+                       },                      
+                       "edit_user" : {
+                               label           : "Edit User", 
+                               icon            : "org.argeo.security.ria/document-properties.png",
+                               shortcut        : "Control+u",
                                enabled         : true,
                                menu            : "Users",
-                               toolbar         : "user",
+                               toolbar         : "userslist",
                                callback        : function(e){
                                        // Call service to delete
-                                       var crtUsers = this.getViewSelection().getNodes();
-                                       for(var i=0;i<crtUsers.length;i++){
-                                               alert("Delete " + crtUsers[i]);
-                                       }
+                                       var crtUser = this.getViewSelection().getNodes()[0];
+                                       var classObj = org.argeo.security.ria.UserEditorApplet;
+                                       var iView = org.argeo.ria.components.ViewsManager.getInstance().initIViewClass(classObj, "editor", crtUser);
+                                       iView.load(crtUser);                                    
                                },
                                selectionChange : function(viewName, data){
                                        if(viewName != "users") return;
-                                       this.setEnabled(!(data == null || !data.length));                                       
+                                       this.setEnabled(!(data == null || !data.length || data.length > 1));                                    
                                },
                                command         : null
-                       }                       
+                       }
                }
        },
        
index 84c612a2fcf5bc1734794a233cf5cb7ddfe903c3..038a26d1acb9f5a4df2cb388a035621e79165edf 100644 (file)
@@ -1,5 +1,9 @@
 qx.Interface.define("org.argeo.security.ria.components.INaturePane", {\r
        extend  : org.argeo.security.ria.components.IUserDataPane,\r
+       properties : {\r
+               natureUuid : {},\r
+               natureType : {}\r
+       },\r
        members : {\r
                getNatureLabel : function(){return true},\r
                setData : function(dataMap, format){return true;}\r
index ca801520b2e5163fcadb51952f14b731f891622f..c3530b650ebfccbdf3dd57f6b5062ba284ad2a44 100644 (file)
@@ -4,8 +4,10 @@ qx.Interface.define("org.argeo.security.ria.components.IUserDataPane", {
                getData    : function(format){return true;},\r
                validate : function(){return true;}\r
        },\r
+       properties : {\r
+               valid : {}\r
+       },\r
        events : {\r
-               "modified" : "qx.event.type.Event"\r
-                       \r
+               "modified" : "qx.event.type.Event"                      \r
        }\r
 });
\ No newline at end of file
index 66e38eacf038897e4db1586e578abe142b83569a..610e56d12e7837d0b8d004e93d77d18187e39f02 100644 (file)
@@ -4,14 +4,24 @@ qx.Class.define("org.argeo.security.ria.components.PasswordCredentialImpl", {
        events : {\r
                "modified" : "qx.event.type.Event"              \r
        },\r
+       properties : {\r
+               valid : {\r
+                       init : false\r
+               }\r
+       },\r
        \r
        construct : function(){\r
                this.base(arguments);\r
                this.setLayout(new qx.ui.layout.HBox(5, "center"));\r
                this.add(new qx.ui.basic.Label("Password"), {flex:1});\r
-               this.add(new qx.ui.form.TextField(), {flex:2});\r
+               this.pass1 = new qx.ui.form.PasswordField();\r
+               this.add(this.pass1, {flex:2});\r
                this.add(new qx.ui.basic.Label("Confirm Password"), {flex:1});\r
-               this.add(new qx.ui.form.TextField(), {flex:2});\r
+               this.pass2 = new qx.ui.form.PasswordField();\r
+               this.add(this.pass2, {flex:2});\r
+               this.pass1.addListener("changeValue", function(){this.fireEvent("modified");}, this);\r
+               this.pass2.addListener("changeValue", function(){this.fireEvent("modified");}, this);\r
+               this.pass2.addListener("changeValue", this.validate, this);\r
        },\r
        \r
        members : {\r
@@ -19,7 +29,17 @@ qx.Class.define("org.argeo.security.ria.components.PasswordCredentialImpl", {
                        return this;\r
                },\r
                getData    : function(format){return true;},\r
-               validate : function(){return true;},\r
+               validate : function(){\r
+                       if(this.pass1.getValue() == this.pass2.getValue()){\r
+                               this.setValid(true);\r
+                       }else{\r
+                               // TODO WHEN TESTING 0.8.3\r
+                               //this.pass1.setValid(false);\r
+                               //this.pass2.setValid(false); \r
+                               this.setValid(false);\r
+                       }\r
+                       return this.getValid();\r
+               },\r
                setEditMode : function(editMode){return true;}          \r
        }\r
 });
\ No newline at end of file
index c76ec1ad24e1458ed37e4722238b62697e74d96a..bb0900b3c2702b0f112cd44879e3b39c32204b3c 100644 (file)
@@ -4,10 +4,50 @@ qx.Class.define("org.argeo.security.ria.components.SimpleUserNatureImpl", {
        events : {\r
                "modified" : "qx.event.type.Event"              \r
        },\r
+       properties : {\r
+               valid : {\r
+                       init : false\r
+               },\r
+               natureUuid : {\r
+                       init : ""\r
+               },\r
+               natureType : {\r
+                       init : "SimpleUser"\r
+               },\r
+               dataMap : {\r
+                       \r
+               }\r
+       },\r
        \r
        construct : function(){\r
-               this.base(arguments);\r
-               this.setLayout(new qx.ui.layout.Grid());\r
+               this.base(arguments);           \r
+               var grid = new qx.ui.layout.Grid(5,5);\r
+               this.setLayout(grid);\r
+               grid.setColumnFlex(0,1);\r
+               grid.setColumnAlign(0,"right", "middle");\r
+               grid.setColumnFlex(1,3);\r
+                               \r
+               this.mailField = new qx.ui.form.TextField();\r
+               this.fNameField = new qx.ui.form.TextField();\r
+               this.nameField = new qx.ui.form.TextField();\r
+               \r
+               var labels = ["Email", "First Name", "Last Name"]; \r
+               this.fields = {\r
+                       "email" : this.mailField, \r
+                       "firstName": this.fNameField, \r
+                       "lastName" : this.nameField\r
+               };\r
+               \r
+               for(var i=0;i<labels.length;i++){\r
+                       this.add(new qx.ui.basic.Label(labels[i]), {row:i,column:0});\r
+               }\r
+               var j=0;\r
+               for(var key in this.fields){                    \r
+                       this.fields[key].addListener("changeValue", function(e){this.fireEvent("modified");}, this);\r
+                       this.add(this.fields[key], {row:j,column:1});\r
+                       j++;\r
+               }\r
+               \r
        },\r
                \r
        members : {\r
@@ -15,10 +55,28 @@ qx.Class.define("org.argeo.security.ria.components.SimpleUserNatureImpl", {
                        return this;\r
                },\r
                getNatureLabel : function(){\r
-                       return "Basic User";\r
+                       return "Simple User";\r
+               },\r
+               setData    : function(dataMap, format){\r
+                       this.setNatureUuid(dataMap["uuid"]);\r
+                       this.setNatureType(dataMap["type"]);\r
+                       for(var key in this.fields){\r
+                               if(dataMap[key]){\r
+                                       this.fields[key].setValue(dataMap[key]);\r
+                               }\r
+                       }\r
+                       this.setDataMap(dataMap);\r
+               },\r
+               getData    : function(format){\r
+                       var dataMap = this.getDataMap();\r
+                       for(var key in dataMap){\r
+                               if(this.fields[key]){\r
+                                       dataMap[key] = this.fields[key].getValue();\r
+                               }\r
+                       }\r
+                       this.setDataMap(dataMap);\r
+                       return dataMap;\r
                },\r
-               setData    : function(dataMap, format){return true;},\r
-               getData    : function(format){return true;},\r
                validate : function(){return true;}\r
        }\r
 });
\ No newline at end of file
diff --git a/security/runtime/org.argeo.security.ria/src/argeo-ria-lib/security/resource/org.argeo.security.ria/document-properties.png b/security/runtime/org.argeo.security.ria/src/argeo-ria-lib/security/resource/org.argeo.security.ria/document-properties.png
new file mode 100644 (file)
index 0000000..f309924
Binary files /dev/null and b/security/runtime/org.argeo.security.ria/src/argeo-ria-lib/security/resource/org.argeo.security.ria/document-properties.png differ
diff --git a/security/runtime/org.argeo.security.ria/src/argeo-ria-lib/security/resource/org.argeo.security.ria/document-save.png b/security/runtime/org.argeo.security.ria/src/argeo-ria-lib/security/resource/org.argeo.security.ria/document-save.png
new file mode 100644 (file)
index 0000000..09f2d75
Binary files /dev/null and b/security/runtime/org.argeo.security.ria/src/argeo-ria-lib/security/resource/org.argeo.security.ria/document-save.png differ
diff --git a/security/runtime/org.argeo.security.ria/src/argeo-ria-lib/security/resource/org.argeo.security.ria/go-next.png b/security/runtime/org.argeo.security.ria/src/argeo-ria-lib/security/resource/org.argeo.security.ria/go-next.png
new file mode 100644 (file)
index 0000000..9065e55
Binary files /dev/null and b/security/runtime/org.argeo.security.ria/src/argeo-ria-lib/security/resource/org.argeo.security.ria/go-next.png differ
diff --git a/security/runtime/org.argeo.security.ria/src/argeo-ria-lib/security/resource/org.argeo.security.ria/list-add.png b/security/runtime/org.argeo.security.ria/src/argeo-ria-lib/security/resource/org.argeo.security.ria/list-add.png
new file mode 100644 (file)
index 0000000..0478b7d
Binary files /dev/null and b/security/runtime/org.argeo.security.ria/src/argeo-ria-lib/security/resource/org.argeo.security.ria/list-add.png differ
diff --git a/security/runtime/org.argeo.security.ria/src/argeo-ria-lib/security/resource/org.argeo.security.ria/list-remove.png b/security/runtime/org.argeo.security.ria/src/argeo-ria-lib/security/resource/org.argeo.security.ria/list-remove.png
new file mode 100644 (file)
index 0000000..bebd233
Binary files /dev/null and b/security/runtime/org.argeo.security.ria/src/argeo-ria-lib/security/resource/org.argeo.security.ria/list-remove.png differ
diff --git a/security/runtime/org.argeo.security.ria/src/argeo-ria-lib/security/resource/org.argeo.security.ria/window-close.png b/security/runtime/org.argeo.security.ria/src/argeo-ria-lib/security/resource/org.argeo.security.ria/window-close.png
new file mode 100644 (file)
index 0000000..d4f4814
Binary files /dev/null and b/security/runtime/org.argeo.security.ria/src/argeo-ria-lib/security/resource/org.argeo.security.ria/window-close.png differ