]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - security/eclipse/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/views/UsersView.java
Adapt Security to RCP
[lgpl/argeo-commons.git] / security / eclipse / plugins / org.argeo.security.ui / src / main / java / org / argeo / security / ui / views / UsersView.java
diff --git a/security/eclipse/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/views/UsersView.java b/security/eclipse/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/views/UsersView.java
new file mode 100644 (file)
index 0000000..d54c1a6
--- /dev/null
@@ -0,0 +1,129 @@
+package org.argeo.security.ui.views;
+
+import org.argeo.ArgeoException;
+import org.argeo.security.ArgeoSecurityService;
+import org.argeo.security.ArgeoUser;
+import org.argeo.security.equinox.CurrentUser;
+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.widgets.Composite;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.ui.part.ViewPart;
+
+public class UsersView extends ViewPart {
+       private TableViewer viewer;
+       private ArgeoSecurityService securityService;
+
+       @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.setInput(SecurityContextHolder.getContext());
+       }
+
+       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.setLinesVisible(true);
+               table.setHeaderVisible(true);
+
+               TableColumn column = new TableColumn(table, SWT.LEFT, 0);
+               column.setText("ID");
+               column.setWidth(100);
+
+               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);
+
+               return table;
+       }
+
+       @Override
+       public void setFocus() {
+               viewer.getTable().setFocus();
+       }
+
+       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
+
+               }
+
+       }
+
+       private class UsersLabelProvider extends LabelProvider implements
+                       ITableLabelProvider {
+               public String getColumnText(Object element, int columnIndex) {
+                       String currentUsername = CurrentUser.getUsername();
+                       ArgeoUser argeoUser = (ArgeoUser) element;
+                       switch (columnIndex) {
+                       case 0:
+                               String userName = argeoUser.getUsername();
+                               if (userName.equals(currentUsername))
+                                       userName = userName + "*";
+                               return userName;
+                       case 1:
+                               return argeoUser.getPassword();
+                       case 2:
+                               return argeoUser.getRoles().toString();
+                       default:
+                               throw new ArgeoException("Unmanaged column " + columnIndex);
+                       }
+               }
+
+               public Image getColumnImage(Object element, int columnIndex) {
+                       // TODO Auto-generated method stub
+                       return null;
+               }
+
+       }
+
+       public void setSecurityService(ArgeoSecurityService securityService) {
+               this.securityService = securityService;
+       }
+
+}