Work on user and group editors. Comment out legacy code that use old userAdminService
authorBruno Sinou <bsinou@argeo.org>
Fri, 11 Sep 2015 07:09:28 +0000 (07:09 +0000)
committerBruno Sinou <bsinou@argeo.org>
Fri, 11 Sep 2015 07:09:28 +0000 (07:09 +0000)
git-svn-id: https://svn.argeo.org/commons/trunk@8382 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

17 files changed:
org.argeo.security.ui.admin/META-INF/spring/commands.xml
org.argeo.security.ui.admin/META-INF/spring/editors.xml
org.argeo.security.ui.admin/META-INF/spring/osgi.xml
org.argeo.security.ui.admin/META-INF/spring/views.xml
org.argeo.security.ui.admin/plugin.xml
org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/SecurityAdminPerspective.java
org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/commands/AddRole.java
org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/commands/DeleteRole.java
org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/commands/OpenArgeoUserEditor.java
org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/commands/RefreshUsersList.java
org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/editors/GroupMainPage.java
org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/editors/JcrArgeoUserEditor.java
org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/editors/UserEditor.java
org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/editors/UserMainPage.java
org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/UserAdminConstants.java
org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/views/JcrRolesView.java
org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/views/JcrUsersView.java

index f7a483f4c2f0927648bfbd780e3768c632803270..94dff3fc2e89b19bd9860e929f7649557fa2eb67 100644 (file)
@@ -4,48 +4,24 @@
        xsi:schemaLocation="http://www.springframework.org/schema/beans
         http://www.springframework.org/schema/beans/spring-beans.xsd">
 
-       <bean id="openArgeoUserEditor"
-               class="org.argeo.security.ui.admin.commands.OpenArgeoUserEditor"
-               scope="prototype" />
-
+       <!-- <bean id="openArgeoUserEditor" class="org.argeo.security.ui.admin.commands.OpenArgeoUserEditor" 
+               scope="prototype" /> -->
        <!-- USERS -->
-       <bean id="newUser" class="org.argeo.security.ui.admin.commands.NewUser"
-               scope="prototype">
-               <property name="repository" ref="nodeRepository" />
-               <property name="userAdminService" ref="userAdminService" />
-               <!-- <property name="jcrSecurityModel" ref="jcrSecurityModel" /> -->
-       </bean>
-
-       <bean id="refreshUsersList" class="org.argeo.security.ui.admin.commands.RefreshUsersList"
-               scope="prototype">
-               <property name="userAdminService" ref="userAdminService" />
-               <property name="repository" ref="nodeRepository" />
-       </bean>
-
-       <bean id="deleteUser" class="org.argeo.security.ui.admin.commands.DeleteUser"
-               scope="prototype">
-               <property name="userAdminService" ref="userAdminService" />
-       </bean>
-
-       <bean id="userBatchUpdate" class="org.argeo.security.ui.admin.commands.UserBatchUpdate"
-               scope="prototype">
-               <property name="repository" ref="nodeRepository" />
-               <property name="userAdminService" ref="userAdminService" />
-       </bean>
-
-
+       <!-- <bean id="newUser" class="org.argeo.security.ui.admin.commands.NewUser" 
+               scope="prototype"> <property name="repository" ref="nodeRepository" /> <property 
+               name="userAdminService" ref="userAdminService" /> </bean> <bean id="refreshUsersList" 
+               class="org.argeo.security.ui.admin.commands.RefreshUsersList" scope="prototype"> 
+               <property name="userAdminService" ref="userAdminService" /> <property name="repository" 
+               ref="nodeRepository" /> </bean> <bean id="deleteUser" class="org.argeo.security.ui.admin.commands.DeleteUser" 
+               scope="prototype"> <property name="userAdminService" ref="userAdminService" 
+               /> </bean> <bean id="userBatchUpdate" class="org.argeo.security.ui.admin.commands.UserBatchUpdate" 
+               scope="prototype"> <property name="repository" ref="nodeRepository" /> <property 
+               name="userAdminService" ref="userAdminService" /> </bean> -->
        <!-- ROLES -->
-       <bean id="refreshRoles" class="org.argeo.security.ui.admin.commands.RefreshRoles"
-               scope="prototype">
-       </bean>
-
-       <bean id="addRole" class="org.argeo.security.ui.admin.commands.AddRole"
-               scope="prototype">
-               <property name="userAdminService" ref="userAdminService" />
-       </bean>
-
-       <bean id="deleteRole" class="org.argeo.security.ui.admin.commands.DeleteRole"
-               scope="prototype">
-               <property name="userAdminService" ref="userAdminService" />
-       </bean>
+       <!-- <bean id="refreshRoles" class="org.argeo.security.ui.admin.commands.RefreshRoles" 
+               scope="prototype"> </bean> <bean id="addRole" class="org.argeo.security.ui.admin.commands.AddRole" 
+               scope="prototype"> <property name="userAdminService" ref="userAdminService" 
+               /> </bean> <bean id="deleteRole" class="org.argeo.security.ui.admin.commands.DeleteRole" 
+               scope="prototype"> <property name="userAdminService" ref="userAdminService" 
+               /> </bean> -->
 </beans>
index ac7441b939d4546d4f8192db5cd94210e7feb3f3..5de9ede203c0c767dc5bd9c04cf127d41750397c 100644 (file)
@@ -14,9 +14,7 @@
        <!-- <bean id="groupEditor" class="org.argeo.security.ui.admin.editors.GroupEditor" 
                scope="prototype"> <property name="userAdmin" ref="userAdmin" /> </bean> -->
        <!-- LEGACY -->
-       <bean id="adminArgeoUserEditor" class="org.argeo.security.ui.admin.editors.JcrArgeoUserEditor"
-               scope="prototype">
-               <property name="userAdminService" ref="userAdminService" />
-               <property name="repository" ref="nodeRepository" />
-       </bean>
+       <!-- <bean id="adminArgeoUserEditor" class="org.argeo.security.ui.admin.editors.JcrArgeoUserEditor" 
+               scope="prototype"> <property name="userAdminService" ref="userAdminService" 
+               /> <property name="repository" ref="nodeRepository" /> </bean> -->
 </beans>
index b4c52fc4f18a8e084b8ad01d7b805dd9c3849794..b2154564aad3ff95d863017832f23e7d826a3271 100644 (file)
@@ -10,8 +10,8 @@
 \r
        <reference id="nodeRepository" interface="javax.jcr.Repository"\r
                filter="(argeo.jcr.repository.alias=node)" />\r
-       <reference id="userAdminService" interface="org.argeo.security.UserAdminService" />\r
-       \r
+       <!-- <reference id="userAdminService" interface="org.argeo.security.UserAdminService" \r
+               /> -->\r
        <!-- new useradmin -->\r
        <reference id="userAdmin" interface="org.osgi.service.useradmin.UserAdmin" />\r
 \r
index 86168e0a803123e76d55bb16a00f1fbda8db91b9..23d29d28bbbc8cf6346c9050f2ce658a6d92b482 100644 (file)
        </bean>
 
        <!-- LEGACY. TODO: Remove -->
-       <bean id="jcrUsersView" class="org.argeo.security.ui.admin.views.JcrUsersView"
-               scope="prototype">
-               <property name="repository" ref="nodeRepository" />
-       </bean>
-       <bean id="adminRolesView" class="org.argeo.security.ui.admin.views.RolesView"
-               scope="prototype">
-               <property name="userAdminService" ref="userAdminService" />
-       </bean>
+       <!-- <bean id="jcrUsersView" class="org.argeo.security.ui.admin.views.JcrUsersView" 
+               scope="prototype"> <property name="repository" ref="nodeRepository" /> </bean> 
+               <bean id="adminRolesView" class="org.argeo.security.ui.admin.views.RolesView" 
+               scope="prototype"> <property name="userAdminService" ref="userAdminService" 
+               /> </bean> -->
 </beans>
index c9dacd420f775f59af7e06756cc7f570b8ea03db..fe52cd0fcb6b065a046352e4b6cc514fb1ef4fb9 100644 (file)
@@ -29,7 +29,7 @@
       </view>
       
       <!-- Legacy -->
-      <view
+      <!-- <view
             class="org.argeo.eclipse.spring.SpringExtensionFactory"
             icon="icons/users.gif"
             id="org.argeo.security.ui.admin.jcrUsersView"
@@ -42,8 +42,8 @@
             id="org.argeo.security.ui.admin.jcrRolesView"
             name="Roles"
             restorable="false">
-      </view>
-       </extension>
+      </view>-->
+       </extension> 
        
        <!-- Editors -->
        <extension
             default="false">
                </editor>
                <!-- Legacy -->
-               <editor
+               <!--<editor
                        class="org.argeo.eclipse.spring.SpringExtensionFactory"
             id="org.argeo.security.ui.admin.adminArgeoUserEditor"
             name="User"
             icon="icons/user.gif"
                        default="false">
-               </editor>
+               </editor> -->
        </extension>
     
     <extension
          point="org.eclipse.ui.commands">
