Improve security UI
[lgpl/argeo-commons.git] / security / eclipse / plugins / org.argeo.security.ui / src / main / java / org / argeo / security / ui / views / UsersView.java
index d830155207f1db851dbb51297a5ebb2076e23d89..34feebbe8f722fe8e72bbf7b1875453e768beaf4 100644 (file)
@@ -6,6 +6,7 @@ import org.argeo.ArgeoException;
 import org.argeo.security.ArgeoSecurityService;
 import org.argeo.security.ArgeoUser;
 import org.argeo.security.equinox.CurrentUser;
+import org.argeo.security.nature.SimpleUserNature;
 import org.argeo.security.ui.SecurityUiPlugin;
 import org.argeo.security.ui.commands.OpenArgeoUserEditor;
 import org.eclipse.core.commands.Command;
@@ -31,49 +32,38 @@ import org.eclipse.ui.commands.ICommandService;
 import org.eclipse.ui.handlers.IHandlerService;
 import org.eclipse.ui.part.ViewPart;
 
+/** List all users. */
 public class UsersView extends ViewPart {
        private TableViewer viewer;
        private ArgeoSecurityService securityService;
 
+       private String simpleNatureType = null;
+
        @Override
        public void createPartControl(Composite parent) {
-
-               // viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL
-               // | SWT.V_SCROLL);
                viewer = new TableViewer(createTable(parent));
                viewer.setContentProvider(new UsersContentProvider());
                viewer.setLabelProvider(new UsersLabelProvider());
-               viewer.setInput(getViewSite());
                viewer.addDoubleClickListener(new ViewDoubleClickListener());
-               // viewer.setInput(SecurityContextHolder.getContext());
+               viewer.setInput(getViewSite());
        }
 
        protected Table createTable(Composite parent) {
-               int style = SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL;
-
-               Table table = new Table(parent, style);
-
-               // GridData gridData = new GridData(GridData.FILL_BOTH);
-               // gridData.grabExcessVerticalSpace = true;
-               // gridData.grabExcessHorizontalSpace = true;
-               // gridData.horizontalSpan = 3;
-               // table.setLayoutData(gridData);
-
+               Table table = new Table(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
                table.setLinesVisible(true);
                table.setHeaderVisible(true);
-
                TableColumn column = new TableColumn(table, SWT.LEFT, 0);
-               column.setText("ID");
-               column.setWidth(100);
-
+               column.setText("User");
+               column.setWidth(50);
                column = new TableColumn(table, SWT.LEFT, 1);
-               column.setText("Password");
-               column.setWidth(200);
-
-               // column = new TableColumn(table, SWT.LEFT, 2);
-               // column.setText("Roles");
-               // column.setWidth(300);
-
+               column.setText("First Name");
+               column.setWidth(100);
+               column = new TableColumn(table, SWT.LEFT, 2);
+               column.setText("Last Name");
+               column.setWidth(100);
+               column = new TableColumn(table, SWT.LEFT, 3);
+               column.setText("E-mail");
+               column.setWidth(100);
                return table;
        }
 
@@ -86,31 +76,20 @@ public class UsersView extends ViewPart {
                this.securityService = securityService;
        }
 
+       public void setSimpleNatureType(String simpleNatureType) {
+               this.simpleNatureType = simpleNatureType;
+       }
+
        private class UsersContentProvider implements IStructuredContentProvider {
 
                public Object[] getElements(Object inputElement) {
-                       return getChildren(inputElement);
-               }
-
-               public Object[] getChildren(Object parentElement) {
-                       // try {
-                       // Thread.sleep(3000);
-                       // } catch (InterruptedException e) {
-                       // // TODO Auto-generated catch block
-                       // e.printStackTrace();
-                       // }
-
                        return securityService.getSecurityDao().listUsers().toArray();
                }
 
                public void dispose() {
-                       // TODO Auto-generated method stub
-
                }
 
                public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-                       // TODO Auto-generated method stub
-
                }
 
        }
@@ -119,17 +98,21 @@ public class UsersView extends ViewPart {
                        ITableLabelProvider {
                public String getColumnText(Object element, int columnIndex) {
                        String currentUsername = CurrentUser.getUsername();
-                       ArgeoUser argeoUser = (ArgeoUser) element;
+                       ArgeoUser user = (ArgeoUser) element;
+                       SimpleUserNature simpleNature = SecurityUiPlugin
+                                       .findSimpleUserNature(user, simpleNatureType);
                        switch (columnIndex) {
                        case 0:
-                               String userName = argeoUser.getUsername();
+                               String userName = user.getUsername();
                                if (userName.equals(currentUsername))
                                        userName = userName + "*";
                                return userName;
                        case 1:
-                               return argeoUser.getPassword();
+                               return simpleNature.getFirstName();
                        case 2:
-                               return argeoUser.getRoles().toString();
+                               return simpleNature.getLastName();
+                       case 3:
+                               return simpleNature.getEmail();
                        default:
                                throw new ArgeoException("Unmanaged column " + columnIndex);
                        }