X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;ds=sidebyside;f=org.argeo.security.ui.admin%2Fsrc%2Forg%2Fargeo%2Fsecurity%2Fui%2Fadmin%2Fviews%2FGroupsView.java;h=bb64a3d4b26518ef0dc9d9ca391fa589651ce19f;hb=94c54deff25c97eb8143594c15c2a3dea06c5811;hp=34bda0e6993d17fee97eae92dcf92865410ba90e;hpb=dd3d0d60b62c99810eca8619a376b66dbca5e44d;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/views/GroupsView.java b/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/views/GroupsView.java index 34bda0e69..bb64a3d4b 100644 --- a/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/views/GroupsView.java +++ b/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/views/GroupsView.java @@ -19,82 +19,99 @@ import java.util.ArrayList; import java.util.List; import org.argeo.ArgeoException; +import org.argeo.eclipse.ui.EclipseUiUtils; import org.argeo.jcr.ArgeoNames; import org.argeo.security.ui.admin.SecurityAdminPlugin; -import org.argeo.security.ui.admin.UserAdminConstants; -import org.eclipse.jface.viewers.ColumnLabelProvider; +import org.argeo.security.ui.admin.internal.ColumnDefinition; +import org.argeo.security.ui.admin.internal.CommonNameLP; +import org.argeo.security.ui.admin.internal.UserNameLP; +import org.argeo.security.ui.admin.internal.UserTableDefaultDClickListener; +import org.argeo.security.ui.admin.internal.UserTableViewer; +import org.eclipse.jface.viewers.TableViewer; +import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.Composite; import org.osgi.framework.InvalidSyntaxException; import org.osgi.service.useradmin.Role; import org.osgi.service.useradmin.User; +import org.osgi.service.useradmin.UserAdmin; /** List all groups with filter */ public class GroupsView extends UsersView implements ArgeoNames { public final static String ID = SecurityAdminPlugin.PLUGIN_ID + ".groupsView"; - // The displayed columns - /** Overwrite to display other columns */ - public List getColumnsDef() { - List columnDefs = new ArrayList(); - // Group ID + /* DEPENDENCY INJECTION */ + private UserAdmin userAdmin; + + // UI Objects + private UserTableViewer userTableViewerCmp; + private TableViewer userViewer; + private List columnDefs = new ArrayList(); + + @Override + public void createPartControl(Composite parent) { + parent.setLayout(EclipseUiUtils.noSpaceGridLayout()); + // Define the displayed columns columnDefs.add(new ColumnDefinition(new UserNameLP(), "Distinguished Name", 200)); - // Displayed name columnDefs.add(new ColumnDefinition(new CommonNameLP(), "Common Name", 150)); - return columnDefs; - } - /** - * Refresh the user list: caller might overwrite in order to display a - * subset of all users, typically to remove current user from the list - */ - protected void refreshFilteredList(String filter) { - try { - Role[] roles = userAdmin().getRoles(filter); - List users = new ArrayList(); - for (Role role : roles) - if (role.getType() == Role.GROUP) - users.add((User) role); - getViewer().setInput(users.toArray()); - } catch (InvalidSyntaxException e) { - throw new ArgeoException("Unable to get roles with filter: " - + filter, e); - } - } + // Create and configure the table + userTableViewerCmp = new MyUserTableViewer(parent, SWT.MULTI + | SWT.H_SCROLL | SWT.V_SCROLL, userAdmin); - private abstract class GroupAdminAbstractLP extends ColumnLabelProvider { - private static final long serialVersionUID = 137336765024922368L; + userTableViewerCmp.setColumnDefinitions(columnDefs); + userTableViewerCmp.populate(true, false); + userTableViewerCmp.setLayoutData(EclipseUiUtils.fillAll()); - @Override - public String getText(Object element) { - User user = (User) element; - return getText(user); - } + // Links + userViewer = userTableViewerCmp.getTableViewer(); + userViewer.addDoubleClickListener(new UserTableDefaultDClickListener()); + getViewSite().setSelectionProvider(userViewer); - public abstract String getText(User user); + // Really? + userTableViewerCmp.refresh(); } - private class UserNameLP extends GroupAdminAbstractLP { - private static final long serialVersionUID = 6550449442061090388L; + private class MyUserTableViewer extends UserTableViewer { + private static final long serialVersionUID = 8467999509931900367L; + + public MyUserTableViewer(Composite parent, int style, + UserAdmin userAdmin) { + super(parent, style, userAdmin); + } @Override - public String getText(User user) { - return user.getName(); + protected List listFilteredElements(String filter) { + Role[] roles; + try { + roles = userAdmin.getRoles(filter); + } catch (InvalidSyntaxException e) { + throw new ArgeoException("Unable to get roles with filter: " + + filter, e); + } + List users = new ArrayList(); + for (Role role : roles) + if (role.getType() == Role.GROUP) + users.add((User) role); + return users; } } - private class CommonNameLP extends GroupAdminAbstractLP { - private static final long serialVersionUID = 5256703081044911941L; + // Override generic view methods + @Override + public void dispose() { + super.dispose(); + } - @Override - public String getText(User user) { - Object obj = user.getProperties().get(UserAdminConstants.KEY_CN); - if (obj != null) - return (String) obj; - else - return ""; - } + @Override + public void setFocus() { + userTableViewerCmp.setFocus(); } + /* DEPENDENCY INJECTION */ + public void setUserAdmin(UserAdmin userAdmin) { + this.userAdmin = userAdmin; + } } \ No newline at end of file