-      <command
+      <!--<command
             defaultHandler="org.argeo.eclipse.spring.SpringCommandHandler"
             id="org.argeo.security.ui.admin.openArgeoUserEditor"
             name="OpenArgeoUserEditor">
             defaultHandler="org.argeo.eclipse.spring.SpringCommandHandler"
             id="org.argeo.security.ui.admin.userBatchUpdate"
             name="User batch update">
-      </command>
+      </command> -->
     </extension>
      <extension
          point="org.eclipse.ui.menus">
-       <menuContribution
+<!--           <menuContribution
             locationURI="toolbar:org.argeo.security.ui.admin.adminRolesView">
             <command
                   commandId="org.argeo.security.ui.admin.deleteRole"
                   label="LDAP Users Sync"
                   tooltip="Synchronize users from LDAP">
             </command>
-        </menuContribution>
+        </menuContribution> -->
   </extension>
   
   <extension
index 082fba9098f2c7e7c1d78411221ed757125ae307..7b340d64347720731e623847157931b724d6f29c 100644 (file)
@@ -16,8 +16,6 @@
 package org.argeo.security.ui.admin;
 
 import org.argeo.security.ui.admin.views.GroupsView;
-import org.argeo.security.ui.admin.views.JcrUsersView;
-import org.argeo.security.ui.admin.views.JcrRolesView;
 import org.argeo.security.ui.admin.views.UsersView;
 import org.eclipse.ui.IFolderLayout;
 import org.eclipse.ui.IPageLayout;
