]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - security/eclipse/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/editors/ArgeoUserEditor.java
Add user
[lgpl/argeo-commons.git] / security / eclipse / plugins / org.argeo.security.ui / src / main / java / org / argeo / security / ui / editors / ArgeoUserEditor.java
index 256016f85b8fcc201010f30c7a9b9de9e545f013..7c0213704a299a6785c7d3695597de491eddee60 100644 (file)
@@ -5,14 +5,13 @@ import org.apache.commons.logging.LogFactory;
 import org.argeo.ArgeoException;
 import org.argeo.security.ArgeoSecurityService;
 import org.argeo.security.ArgeoUser;
+import org.argeo.security.SimpleArgeoUser;
+import org.argeo.security.nature.SimpleUserNature;
 import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
 import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.IEditorSite;
 import org.eclipse.ui.PartInitException;
 import org.eclipse.ui.forms.editor.FormEditor;
-import org.eclipse.ui.forms.widgets.FormToolkit;
 
 /** Editor for an Argeo user. */
 public class ArgeoUserEditor extends FormEditor {
@@ -28,8 +27,14 @@ public class ArgeoUserEditor extends FormEditor {
                super.init(site, input);
                String username = ((ArgeoUserEditorInput) getEditorInput())
                                .getUsername();
-               user = securityService.getSecurityDao().getUser(username);
-               this.setPartProperty("name", username);
+               if (username == null) {// new
+                       user = new SimpleArgeoUser();
+                       user.getUserNatures().put(SimpleUserNature.TYPE,
+                                       new SimpleUserNature());
+               } else
+                       user = securityService.getSecurityDao().getUser(username);
+               this.setPartProperty("name", username != null ? username : "<new user>");
+               setPartName(username != null ? username : "<new user>");
        }
 
        protected void addPages() {
@@ -43,8 +48,24 @@ public class ArgeoUserEditor extends FormEditor {
 
        @Override
        public void doSave(IProgressMonitor monitor) {
-               log.debug("doSave called");
-               securityService.updateUser(user);
+               // list pages
+               // TODO: make it more generic
+               findPage(DefaultUserMainPage.ID).doSave(monitor);
+
+               if (securityService.getSecurityDao().userExists(user.getUsername()))
+                       securityService.updateUser(user);
+               else {
+                       try {
+                               // FIXME: make it cleaner
+                               ((SimpleArgeoUser)user).setPassword(user.getUsername());
+                               securityService.newUser(user);
+                               setPartName(user.getUsername());
+                       } catch (Exception e) {
+                               // TODO Auto-generated catch block
+                               e.printStackTrace();
+                       }
+               }
+               firePropertyChange(PROP_DIRTY);
        }
 
        @Override
@@ -59,14 +80,4 @@ public class ArgeoUserEditor extends FormEditor {
        public void setSecurityService(ArgeoSecurityService securityService) {
                this.securityService = securityService;
        }
-       
-       
-       private class DirtyListener implements ModifyListener {
-
-               public void modifyText(ModifyEvent e) {
-                       
-               }
-               
-       }
-
 }