--- /dev/null
+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;
+ }
+
+}