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=d830155207f1db851dbb51297a5ebb2076e23d89;hb=dc6f911c680574a9b57c34dcf515ac8f9aa808da;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..d83015520 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,21 @@ 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.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,6 +25,10 @@ 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; public class UsersView extends ViewPart { @@ -29,6 +44,7 @@ public class UsersView extends ViewPart { viewer.setContentProvider(new UsersContentProvider()); viewer.setLabelProvider(new UsersLabelProvider()); viewer.setInput(getViewSite()); + viewer.addDoubleClickListener(new ViewDoubleClickListener()); // viewer.setInput(SecurityContextHolder.getContext()); } @@ -66,6 +82,10 @@ public class UsersView extends ViewPart { viewer.getTable().setFocus(); } + public void setSecurityService(ArgeoSecurityService securityService) { + this.securityService = securityService; + } + private class UsersContentProvider implements IStructuredContentProvider { public Object[] getElements(Object inputElement) { @@ -73,12 +93,12 @@ public class UsersView extends ViewPart { } public Object[] getChildren(Object parentElement) { -// try { -// Thread.sleep(3000); -// } catch (InterruptedException e) { -// // TODO Auto-generated catch block -// e.printStackTrace(); -// } + // try { + // Thread.sleep(3000); + // } catch (InterruptedException e) { + // // TODO Auto-generated catch block + // e.printStackTrace(); + // } return securityService.getSecurityDao().listUsers().toArray(); } @@ -122,8 +142,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); + } + + } + } } }