@@ -33,8 +31,8 @@ public class SecurityAdminPerspective implements IPerspectiveFactory {
                IFolderLayout left = layout.createFolder("left", IPageLayout.LEFT,
                                0.25f, editorArea);
                left.addView(UsersView.ID);
-               left.addView(JcrUsersView.ID);
-               left.addView(JcrRolesView.ID);
+               // left.addView(JcrUsersView.ID);
+               // left.addView(JcrRolesView.ID);
 
                IFolderLayout right = layout.createFolder("right", IPageLayout.RIGHT,
                                0.70f, editorArea);
index 56946e76b48d191c4d94cd1fb046571216042d15..c91f81a3c455a4e39cf94592a5231db040e4c4ef 100644 (file)
  */
 package org.argeo.security.ui.admin.commands;
 
-import org.argeo.ArgeoException;
 import org.argeo.security.UserAdminService;
-import org.argeo.security.ui.admin.editors.JcrArgeoUserEditor;
-import org.argeo.security.ui.admin.views.JcrRolesView;
 import org.eclipse.core.commands.AbstractHandler;
 import org.eclipse.core.commands.ExecutionEvent;
 import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.ui.IEditorReference;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.handlers.HandlerUtil;
 
 /** Add a new role. */
 public class AddRole extends AbstractHandler {
@@ -33,37 +27,44 @@ public class AddRole extends AbstractHandler {
        private String rolePrefix = "ROLE_";
 
        public Object execute(ExecutionEvent event) throws ExecutionException {
-               JcrRolesView rolesView = (JcrRolesView) HandlerUtil
-                               .getActiveWorkbenchWindow(event).getActivePage()
-                               .findView(JcrRolesView.ID);
-               String role = rolesView.getNewRole();
-               if (role.trim().equals(""))
-                       return null;
-               if (role.equals(rolesView.getAddNewRoleText()))
-                       return null;
-               role = role.trim().toUpperCase();
-               if (!role.startsWith(rolePrefix))
-                       role = rolePrefix + role;
-               if (userAdminService.listEditableRoles().contains(role))
-                       throw new ArgeoException("Role " + role + " already exists");
-               userAdminService.newRole(role);
-               rolesView.refresh();
-
-               // refresh editors
-               IEditorReference[] refs = HandlerUtil.getActiveWorkbenchWindow(event)
-                               .getActivePage()
-                               .findEditors(null, JcrArgeoUserEditor.ID, IWorkbenchPage.MATCH_ID);
-               for (IEditorReference ref : refs) {
-                       JcrArgeoUserEditor userEditor = (JcrArgeoUserEditor) ref.getEditor(false);
-                       if (userEditor != null) {
-                               userEditor.refresh();
-                       }
-               }
                return null;
        }
 
        public void setUserAdminService(UserAdminService userAdminService) {
                this.userAdminService = userAdminService;
        }
-
 }
+// JcrRolesView rolesView = (JcrRolesView) HandlerUtil
+// .getActiveWorkbenchWindow(event).getActivePage()
+// .findView(JcrRolesView.ID);
+// String role = rolesView.getNewRole();
+// if (role.trim().equals(""))
+// return null;
+// if (role.equals(rolesView.getAddNewRoleText()))
+// return null;
+// role = role.trim().toUpperCase();
+// if (!role.startsWith(rolePrefix))
+// role = rolePrefix + role;
+// if (userAdminService.listEditableRoles().contains(role))
+// throw new ArgeoException("Role " + role + " already exists");
+// userAdminService.newRole(role);
+// rolesView.refresh();
+//
+// // refresh editors
+// IEditorReference[] refs = HandlerUtil.getActiveWorkbenchWindow(event)
+// .getActivePage()
+// .findEditors(null, JcrArgeoUserEditor.ID, IWorkbenchPage.MATCH_ID);
+// for (IEditorReference ref : refs) {
+// JcrArgeoUserEditor userEditor = (JcrArgeoUserEditor) ref.getEditor(false);
+// if (userEditor != null) {
+// userEditor.refresh();
+// }
+// }
+// return null;
+// }
+//
+// public void setUserAdminService(UserAdminService userAdminService) {
+// this.userAdminService = userAdminService;
+// }
+//
+// }
index 7648e26180caa216b6c26499a3583a3e935fe5a4..a8db0eb8e205077f35366664e3d3a36a92c695cf 100644 (file)
  */
 package org.argeo.security.ui.admin.commands;
 
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
 import org.argeo.security.UserAdminService;
-import org.argeo.security.ui.admin.views.JcrRolesView;
 import org.eclipse.core.commands.AbstractHandler;
 import org.eclipse.core.commands.ExecutionEvent;
 import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.ui.handlers.HandlerUtil;
 
 /** Deletes the selected roles */
 public class DeleteRole extends AbstractHandler {
@@ -35,38 +26,45 @@ public class DeleteRole extends AbstractHandler {
 
        @SuppressWarnings("unchecked")
        public Object execute(ExecutionEvent event) throws ExecutionException {
-               ISelection selection = HandlerUtil.getCurrentSelection(event);
-               if (selection.isEmpty())
-                       return null;
-
-               List<String> toDelete = new ArrayList<String>();
-               Iterator<String> it = ((IStructuredSelection) selection).iterator();
-               while (it.hasNext()) {
-                       toDelete.add(it.next());
-               }
-
-               if (!MessageDialog
-                               .openQuestion(
-                                               HandlerUtil.getActiveShell(event),
-                                               "Delete Role",
-                                               "Are you sure that you want to delete "
-                                                               + toDelete
-                                                               + "?\n"
-                                                               + "This may lead to inconsistencies in the application."))
-                       return null;
-
-               for (String role : toDelete) {
-                       userAdminService.deleteRole(role);
-               }
-
-               JcrRolesView view = (JcrRolesView) HandlerUtil
-                               .getActiveWorkbenchWindow(event).getActivePage()
-                               .findView(JcrRolesView.ID);
-               view.refresh();
                return null;
        }
 
        public void setUserAdminService(UserAdminService userAdminService) {
                this.userAdminService = userAdminService;
        }
-}
\ No newline at end of file
+}
+// ISelection selection = HandlerUtil.getCurrentSelection(event);
+// if (selection.isEmpty())
+// return null;
+//
+// List<String> toDelete = new ArrayList<String>();
+// Iterator<String> it = ((IStructuredSelection) selection).iterator();
+// while (it.hasNext()) {
+// toDelete.add(it.next());
+// }
+//
+// if (!MessageDialog
+// .openQuestion(
+// HandlerUtil.getActiveShell(event),
+// "Delete Role",
+// "Are you sure that you want to delete "
+// + toDelete
+// + "?\n"
+// + "This may lead to inconsistencies in the application."))
+// return null;
+//
+// for (String role : toDelete) {
+// userAdminService.deleteRole(role);
+// }
+//
+// JcrRolesView view = (JcrRolesView) HandlerUtil
+// .getActiveWorkbenchWindow(event).getActivePage()
+// .findView(JcrRolesView.ID);
+// view.refresh();
+// return null;
+// }
+//
+// public void setUserAdminService(UserAdminService userAdminService) {
+// this.userAdminService = userAdminService;
+// }
+// }
\ No newline at end of file
index fe8cefa5f5011046537bcca0e310b58370d5f894..3dd1a7d623637c0bc777fecbf009d38d3510ce97 100644 (file)
  */
 package org.argeo.security.ui.admin.commands;
 
-import org.argeo.security.ui.admin.editors.JcrArgeoUserEditor;
-import org.argeo.security.ui.admin.editors.ArgeoUserEditorInput;
 import org.eclipse.core.commands.AbstractHandler;
 import org.eclipse.core.commands.ExecutionEvent;
 import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.handlers.HandlerUtil;
 
 /** Command handler to set visible or open a Argeo user. */
 public class OpenArgeoUserEditor extends AbstractHandler {
@@ -29,15 +25,15 @@ public class OpenArgeoUserEditor extends AbstractHandler {
        public final static String PARAM_USERNAME = "org.argeo.security.ui.admin.username";
 
        public Object execute(ExecutionEvent event) throws ExecutionException {
-               try {
-                       ArgeoUserEditorInput editorInput = new ArgeoUserEditorInput(
-                                       event.getParameter(PARAM_USERNAME));
-                       IWorkbenchPage activePage = HandlerUtil.getActiveWorkbenchWindow(
-                                       event).getActivePage();
-                       activePage.openEditor(editorInput, JcrArgeoUserEditor.ID);
-               } catch (Exception e) {
-                       throw new ExecutionException("Cannot open editor", e);
-               }
+               // try {
+               // ArgeoUserEditorInput editorInput = new ArgeoUserEditorInput(
+               // event.getParameter(PARAM_USERNAME));
+               // IWorkbenchPage activePage = HandlerUtil.getActiveWorkbenchWindow(
+               // event).getActivePage();
+               // activePage.openEditor(editorInput, JcrArgeoUserEditor.ID);
+               // } catch (Exception e) {
+               // throw new ExecutionException("Cannot open editor", e);
+               // }
                return null;
        }
 }
index fd98e718f2d453359b891bd686979425c1b30e30..e6be8d91ae5954a83644ff704141ac0806c127a5 100644 (file)
  */
 package org.argeo.security.ui.admin.commands;
 
-import java.util.Set;
-
-import javax.jcr.Node;
-import javax.jcr.NodeIterator;
 import javax.jcr.Repository;
-import javax.jcr.RepositoryException;
-import javax.jcr.Session;
-import javax.jcr.query.Query;
 
-import org.argeo.ArgeoException;
-import org.argeo.jcr.ArgeoNames;
-import org.argeo.jcr.ArgeoTypes;
-import org.argeo.jcr.JcrUtils;
 import org.argeo.security.UserAdminService;
-import org.argeo.security.ui.admin.views.JcrUsersView;
 import org.eclipse.core.commands.AbstractHandler;
 import org.eclipse.core.commands.ExecutionEvent;
 import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.handlers.HandlerUtil;
 
 /**
  * Refreshes the main user list, removing nodes which are not referenced by user
@@ -45,46 +31,47 @@ public class RefreshUsersList extends AbstractHandler {
        private Repository repository;
 
        public Object execute(ExecutionEvent event) throws ExecutionException {
-               Set<String> users = userAdminService.listUsers();
-               Session session = null;
-               try {
-                       session = repository.login();
-                       Query query = session
-                                       .getWorkspace()
-                                       .getQueryManager()
-                                       .createQuery(
-                                                       "select * from [" + ArgeoTypes.ARGEO_USER_HOME
-                                                                       + "]", Query.JCR_SQL2);
-                       NodeIterator nit = query.execute().getNodes();
-                       while (nit.hasNext()) {
-                               Node node = nit.nextNode();
-                               String username = node.getProperty(ArgeoNames.ARGEO_USER_ID)
-                                               .getString();
-                               if (!users.contains(username))
-                                       node.remove();
-                       }
-                       session.save();
-               } catch (RepositoryException e) {
-                       JcrUtils.discardQuietly(session);
-                       throw new ArgeoException("Cannot list users", e);
-               } finally {
-                       JcrUtils.logoutQuietly(session);
-               }
-               userAdminService.synchronize();
-
-               // FIXME try to refresh views that extend the JcrUsersView and have another
-               // ID
-               IWorkbenchPart part = HandlerUtil.getActiveWorkbenchWindow(event)
-                               .getActivePage().getActivePart();
-               if (part instanceof JcrUsersView)
-                       ((JcrUsersView) part).refresh();
-
-               // Try to refresh JcrUsersView if opened
-               JcrUsersView view = (JcrUsersView) HandlerUtil
-                               .getActiveWorkbenchWindow(event).getActivePage()
-                               .findView(JcrUsersView.ID);
-               if (view != null)
-                       view.refresh();
+               // Set<String> users = userAdminService.listUsers();
+               // Session session = null;
+               // try {
+               // session = repository.login();
+               // Query query = session
+               // .getWorkspace()
+               // .getQueryManager()
+               // .createQuery(
+               // "select * from [" + ArgeoTypes.ARGEO_USER_HOME
+               // + "]", Query.JCR_SQL2);
+               // NodeIterator nit = query.execute().getNodes();
+               // while (nit.hasNext()) {
+               // Node node = nit.nextNode();
+               // String username = node.getProperty(ArgeoNames.ARGEO_USER_ID)
+               // .getString();
+               // if (!users.contains(username))
+               // node.remove();
+               // }
+               // session.save();
+               // } catch (RepositoryException e) {
+               // JcrUtils.discardQuietly(session);
+               // throw new ArgeoException("Cannot list users", e);
+               // } finally {
+               // JcrUtils.logoutQuietly(session);
+               // }
+               // userAdminService.synchronize();
+               //
+               // // FIXME try to refresh views that extend the JcrUsersView and have
+               // another
+               // // ID
+               // IWorkbenchPart part = HandlerUtil.getActiveWorkbenchWindow(event)
+               // .getActivePage().getActivePart();
+               // if (part instanceof JcrUsersView)
+               // ((JcrUsersView) part).refresh();
+               //
+               // // Try to refresh JcrUsersView if opened
+               // JcrUsersView view = (JcrUsersView) HandlerUtil
+               // .getActiveWorkbenchWindow(event).getActivePage()
+               // .findView(JcrUsersView.ID);
+               // if (view != null)
+               // view.refresh();
 
                return null;
        }
index 7e880bfc4e4074e01e4a7118f98c1d6db763936d..f56f1cf670ee995fb80899a7a7892e9bfdc910ca 100644 (file)
@@ -33,8 +33,11 @@ import org.argeo.security.ui.admin.internal.UserTableDefaultDClickListener;
 import org.argeo.security.ui.admin.internal.UserTableViewer;
 import org.eclipse.jface.viewers.TableViewer;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
 import org.eclipse.ui.forms.AbstractFormPart;
 import org.eclipse.ui.forms.IManagedForm;
 import org.eclipse.ui.forms.SectionPart;
@@ -53,9 +56,11 @@ public class GroupMainPage extends FormPage implements ArgeoNames {
        final static String ID = "GroupEditor.mainPage";
 
        private final UserEditor editor;
-
        private UserAdmin userAdmin;
 
+       // Local configuration
+       private final int PRE_TITLE_INDENT = 10;
+
        public GroupMainPage(FormEditor editor, UserAdmin userAdmin) {
                super(editor, ID, "Main");
                this.editor = (UserEditor) editor;
@@ -65,25 +70,51 @@ public class GroupMainPage extends FormPage implements ArgeoNames {
        protected void createFormContent(final IManagedForm mf) {
                try {
                        ScrolledForm form = mf.getForm();
-                       form.getBody().getParent().setLayoutData(EclipseUiUtils.fillAll());
-                       form.setExpandHorizontal(true);
-                       refreshFormTitle(form);
-                       // GridLayout mainLayout = new GridLayout(1, true);
-                       createGeneralPart(form.getBody());
+                       refreshFormTitle();
+
+                       // Body
+                       Composite body = form.getBody();
+                       GridLayout mainLayout = new GridLayout();
+                       body.setLayout(mainLayout);
+                       appendOverviewPart(body);
+                       appendMembersPart(body);
                } catch (RepositoryException e) {
                        throw new ArgeoException("Cannot create form content", e);
                }
        }
 
        /** Creates the general section */
-       protected void createGeneralPart(Composite parent)
+       protected void appendOverviewPart(Composite parent) {
+               FormToolkit tk = getManagedForm().getToolkit();
+               Composite body = addSection(tk, parent, "Main information");
+               GridLayout layout = new GridLayout(2, false);
+               body.setLayout(layout);
+
+               Text distinguishedName = createLT(body, "Group Name",
+                               editor.getProperty(UserAdminConstants.KEY_UID));
+               distinguishedName.setEnabled(false);
+
+               final Text commonName = createLT(body, "Common Name",
+                               editor.getProperty(UserAdminConstants.KEY_CN));
+               commonName.setEnabled(false);
+
+               // create form part (controller)
+               AbstractFormPart part = new SectionPart((Section) body.getParent()) {
+                       public void commit(boolean onSave) {
+                               super.commit(onSave);
+                       }
+               };
+               getManagedForm().addPart(part);
+       }
+
+       /** Filtered table with members. Has drag & drop ability */
+       protected void appendMembersPart(Composite parent)
                        throws RepositoryException {
-               parent.setLayout(new GridLayout());
 
                FormToolkit tk = getManagedForm().getToolkit();
                Section section = tk.createSection(parent, Section.TITLE_BAR);
                section.setLayoutData(EclipseUiUtils.fillAll());
-               section.setText("Members of "
+               section.setText("Members of group "
                                + editor.getProperty(UserAdminConstants.KEY_CN));
 
                // Composite body = tk.createComposite(section, SWT.NONE);
@@ -161,10 +192,31 @@ public class GroupMainPage extends FormPage implements ArgeoNames {
                }
        }
 
-       private void refreshFormTitle(ScrolledForm form) throws RepositoryException {
-               // form.setText(getProperty(Property.JCR_TITLE)
-               // + (userProfile.getProperty(ARGEO_ENABLED).getBoolean() ? ""
-               // : " [DISABLED]"));
+       private void refreshFormTitle() throws RepositoryException {
+               getManagedForm().getForm().setText(
+                               editor.getProperty(UserAdminConstants.KEY_CN));
+       }
+
+       private Composite addSection(FormToolkit tk, Composite parent, String title) {
+               Section section = tk.createSection(parent, Section.TITLE_BAR);
+               GridData gd = EclipseUiUtils.fillWidth();
+               gd.verticalAlignment = PRE_TITLE_INDENT;
+               section.setLayoutData(gd);
+               section.setText(title);
+               Composite body = tk.createComposite(section, SWT.WRAP);
+               body.setLayoutData(EclipseUiUtils.fillAll());
+               section.setClient(body);
+               return body;
+       }
+
+       /** Creates label and text. */
+       protected Text createLT(Composite body, String label, String value) {
+               FormToolkit toolkit = getManagedForm().getToolkit();
+               Label lbl = toolkit.createLabel(body, label);
+               lbl.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false));
+               Text text = toolkit.createText(body, value, SWT.BORDER);
+               text.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
+               return text;
        }
 
        // private class FormPartML implements ModifyListener {
index 83d59e63c933ce89615009474a78bebf20ebd98c..e63dfc599f9f84950c4c4d2b113239de552f0a3d 100644 (file)
  */
 package org.argeo.security.ui.admin.editors;
 
-import java.util.ArrayList;
-
-import javax.jcr.Node;
-import javax.jcr.Repository;
-import javax.jcr.RepositoryException;
-import javax.jcr.Session;
-
-import org.argeo.ArgeoException;
-import org.argeo.jcr.JcrUtils;
-import org.argeo.jcr.UserJcrUtils;
-import org.argeo.security.UserAdminService;
-import org.argeo.security.jcr.JcrUserDetails;
-import org.argeo.security.ui.admin.SecurityAdminPlugin;
-import org.argeo.security.ui.admin.views.JcrUsersView;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorSite;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.forms.editor.FormEditor;
-import org.springframework.security.core.GrantedAuthority;
-
-/** Editor for an Argeo user. */
-public class JcrArgeoUserEditor extends FormEditor {
-       private static final long serialVersionUID = 1933296330339252869L;
-
-       public final static String ID = SecurityAdminPlugin.PLUGIN_ID
-                       + ".adminArgeoUserEditor";
-
-       /* DEPENDENCY INJECTION */
-       private Session session;
-       private UserAdminService userAdminService;
-
-       // private Node userHome;
-       private Node userProfile;
-       private JcrUserDetails userDetails;
-
-       public void init(IEditorSite site, IEditorInput input)
-                       throws PartInitException {
-               super.init(site, input);
-               String username = ((ArgeoUserEditorInput) getEditorInput())
-                               .getUsername();
-               userProfile = UserJcrUtils.getUserProfile(session, username);
-
-               if (userAdminService.userExists(username)) {
-                       try {
-                               userDetails = (JcrUserDetails) userAdminService
-                                               .loadUserByUsername(username);
-                       } catch (Exception e) {
-                               throw new ArgeoException("Cannot retrieve userDetails for "
-                                               + username, e);
-                       }
-               } else {
-                       try {
-                               userDetails = new JcrUserDetails(session, username, null,
-                                               new ArrayList<GrantedAuthority>());
-                       } catch (RepositoryException e) {
-                               throw new ArgeoException("Cannot retrieve disabled JCR profile");
-                       }
-               }
-
-               this.setPartProperty("name", username != null ? username : "<new user>");
-               setPartName(username != null ? username : "<new user>");
-       }
-
-       protected void addPages() {
-               try {
-                       addPage(new DefaultUserMainPage(this, userProfile));
-                       addPage(new UserRolesPage(this, userDetails, userAdminService));
-               } catch (Exception e) {
-                       throw new ArgeoException("Cannot add pages", e);
-               }
-       }
-
-       @Override
-       public void doSave(IProgressMonitor monitor) {
-               // list pages
-               // TODO: make it more generic
-               DefaultUserMainPage defaultUserMainPage = (DefaultUserMainPage) findPage(DefaultUserMainPage.ID);
-               if (defaultUserMainPage.isDirty()) {
-                       defaultUserMainPage.doSave(monitor);
-                       String newPassword = defaultUserMainPage.getNewPassword();
-                       defaultUserMainPage.resetNewPassword();
-                       if (newPassword != null)
-                               userDetails = userDetails.cloneWithNewPassword(newPassword);
-               }
-
-               UserRolesPage userRolesPage = (UserRolesPage) findPage(UserRolesPage.ID);
-               if (userRolesPage.isDirty()) {
-                       userRolesPage.doSave(monitor);
-                       userDetails = userDetails.cloneWithNewRoles(userRolesPage
-                                       .getRoles());
-               }
-
-               userAdminService.updateUser(userDetails);
-
-               // if (userAdminService.userExists(user.getUsername()))
-               // userAdminService.updateUser(user);
-               // else {
-               // userAdminService.newUser(user);
-               // setPartName(user.getUsername());
-               // }
-               firePropertyChange(PROP_DIRTY);
-
-               userRolesPage.setUserDetails(userDetails);
-
-               // FIXME rather use a refresh command. Fails when called by another
-               // view.
-               // refresh users view
-               IWorkbench iw = SecurityAdminPlugin.getDefault().getWorkbench();
-               JcrUsersView usersView = (JcrUsersView) iw.getActiveWorkbenchWindow()
-                               .getActivePage().findView(JcrUsersView.ID);
-               if (usersView != null)
-                       usersView.refresh();
-       }
-
-       
-       
-       @Override
-       public void doSaveAs() {
-       }
-
-       @Override
-       public boolean isSaveAsAllowed() {
-               return false;
-       }
-
-       public void refresh() {
-               UserRolesPage userRolesPage = (UserRolesPage) findPage(UserRolesPage.ID);
-               userRolesPage.refresh();
-       }
-
-       @Override
-       public void dispose() {
-               JcrUtils.logoutQuietly(session);
-               super.dispose();
-       }
-
-       /* DEPENDENCY INJECTION */
-       public void setUserAdminService(UserAdminService userAdminService) {
-               this.userAdminService = userAdminService;
-       }
-
-       public void setRepository(Repository repository) {
-               try {
-                       session = repository.login();
-               } catch (RepositoryException re) {
-                       throw new ArgeoException("Unable to initialise local session", re);
-               }
-       }
-}
+public class JcrArgeoUserEditor{}
+/** Editor for an Argeo user. Legacy. TODO Remove*/
+// public class JcrArgeoUserEditor extends FormEditor {
+// private static final long serialVersionUID = 1933296330339252869L;
+//
+// public final static String ID = SecurityAdminPlugin.PLUGIN_ID
+// + ".adminArgeoUserEditor";
+//
+// /* DEPENDENCY INJECTION */
+// private Session session;
+// private UserAdminService userAdminService;
+//
+// // private Node userHome;
+// private Node userProfile;
+// private JcrUserDetails userDetails;
+//
+// public void init(IEditorSite site, IEditorInput input)
+// throws PartInitException {
+// super.init(site, input);
+// String username = ((ArgeoUserEditorInput) getEditorInput())
+// .getUsername();
+// userProfile = UserJcrUtils.getUserProfile(session, username);
+//
+// if (userAdminService.userExists(username)) {
+// try {
+// userDetails = (JcrUserDetails) userAdminService
+// .loadUserByUsername(username);
+// } catch (Exception e) {
+// throw new ArgeoException("Cannot retrieve userDetails for "
+// + username, e);
+// }
+// } else {
+// try {
+// userDetails = new JcrUserDetails(session, username, null,
+// new ArrayList<GrantedAuthority>());
+// } catch (RepositoryException e) {
+// throw new ArgeoException("Cannot retrieve disabled JCR profile");
+// }
+// }
+//
+// this.setPartProperty("name", username != null ? username : "<new user>");
+// setPartName(username != null ? username : "<new user>");
+// }
+//
+// protected void addPages() {
+// try {
+// addPage(new DefaultUserMainPage(this, userProfile));
+// addPage(new UserRolesPage(this, userDetails, userAdminService));
+// } catch (Exception e) {
+// throw new ArgeoException("Cannot add pages", e);
+// }
+// }
+//
+// @Override
+// public void doSave(IProgressMonitor monitor) {
+// // list pages
+// // TODO: make it more generic
+// DefaultUserMainPage defaultUserMainPage = (DefaultUserMainPage)
+// findPage(DefaultUserMainPage.ID);
+// if (defaultUserMainPage.isDirty()) {
+// defaultUserMainPage.doSave(monitor);
+// String newPassword = defaultUserMainPage.getNewPassword();
+// defaultUserMainPage.resetNewPassword();
+// if (newPassword != null)
+// userDetails = userDetails.cloneWithNewPassword(newPassword);
+// }
+//
+// UserRolesPage userRolesPage = (UserRolesPage) findPage(UserRolesPage.ID);
+// if (userRolesPage.isDirty()) {
+// userRolesPage.doSave(monitor);
+// userDetails = userDetails.cloneWithNewRoles(userRolesPage
+// .getRoles());
+// }
+//
+// userAdminService.updateUser(userDetails);
+//
+// // if (userAdminService.userExists(user.getUsername()))
+// // userAdminService.updateUser(user);
+// // else {
+// // userAdminService.newUser(user);
+// // setPartName(user.getUsername());
+// // }
+// firePropertyChange(PROP_DIRTY);
+//
+// userRolesPage.setUserDetails(userDetails);
+//
+// // FIXME rather use a refresh command. Fails when called by another
+// // view.
+// // refresh users view
+// IWorkbench iw = SecurityAdminPlugin.getDefault().getWorkbench();
+// JcrUsersView usersView = (JcrUsersView) iw.getActiveWorkbenchWindow()
+// .getActivePage().findView(JcrUsersView.ID);
+// if (usersView != null)
+// usersView.refresh();
+// }
+//
+//
+//
+// @Override
+// public void doSaveAs() {
+// }
+//
+// @Override
+// public boolean isSaveAsAllowed() {
+// return false;
+// }
+//
+// public void refresh() {
+// UserRolesPage userRolesPage = (UserRolesPage) findPage(UserRolesPage.ID);
+// userRolesPage.refresh();
+// }
+//
+// @Override
+// public void dispose() {
+// JcrUtils.logoutQuietly(session);
+// super.dispose();
+// }
+//
+// /* DEPENDENCY INJECTION */
+// public void setUserAdminService(UserAdminService userAdminService) {
+// this.userAdminService = userAdminService;
+// }
+//
+// public void setRepository(Repository repository) {
+// try {
+// session = repository.login();
+// } catch (RepositoryException re) {
+// throw new ArgeoException("Unable to initialise local session", re);
+// }
+// }
+// }
index a811f86216b0eaf7ab2d77e244f854908eaaed6e..f2f233fe4f3a3f9a5613bb6d0c0e15dd595d8f78 100644 (file)
@@ -16,6 +16,7 @@
 package org.argeo.security.ui.admin.editors;
 
 import org.argeo.ArgeoException;
+import org.argeo.security.ui.admin.SecurityAdminImages;
 import org.argeo.security.ui.admin.SecurityAdminPlugin;
 import org.argeo.security.ui.admin.internal.UserAdminConstants;
 import org.eclipse.core.runtime.IProgressMonitor;
@@ -56,6 +57,8 @@ public class UserEditor extends FormEditor implements UserAdminConstants {
                // firePartPropertyChanged("icon", "icons/user.gif", "icons/users.gif");
                // }
                setPartName(commonName != null ? commonName : "username");
+               setTitleImage(user.getType() == Role.GROUP ? SecurityAdminImages.ICON_GROUP
+                               : SecurityAdminImages.ICON_USER);
        }
 
        /** Exposes the user (or group) that is displayed by the current editor */
@@ -63,13 +66,17 @@ public class UserEditor extends FormEditor implements UserAdminConstants {
                return user;
        }
 
+       void updateEditorTitle(String title) {
+               setPartName(title);
+       }
+
        protected void addPages() {
                try {
 
                        if (user.getType() == Role.GROUP)
                                addPage(new GroupMainPage(this, userAdmin));
                        else
-                               addPage(new UserMainPage(this));
+                               addPage(new UserMainPage(this, userAdmin));
 
                } catch (Exception e) {
                        throw new ArgeoException("Cannot add pages", e);
index 745bbff53f7f52bd5eff77e6e8c4804a9cf6efb7..d4ca071270fc8db97c7e5d89939a182e96e343dc 100644 (file)
  */
 package org.argeo.security.ui.admin.editors;
 
+import java.util.ArrayList;
 import java.util.Arrays;
-
-import javax.jcr.RepositoryException;
+import java.util.List;
 
 import org.argeo.ArgeoException;
+import org.argeo.eclipse.ui.EclipseUiUtils;
 import org.argeo.jcr.ArgeoNames;
+import org.argeo.security.ui.admin.internal.ColumnDefinition;
+import org.argeo.security.ui.admin.internal.CommonNameLP;
+import org.argeo.security.ui.admin.internal.RoleIconLP;
 import org.argeo.security.ui.admin.internal.UserAdminConstants;
+import org.argeo.security.ui.admin.internal.UserNameLP;
+import org.argeo.security.ui.admin.internal.UserTableDefaultDClickListener;
+import org.argeo.security.ui.admin.internal.UserTableViewer;
+import org.eclipse.jface.viewers.TableViewer;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.ModifyEvent;
 import org.eclipse.swt.events.ModifyListener;
@@ -38,6 +46,8 @@ import org.eclipse.ui.forms.editor.FormPage;
 import org.eclipse.ui.forms.widgets.FormToolkit;
 import org.eclipse.ui.forms.widgets.ScrolledForm;
 import org.eclipse.ui.forms.widgets.Section;
+import org.osgi.service.useradmin.User;
+import org.osgi.service.useradmin.UserAdmin;
 
 /** Display/edit the properties common to all users */
 public class UserMainPage extends FormPage implements ArgeoNames {
@@ -46,148 +56,222 @@ public class UserMainPage extends FormPage implements ArgeoNames {
        // private final static Log log = LogFactory.getLog(UserMainPage.class);
 
        private final UserEditor editor;
+       private UserAdmin userAdmin;
+
        private char[] newPassword;
 
-       public UserMainPage(FormEditor editor) {
+       // Local configuration
+       private final int PRE_TITLE_INDENT = 10;
+
+       public UserMainPage(FormEditor editor, UserAdmin userAdmin) {
                super(editor, ID, "Main");
                this.editor = (UserEditor) editor;
+               this.userAdmin = userAdmin;
+       }
+
+       public String getNewPassword() {
+               if (newPassword != null)
+                       return new String(newPassword);
+               else
+                       return null;
+       }
+
+       public void resetNewPassword() {
+               if (newPassword != null)
+                       Arrays.fill(newPassword, 'x');
+               newPassword = null;
        }
 
        protected void createFormContent(final IManagedForm mf) {
-               try {
-                       ScrolledForm form = mf.getForm();
-                       refreshFormTitle(form);
-                       GridLayout mainLayout = new GridLayout(1, true);
-                       form.getBody().setLayout(mainLayout);
-
-                       createGeneralPart(form.getBody());
-                       // createPassworPart(form.getBody());
-               } catch (RepositoryException e) {
-                       throw new ArgeoException("Cannot create form content", e);
-               }
+               ScrolledForm form = mf.getForm();
+               // Form page main title
+               form.setText(editor.getProperty(UserAdminConstants.KEY_CN));
+
+               // Body
+               Composite body = form.getBody();
+               GridLayout mainLayout = new GridLayout(1, true);
+               body.setLayout(mainLayout);
+               appendOverviewPart(body);
+               appendPasswordPart(body);
+               appendMemberOfPart(body);
        }
 
        /** Creates the general section */
-       protected void createGeneralPart(Composite parent)
-                       throws RepositoryException {
+       protected void appendOverviewPart(Composite parent) {
                FormToolkit tk = getManagedForm().getToolkit();
-               Section section = tk.createSection(parent, Section.TITLE_BAR);
-               section.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
-               section.setText("General");
-               Composite body = tk.createComposite(section, SWT.WRAP);
-               section.setClient(body);
-               GridLayout layout = new GridLayout(2, false);
-               body.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
-               body.setLayout(layout);
+               Composite body = addSection(tk, parent, "Main information");
+               body.setLayout(new GridLayout(2, false));
+
+               Text distinguishedName = createLT(body, "User Name",
+                               editor.getProperty(UserAdminConstants.KEY_UID));
+               distinguishedName.setEnabled(false);
 
                final Text commonName = createLT(body, "Common Name",
                                editor.getProperty(UserAdminConstants.KEY_CN));
                commonName.setEnabled(false);
 
-               // final Text firstName = createLT(body, "First name",
-               // getProperty(ARGEO_FIRST_NAME));
-               // final Text lastName = createLT(body, "Last name",
-               // getProperty(ARGEO_LAST_NAME));
+               final Text firstName = createLT(body, "First name",
+                               editor.getProperty(UserAdminConstants.KEY_FIRSTNAME));
+
+               final Text lastName = createLT(body, "Last name",
+                               editor.getProperty(UserAdminConstants.KEY_LASTNAME));
+
                final Text email = createLT(body, "Email",
                                editor.getProperty(UserAdminConstants.KEY_MAIL));
-               // final Text description = createLMT(body, "Description",
-               // getProperty(Property.JCR_DESCRIPTION));
 
                // create form part (controller)
-               AbstractFormPart part = new SectionPart(section) {
+               AbstractFormPart part = new SectionPart((Section) body.getParent()) {
                        public void commit(boolean onSave) {
+                               // TODO check changed ?
+                               // TODO Sanity checks
+
+                               editor.setProperty(UserAdminConstants.KEY_FIRSTNAME,
+                                               firstName.getText());
+                               editor.setProperty(UserAdminConstants.KEY_LASTNAME,
+                                               lastName.getText());
+                               editor.setProperty(UserAdminConstants.KEY_CN,
+                                               commonName.getText());
                                // TODO check mail validity
                                editor.setProperty(UserAdminConstants.KEY_MAIL, email.getText());
 
-                               // userProfile.getSession().getWorkspace().getVersionManager()
-                               // .checkout(userProfile.getPath());
-                               // userProfile.setProperty(Property.JCR_TITLE,
-                               // commonName.getText());
-                               // userProfile.setProperty(ARGEO_FIRST_NAME,
-                               // firstName.getText());
-                               // userProfile
-                               // .setProperty(ARGEO_LAST_NAME, lastName.getText());
-                               // userProfile.setProperty(ARGEO_PRIMARY_EMAIL,
+                               // Enable common name ?
+                               // editor.setProperty(UserAdminConstants.KEY_CN,
                                // email.getText());
-                               // userProfile.setProperty(Property.JCR_DESCRIPTION,
-                               // description.getText());
-                               // userProfile.getSession().save();
-                               // userProfile.getSession().getWorkspace().getVersionManager()
-                               // .checkin(userProfile.getPath());
                                super.commit(onSave);
                        }
                };
-               // if (username != null)
-               // username.addModifyListener(new FormPartML(part));
-               // commonName.addModifyListener(new FormPartML(part));
-               // firstName.addModifyListener(new FormPartML(part));
-               // lastName.addModifyListener(new FormPartML(part));
 
+               ModifyListener cnML = new ModifyListener() {
+                       private static final long serialVersionUID = 4298649222869835486L;
+
+                       @Override
+                       public void modifyText(ModifyEvent event) {
+                               String first = firstName.getText();
+                               String last = lastName.getText();
+                               String cn = first.trim() + " " + last.trim() + " ";
+                               cn = cn.trim();
+                               commonName.setText(cn);
+                               getManagedForm().getForm().setText(cn);
+                               editor.updateEditorTitle(cn);
+                       }
+               };
+               firstName.addModifyListener(cnML);
+               lastName.addModifyListener(cnML);
+               firstName.addModifyListener(new FormPartML(part));
+               lastName.addModifyListener(new FormPartML(part));
                email.addModifyListener(new FormPartML(part));
                getManagedForm().addPart(part);
        }
 
-       private void refreshFormTitle(ScrolledForm form) throws RepositoryException {
-               // form.setText(getProperty(Property.JCR_TITLE)
-               // + (userProfile.getProperty(ARGEO_ENABLED).getBoolean() ? ""
-               // : " [DISABLED]"));
+       /** Creates the password section */
+       protected void appendPasswordPart(Composite parent) {
+               FormToolkit tk = getManagedForm().getToolkit();
+               Composite body = addSection(tk, parent, "Password");
+
+               // Section section = tk.createSection(parent, Section.TITLE_BAR);
+               // section.setLayoutData(EclipseUiUtils.fillWidth());
+               // section.setText("Password");
+               // Composite body = tk.createComposite(section, SWT.NO_FOCUS);
+               // section.setClient(body);
+               // body.setLayoutData(EclipseUiUtils.fillWidth());
+
+               body.setLayout(new GridLayout(2, false));
+               // add widgets (view)
+               final Text password1 = createLP(body, "New password", "");
+               final Text password2 = createLP(body, "Repeat password", "");
+               // create form part (controller)
+               AbstractFormPart part = new SectionPart((Section) body.getParent()) {
+
+                       public void commit(boolean onSave) {
+                               if (!password1.getText().equals("")
+                                               || !password2.getText().equals("")) {
+                                       if (password1.getText().equals(password2.getText())) {
+                                               newPassword = password1.getText().toCharArray();
+                                               // TODO real set password
+                                               password1.setText("");
+                                               password2.setText("");
+                                               super.commit(onSave);
+                                       } else {
+                                               password1.setText("");
+                                               password2.setText("");
+                                               throw new ArgeoException("Passwords are not equals");
+                                       }
+                               }
+                       }
+
+               };
+               password1.addModifyListener(new FormPartML(part));
+               password2.addModifyListener(new FormPartML(part));
+               getManagedForm().addPart(part);
        }
 
-       // /** @return the property, or the empty string if not set */
-       // protected String getProperty(String name) throws RepositoryException {
-       // return userProfile.hasProperty(name) ? userProfile.getProperty(name)
-       // .getString() : "";
-       // }
+       private UserTableViewer userTableViewerCmp;
+       private TableViewer userViewer;
 
-       /** Creates the password section */
-       // protected void createPassworPart(Composite parent) {
-       // FormToolkit tk = getManagedForm().getToolkit();
-       // Section section = tk.createSection(parent, Section.TITLE_BAR);
-       // section.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
-       // section.setText("Password");
-       //
-       // Composite body = tk.createComposite(section, SWT.WRAP);
-       // section.setClient(body);
-       // GridLayout layout = new GridLayout(2, false);
-       // body.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
-       // body.setLayout(layout);
-       //
-       // // add widgets (view)
-       // final Text password1 = createLP(body, "New password", "");
-       // final Text password2 = createLP(body, "Repeat password", "");
-       // // create form part (controller)
-       // AbstractFormPart part = new SectionPart(section) {
-       //
-       // public void commit(boolean onSave) {
-       // if (!password1.getText().equals("")
-       // || !password2.getText().equals("")) {
-       // if (password1.getText().equals(password2.getText())) {
-       // newPassword = password1.getText().toCharArray();
-       // password1.setText("");
-       // password2.setText("");
-       // super.commit(onSave);
-       // } else {
-       // password1.setText("");
-       // password2.setText("");
-       // throw new ArgeoException("Passwords are not equals");
-       // }
-       // }
-       // }
-       //
-       // };
-       // password1.addModifyListener(new FormPartML(part));
-       // password2.addModifyListener(new FormPartML(part));
-       // getManagedForm().addPart(part);
-       // }
+       public void appendMemberOfPart(Composite parent) {
+               FormToolkit tk = getManagedForm().getToolkit();
+               Composite body = addSection(tk, parent, "Groups");
+               body.setLayout(EclipseUiUtils.noSpaceGridLayout());
 
-       /** Creates label and text. */
-       protected Text createLT(Composite body, String label, String value) {
-               FormToolkit toolkit = getManagedForm().getToolkit();
-               Label lbl = toolkit.createLabel(body, label);
-               lbl.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false));
-               Text text = toolkit.createText(body, value, SWT.BORDER);
-               text.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
-               return text;
+               // Define the displayed columns
+               List<ColumnDefinition> columnDefs = new ArrayList<ColumnDefinition>();
+               columnDefs.add(new ColumnDefinition(new RoleIconLP(), "", 0, 24));
+               columnDefs.add(new ColumnDefinition(new UserNameLP(),
+                               "Distinguished Name", 240));
+               columnDefs.add(new ColumnDefinition(new CommonNameLP(), "Common Name",
+                               150));
+
+               // Create and configure the table
+               userTableViewerCmp = new MyUserTableViewer(body, SWT.MULTI
+                               | SWT.H_SCROLL | SWT.V_SCROLL, userAdmin);
+
+               userTableViewerCmp.setColumnDefinitions(columnDefs);
+               userTableViewerCmp.populate(true, false);
+               GridData gd = EclipseUiUtils.fillAll();
+               gd.heightHint = 300;
+               userTableViewerCmp.setLayoutData(gd);
+
+               // Links
+               userViewer = userTableViewerCmp.getTableViewer();
+               userViewer.addDoubleClickListener(new UserTableDefaultDClickListener());
+               // Really?
+               userTableViewerCmp.refresh();
+       }
+
+       private class MyUserTableViewer extends UserTableViewer {
+               private static final long serialVersionUID = 8467999509931900367L;
+
+               public MyUserTableViewer(Composite parent, int style,
+                               UserAdmin userAdmin) {
+                       super(parent, style, userAdmin, true);
+               }
+
+               @Override
+               protected List<User> listFilteredElements(String filter) {
+                       List<User> users = new ArrayList<User>();
+
+                       // "member of" method?
+                       // Group group = (Group) editor.getDisplayedUser();
+                       // Role[] roles = group.getMembers();
+                       // List<User> users = new ArrayList<User>();
+                       // for (Role role : roles)
+                       // // if (role.getType() == Role.GROUP)
+                       // users.add((User) role);
+                       // return users;
+                       return users;
+               }
+       }
+
+       private Composite addSection(FormToolkit tk, Composite parent, String title) {
+               Section section = tk.createSection(parent, Section.TITLE_BAR);
+               GridData gd = EclipseUiUtils.fillWidth();
+               gd.verticalAlignment = PRE_TITLE_INDENT;
+               section.setLayoutData(gd);
+               section.setText(title);
+               Composite body = tk.createComposite(section, SWT.WRAP);
+               body.setLayoutData(EclipseUiUtils.fillAll());
+               section.setClient(body);
+               return body;
        }
 
        /** Creates label and multiline text. */
@@ -210,6 +294,16 @@ public class UserMainPage extends FormPage implements ArgeoNames {
                return text;
        }
 
+       /** Creates label and text. */
+       protected Text createLT(Composite body, String label, String value) {
+               FormToolkit toolkit = getManagedForm().getToolkit();
+               Label lbl = toolkit.createLabel(body, label);
+               lbl.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false));
+               Text text = toolkit.createText(body, value, SWT.BORDER);
+               text.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
+               return text;
+       }
+       
        private class FormPartML implements ModifyListener {
                private static final long serialVersionUID = 6299808129505381333L;
                private AbstractFormPart formPart;
@@ -221,19 +315,5 @@ public class UserMainPage extends FormPage implements ArgeoNames {
                public void modifyText(ModifyEvent e) {
                        formPart.markDirty();
                }
-
-       }
-
-       public String getNewPassword() {
-               if (newPassword != null)
-                       return new String(newPassword);
-               else
-                       return null;
-       }
-
-       public void resetNewPassword() {
-               if (newPassword != null)
-                       Arrays.fill(newPassword, 'x');
-               newPassword = null;
        }
 }
\ No newline at end of file
index f5eae0f7ced32c52092a4d872e7c2484041d7cb8..7ec5984a9e1cc3629839026abbd08e00339de726 100644 (file)
@@ -5,6 +5,8 @@ public interface UserAdminConstants {
 
        public final static String KEY_UID = "uid";
        public final static String KEY_CN = "cn";
+       public final static String KEY_FIRSTNAME = "givenname";
+       public final static String KEY_LASTNAME = "sn";
        public final static String KEY_MAIL = "mail";
        
 }
index a8745435264f0e76617179c6fa75062eee856147..66f7a03358c9edb1400bc60cda311d078cf74680 100644 (file)
  */
 package org.argeo.security.ui.admin.views;
 
-import org.argeo.ArgeoException;
-import org.argeo.security.UserAdminService;
-import org.argeo.security.ui.admin.SecurityAdminPlugin;
-import org.argeo.security.ui.admin.commands.AddRole;
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.handlers.IHandlerService;
-import org.eclipse.ui.part.ViewPart;
-
-/** List all roles. */
-public class JcrRolesView extends ViewPart {
-       public final static String ID = SecurityAdminPlugin.PLUGIN_ID
-                       + ".jcrRolesView";
-
-       private Text newRole;
-
-       private TableViewer viewer;
-       private UserAdminService userAdminService;
-
-       private String addNewRoleText = "<add new role here>";
-
-       @Override
-       public void createPartControl(Composite parent) {
-               parent.setLayout(new GridLayout(1, false));
-
-               // new role text field
-               newRole = new Text(parent, SWT.BORDER);
-               newRole.setText(addNewRoleText);
-               newRole.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
-               // default action is add role
-               newRole.addListener(SWT.DefaultSelection, new Listener() {
-                       private static final long serialVersionUID = -2367261849260929505L;
-
-                       public void handleEvent(Event evt) {
-                               IWorkbench iw = SecurityAdminPlugin.getDefault().getWorkbench();
-                               IHandlerService handlerService = (IHandlerService) iw
-                                               .getService(IHandlerService.class);
-                               try {
-                                       handlerService.executeCommand(AddRole.COMMAND_ID, evt);
-                               } catch (Exception e) {
-                                       throw new ArgeoException("Cannot execute add role command",
-                                                       e);
-                               }
-                       }
-               });
-               // select all on focus
-               newRole.addListener(SWT.FocusIn, new Listener() {
-                       private static final long serialVersionUID = 2612811281477034356L;
-
-                       public void handleEvent(Event e) {
-                               newRole.selectAll();
-                       }
-               });
-
-               // roles table
-               Table table = new Table(parent, SWT.V_SCROLL | SWT.BORDER);
-               table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-               table.setLinesVisible(false);
-               table.setHeaderVisible(false);
-               viewer = new TableViewer(table);
-               viewer.setContentProvider(new RolesContentProvider());
-               viewer.setLabelProvider(new UsersLabelProvider());
-               getViewSite().setSelectionProvider(viewer);
-               viewer.setInput(getViewSite());
-       }
-
-       @Override
-       public void setFocus() {
-               viewer.getTable().setFocus();
-       }
-
-       public void setUserAdminService(UserAdminService userAdminService) {
-               this.userAdminService = userAdminService;
-       }
-
-       public String getAddNewRoleText() {
-               return addNewRoleText;
-       }
-
-       private class RolesContentProvider implements IStructuredContentProvider {
-               private static final long serialVersionUID = 7446442682717419289L;
-
-               public Object[] getElements(Object inputElement) {
-                       return userAdminService.listEditableRoles().toArray();
-               }
-
-               public void dispose() {
-               }
-
-               public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-               }
-
-       }
-
-       private class UsersLabelProvider extends LabelProvider implements
-                       ITableLabelProvider {
-               private static final long serialVersionUID = -1886204791002421430L;
-
-               public String getColumnText(Object element, int columnIndex) {
-                       return element.toString();
-               }
-
-               public Image getColumnImage(Object element, int columnIndex) {
-                       return null;
-               }
-
-       }
-
-       public String getNewRole() {
-               return newRole.getText();
-       }
-
-       public void refresh() {
-               viewer.refresh();
-               newRole.setText(addNewRoleText);
-       }
+public class JcrRolesView {
 }
+
+/** List all roles. Legacy. TODO Remove */
+// public class JcrRolesView extends ViewPart {
+// public final static String ID = SecurityAdminPlugin.PLUGIN_ID
+// + ".jcrRolesView";
+//
+// private Text newRole;
+//
+// private TableViewer viewer;
+// private UserAdminService userAdminService;
+//
+// private String addNewRoleText = "<add new role here>";
+//
+// @Override
+// public void createPartControl(Composite parent) {
+// parent.setLayout(new GridLayout(1, false));
+//
+// // new role text field
+// newRole = new Text(parent, SWT.BORDER);
+// newRole.setText(addNewRoleText);
+// newRole.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+// // default action is add role
+// newRole.addListener(SWT.DefaultSelection, new Listener() {
+// private static final long serialVersionUID = -2367261849260929505L;
+//
+// public void handleEvent(Event evt) {
+// IWorkbench iw = SecurityAdminPlugin.getDefault().getWorkbench();
+// IHandlerService handlerService = (IHandlerService) iw
+// .getService(IHandlerService.class);
+// try {
+// handlerService.executeCommand(AddRole.COMMAND_ID, evt);
+// } catch (Exception e) {
+// throw new ArgeoException("Cannot execute add role command",
+// e);
+// }
+// }
+// });
+// // select all on focus
+// newRole.addListener(SWT.FocusIn, new Listener() {
+// private static final long serialVersionUID = 2612811281477034356L;
+//
+// public void handleEvent(Event e) {
+// newRole.selectAll();
+// }
+// });
+//
+// // roles table
+// Table table = new Table(parent, SWT.V_SCROLL | SWT.BORDER);
+// table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+// table.setLinesVisible(false);
+// table.setHeaderVisible(false);
+// viewer = new TableViewer(table);
+// viewer.setContentProvider(new RolesContentProvider());
+// viewer.setLabelProvider(new UsersLabelProvider());
+// getViewSite().setSelectionProvider(viewer);
+// viewer.setInput(getViewSite());
+// }
+//
+// @Override
+// public void setFocus() {
+// viewer.getTable().setFocus();
+// }
+//
+// public void setUserAdminService(UserAdminService userAdminService) {
+// this.userAdminService = userAdminService;
+// }
+//
+// public String getAddNewRoleText() {
+// return addNewRoleText;
+// }
+//
+// private class RolesContentProvider implements IStructuredContentProvider {
+// private static final long serialVersionUID = 7446442682717419289L;
+//
+// public Object[] getElements(Object inputElement) {
+// return userAdminService.listEditableRoles().toArray();
+// }
+//
+// public void dispose() {
+// }
+//
+// public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+// }
+//
+// }
+//
+// private class UsersLabelProvider extends LabelProvider implements
+// ITableLabelProvider {
+// private static final long serialVersionUID = -1886204791002421430L;
+//
+// public String getColumnText(Object element, int columnIndex) {
+// return element.toString();
+// }
+//
+// public Image getColumnImage(Object element, int columnIndex) {
+// return null;
+// }
+//
+// }
+//
+// public String getNewRole() {
+// return newRole.getText();
+// }
+//
+// public void refresh() {
+// viewer.refresh();
+// newRole.setText(addNewRoleText);
+// }
+// }
index 1c4224d024780c1699260b9a07f35710c60e9bd9..dfdd737d2979fffaa9a8298390624d64bb808bb2 100644 (file)
  */
 package org.argeo.security.ui.admin.views;
 
-import javax.jcr.Node;
-import javax.jcr.Repository;
-import javax.jcr.RepositoryException;
-import javax.jcr.Session;
-import javax.jcr.observation.Event;
-import javax.jcr.observation.EventIterator;
-import javax.jcr.observation.EventListener;
-
-import org.argeo.ArgeoException;
-import org.argeo.eclipse.ui.parts.UsersTable;
-import org.argeo.eclipse.ui.workbench.CommandUtils;
-import org.argeo.jcr.ArgeoJcrConstants;
-import org.argeo.jcr.ArgeoNames;
-import org.argeo.jcr.ArgeoTypes;
-import org.argeo.jcr.JcrUtils;
-import org.argeo.security.ui.admin.SecurityAdminPlugin;
-import org.argeo.security.ui.admin.commands.OpenArgeoUserEditor;
-import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.IDoubleClickListener;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.FillLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.part.ViewPart;
-
-/** List all users with filter. */
-public class JcrUsersView extends ViewPart implements ArgeoNames {
-       public final static String ID = SecurityAdminPlugin.PLUGIN_ID
-                       + ".jcrUsersView";
-
-       /* DEPENDENCY INJECTION */
-       private Session session;
-
-       private UsersTable userTableCmp;
-       private JcrUserListener userStructureListener;
-       private JcrUserListener userPropertiesListener;
-
-       @Override
-       public void createPartControl(Composite parent) {
-               parent.setLayout(new FillLayout());
-
-               // Create the composite that displays the list and a filter
-               userTableCmp = new UsersTable(parent, SWT.NO_FOCUS, session);
-               userTableCmp.populate(true, false);
-
-               // Configure
-               userTableCmp.getTableViewer().addDoubleClickListener(
-                               new ViewDoubleClickListener());
-               getViewSite().setSelectionProvider(userTableCmp.getTableViewer());
-
-               // Add listener to refresh the list when something changes
-               userStructureListener = new JcrUserListener(getSite().getShell()
-                               .getDisplay());
-               JcrUtils.addListener(session, userStructureListener, Event.NODE_ADDED
-                               | Event.NODE_REMOVED, ArgeoJcrConstants.PEOPLE_BASE_PATH, null);
-               userPropertiesListener = new JcrUserListener(getSite().getShell()
-                               .getDisplay());
-               JcrUtils.addListener(session, userStructureListener,
-                               Event.PROPERTY_CHANGED | Event.PROPERTY_ADDED
-                                               | Event.PROPERTY_REMOVED,
-                               ArgeoJcrConstants.PEOPLE_BASE_PATH,
-                               ArgeoTypes.ARGEO_USER_PROFILE);
-       }
-
-       @Override
-       public void setFocus() {
-               userTableCmp.setFocus();
-       }
-
-       @Override
-       public void dispose() {
-               JcrUtils.removeListenerQuietly(session, userStructureListener);
-               JcrUtils.removeListenerQuietly(session, userPropertiesListener);
-               JcrUtils.logoutQuietly(session);
-               super.dispose();
-       }
-
-       // public void setSession(Session session) {
-       // this.session = session;
-       // }
-
-       public void refresh() {
-               this.getSite().getShell().getDisplay().asyncExec(new Runnable() {
-                       @Override
-                       public void run() {
-                               userTableCmp.refresh();
-                       }
-               });
-       }
-
-       private class JcrUserListener implements EventListener {
-               private final Display display;
-
-               public JcrUserListener(Display display) {
-                       super();
-                       this.display = display;
-               }
-
-               @Override
-               public void onEvent(EventIterator events) {
-                       display.asyncExec(new Runnable() {
-                               @Override
-                               public void run() {
-                                       userTableCmp.refresh();
-                               }
-                       });
-               }
-       }
-
-       class ViewDoubleClickListener implements IDoubleClickListener {
-               public void doubleClick(DoubleClickEvent evt) {
-                       if (evt.getSelection().isEmpty())
-                               return;
-
-                       Object obj = ((IStructuredSelection) evt.getSelection())
-                                       .getFirstElement();
-                       if (obj instanceof Node) {
-                               try {
-                                       String username = ((Node) obj).getProperty(ARGEO_USER_ID)
-                                                       .getString();
-                                       String commandId = OpenArgeoUserEditor.COMMAND_ID;
-                                       String paramName = OpenArgeoUserEditor.PARAM_USERNAME;
-                                       CommandUtils.callCommand(commandId, paramName, username);
-                               } catch (RepositoryException e) {
-                                       throw new ArgeoException("Cannot open user editor", e);
-                               }
-                       }
-               }
-       }
-
-       /* DEPENDENCY INJECTION */
-       public void setRepository(Repository repository) {
-               try {
-                       session = repository.login();
-               } catch (RepositoryException re) {
-                       throw new ArgeoException("Unable to initialise local session", re);
-               }
-       }
-}
\ No newline at end of file
+public class JcrUsersView {
+}
+/** List all users with filter. Legacy. TODO Remove */
+// public class JcrUsersView extends ViewPart implements ArgeoNames {
+// public final static String ID = SecurityAdminPlugin.PLUGIN_ID
+// + ".jcrUsersView";
+//
+// /* DEPENDENCY INJECTION */
+// private Session session;
+//
+// private UsersTable userTableCmp;
+// private JcrUserListener userStructureListener;
+// private JcrUserListener userPropertiesListener;
+//
+// @Override
+// public void createPartControl(Composite parent) {
+// parent.setLayout(new FillLayout());
+//
+// // Create the composite that displays the list and a filter
+// userTableCmp = new UsersTable(parent, SWT.NO_FOCUS, session);
+// userTableCmp.populate(true, false);
+//
+// // Configure
+// userTableCmp.getTableViewer().addDoubleClickListener(
+// new ViewDoubleClickListener());
+// getViewSite().setSelectionProvider(userTableCmp.getTableViewer());
+//
+// // Add listener to refresh the list when something changes
+// userStructureListener = new JcrUserListener(getSite().getShell()
+// .getDisplay());
+// JcrUtils.addListener(session, userStructureListener, Event.NODE_ADDED
+// | Event.NODE_REMOVED, ArgeoJcrConstants.PEOPLE_BASE_PATH, null);
+// userPropertiesListener = new JcrUserListener(getSite().getShell()
+// .getDisplay());
+// JcrUtils.addListener(session, userStructureListener,
+// Event.PROPERTY_CHANGED | Event.PROPERTY_ADDED
+// | Event.PROPERTY_REMOVED,
+// ArgeoJcrConstants.PEOPLE_BASE_PATH,
+// ArgeoTypes.ARGEO_USER_PROFILE);
+// }
+//
+// @Override
+// public void setFocus() {
+// userTableCmp.setFocus();
+// }
+//
+// @Override
+// public void dispose() {
+// JcrUtils.removeListenerQuietly(session, userStructureListener);
+// JcrUtils.removeListenerQuietly(session, userPropertiesListener);
+// JcrUtils.logoutQuietly(session);
+// super.dispose();
+// }
+//
+// // public void setSession(Session session) {
+// // this.session = session;
+// // }
+//
+// public void refresh() {
+// this.getSite().getShell().getDisplay().asyncExec(new Runnable() {
+// @Override
+// public void run() {
+// userTableCmp.refresh();
+// }
+// });
+// }
+//
+// private class JcrUserListener implements EventListener {
+// private final Display display;
+//
+// public JcrUserListener(Display display) {
+// super();
+// this.display = display;
+// }
+//
+// @Override
+// public void onEvent(EventIterator events) {
+// display.asyncExec(new Runnable() {
+// @Override
+// public void run() {
+// userTableCmp.refresh();
+// }
+// });
+// }
+// }
+//
+// class ViewDoubleClickListener implements IDoubleClickListener {
+// public void doubleClick(DoubleClickEvent evt) {
+// if (evt.getSelection().isEmpty())
+// return;
+//
+// Object obj = ((IStructuredSelection) evt.getSelection())
+// .getFirstElement();
+// if (obj instanceof Node) {
+// try {
+// String username = ((Node) obj).getProperty(ARGEO_USER_ID)
+// .getString();
+// String commandId = OpenArgeoUserEditor.COMMAND_ID;
+// String paramName = OpenArgeoUserEditor.PARAM_USERNAME;
+// CommandUtils.callCommand(commandId, paramName, username);
+// } catch (RepositoryException e) {
+// throw new ArgeoException("Cannot open user editor", e);
+// }
+// }
+// }
+// }
+//
+// /* DEPENDENCY INJECTION */
+// public void setRepository(Repository repository) {
+// try {
+// session = repository.login();
+// } catch (RepositoryException re) {
+// throw new ArgeoException("Unable to initialise local session", re);
+// }
+// }
+// }
\ No newline at end of file