X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=security%2Feclipse%2Fplugins%2Forg.argeo.security.ui%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fsecurity%2Fui%2Fviews%2FUsersView.java;h=d77ad0e07f154471f1f9fc71976cc4ef4d09a3b8;hb=136dab5338b5f731b285d17c804861bd5e5a9b5c;hp=d54c1a6e7b56bb60f82706e745aeacf750aecd62;hpb=83dc7b38160651626d00f6048f20183e01ad323a;p=lgpl%2Fargeo-commons.git 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 index d54c1a6e7..d77ad0e07 100644 --- 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 @@ -1,10 +1,22 @@ package org.argeo.security.ui.views; +import java.util.ArrayList; + 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; +import org.eclipse.core.commands.IParameter; +import org.eclipse.core.commands.Parameterization; +import org.eclipse.core.commands.ParameterizedCommand; +import org.eclipse.jface.viewers.DoubleClickEvent; +import org.eclipse.jface.viewers.IDoubleClickListener; import org.eclipse.jface.viewers.IStructuredContentProvider; +import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.ITableLabelProvider; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.viewers.TableViewer; @@ -14,50 +26,46 @@ 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.IWorkbench; +import org.eclipse.ui.IWorkbenchWindow; +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 { + public final static String ID = "org.argeo.security.ui.usersView"; + 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.addDoubleClickListener(new ViewDoubleClickListener()); 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 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; } @@ -66,31 +74,28 @@ public class UsersView extends ViewPart { viewer.getTable().setFocus(); } - private class UsersContentProvider implements IStructuredContentProvider { + public void setSecurityService(ArgeoSecurityService securityService) { + this.securityService = securityService; + } - public Object[] getElements(Object inputElement) { - return getChildren(inputElement); - } + public void setSimpleNatureType(String simpleNatureType) { + this.simpleNatureType = simpleNatureType; + } - public Object[] getChildren(Object parentElement) { -// try { -// Thread.sleep(3000); -// } catch (InterruptedException e) { -// // TODO Auto-generated catch block -// e.printStackTrace(); -// } + public void refresh() { + viewer.refresh(); + } - return securityService.getSecurityDao().listUsers().toArray(); + private class UsersContentProvider implements IStructuredContentProvider { + + public Object[] getElements(Object inputElement) { + return securityService.listUsers().toArray(); } public void dispose() { - // TODO Auto-generated method stub - } public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { - // TODO Auto-generated method stub - } } @@ -99,17 +104,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 = SimpleUserNature + .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); } @@ -122,8 +131,44 @@ public class UsersView extends ViewPart { } - public void setSecurityService(ArgeoSecurityService securityService) { - this.securityService = securityService; + class ViewDoubleClickListener implements IDoubleClickListener { + public void doubleClick(DoubleClickEvent evt) { + Object obj = ((IStructuredSelection) evt.getSelection()) + .getFirstElement(); + + if (obj instanceof ArgeoUser) { + ArgeoUser argeoUser = (ArgeoUser) obj; + + IWorkbench iw = SecurityUiPlugin.getDefault().getWorkbench(); + IHandlerService handlerService = (IHandlerService) iw + .getService(IHandlerService.class); + try { + String commandId = OpenArgeoUserEditor.COMMAND_ID; + String paramName = OpenArgeoUserEditor.PARAM_USERNAME; + + // TODO: factorize this + // execute related command + IWorkbenchWindow window = iw.getActiveWorkbenchWindow(); + ICommandService cmdService = (ICommandService) window + .getService(ICommandService.class); + Command cmd = cmdService.getCommand(commandId); + ArrayList parameters = new ArrayList(); + IParameter iparam = cmd.getParameter(paramName); + Parameterization param = new Parameterization(iparam, + argeoUser.getUsername()); + parameters.add(param); + ParameterizedCommand pc = new ParameterizedCommand(cmd, + parameters.toArray(new Parameterization[parameters + .size()])); + handlerService = (IHandlerService) window + .getService(IHandlerService.class); + handlerService.executeCommand(pc, null); + } catch (Exception e) { + throw new ArgeoException("Cannot open editor", e); + } + + } + } } }