X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.security.ui.admin%2Fsrc%2Forg%2Fargeo%2Fsecurity%2Fui%2Fadmin%2Finternal%2Fparts%2FGroupMainPage.java;h=4a441a1a2d4a3c19651d7dfef7ba4e28528150bb;hb=89ad04528a66488eb3ad6f51c198d5df3c81b04c;hp=5270e1463ef2a30c5515fac03a22528aee84a4a8;hpb=8fea21d044841079b2f490c00da5d0902d50c3eb;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/parts/GroupMainPage.java b/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/parts/GroupMainPage.java index 5270e1463..4a441a1a2 100644 --- a/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/parts/GroupMainPage.java +++ b/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/parts/GroupMainPage.java @@ -19,19 +19,20 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import org.argeo.cms.util.useradmin.UserAdminUtils; +import org.argeo.eclipse.ui.ColumnDefinition; import org.argeo.eclipse.ui.EclipseUiUtils; +import org.argeo.eclipse.ui.parts.LdifUsersTable; import org.argeo.jcr.ArgeoNames; +import org.argeo.osgi.useradmin.LdifName; import org.argeo.security.ui.admin.SecurityAdminImages; -import org.argeo.security.ui.admin.internal.ColumnDefinition; -import org.argeo.security.ui.admin.internal.UiAdminUtils; -import org.argeo.security.ui.admin.internal.UserAdminConstants; import org.argeo.security.ui.admin.internal.UserAdminWrapper; -import org.argeo.security.ui.admin.internal.UserTableViewer; import org.argeo.security.ui.admin.internal.parts.UserEditor.GroupChangeListener; import org.argeo.security.ui.admin.internal.parts.UserEditor.MainInfoListener; import org.argeo.security.ui.admin.internal.providers.CommonNameLP; import org.argeo.security.ui.admin.internal.providers.MailLP; import org.argeo.security.ui.admin.internal.providers.RoleIconLP; +import org.argeo.security.ui.admin.internal.providers.UserFilter; import org.argeo.security.ui.admin.internal.providers.UserNameLP; import org.argeo.security.ui.admin.internal.providers.UserTableDefaultDClickListener; import org.eclipse.jface.action.Action; @@ -100,18 +101,17 @@ public class GroupMainPage extends FormPage implements ArgeoNames { } /** Creates the general section */ - protected void appendOverviewPart(Composite parent, final Group group) { + protected void appendOverviewPart(final Composite parent, final Group group) { FormToolkit tk = getManagedForm().getToolkit(); Composite body = addSection(tk, parent, "Main information"); GridLayout layout = new GridLayout(2, false); body.setLayout(layout); - final Text dnTxt = createLT(body, "DN", - UiAdminUtils.getProperty(group, UserAdminConstants.KEY_DN)); + final Text dnTxt = createLT(body, "DN", group.getName()); dnTxt.setEnabled(false); final Text cnTxt = createLT(body, "Common Name", - UiAdminUtils.getProperty(group, UserAdminConstants.KEY_CN)); + UserAdminUtils.getProperty(group, LdifName.cn.name())); cnTxt.setEnabled(false); Label descLbl = new Label(body, SWT.LEAD); @@ -131,7 +131,7 @@ public class GroupMainPage extends FormPage implements ArgeoNames { @Override public void initialize(IManagedForm form) { super.initialize(form); - listener = editor.new MainInfoListener(this); + listener = editor.new MainInfoListener(parent.getDisplay(), this); userAdminWrapper.addListener(listener); } @@ -143,7 +143,7 @@ public class GroupMainPage extends FormPage implements ArgeoNames { @SuppressWarnings("unchecked") public void commit(boolean onSave) { - group.getProperties().put(UserAdminConstants.KEY_DESC, + group.getProperties().put(LdifName.description.name(), descTxt.getText()); // Enable common name ? // editor.setProperty(UserAdminConstants.KEY_CN, @@ -155,11 +155,10 @@ public class GroupMainPage extends FormPage implements ArgeoNames { public void refresh() { refreshFormTitle(group); dnTxt.setText(group.getName()); - cnTxt.setText(UiAdminUtils.getProperty(group, - UserAdminConstants.KEY_CN)); - descTxt.setText(UiAdminUtils.getProperty(group, - UserAdminConstants.KEY_DESC)); - + cnTxt.setText(UserAdminUtils.getProperty(group, + LdifName.cn.name())); + descTxt.setText(UserAdminUtils.getProperty(group, + LdifName.description.name())); super.refresh(); } }; @@ -176,22 +175,21 @@ public class GroupMainPage extends FormPage implements ArgeoNames { Section section = tk.createSection(parent, Section.TITLE_BAR); section.setLayoutData(EclipseUiUtils.fillAll()); - // Composite body = tk.createComposite(section, SWT.NONE); Composite body = new Composite(section, SWT.NO_FOCUS); section.setClient(body); body.setLayoutData(EclipseUiUtils.fillAll()); - UserTableViewer userTableViewerCmp = createMemberPart(body, group); + LdifUsersTable userTableViewerCmp = createMemberPart(body, group); - // create form part (controller) SectionPart part = new GroupMembersPart(section, userTableViewerCmp, group); getManagedForm().addPart(part); addRemoveAbitily(part, userTableViewerCmp.getTableViewer(), group); } - public UserTableViewer createMemberPart(Composite parent, Group group) { + public LdifUsersTable createMemberPart(Composite parent, Group group) { parent.setLayout(EclipseUiUtils.noSpaceGridLayout()); + // Define the displayed columns List columnDefs = new ArrayList(); columnDefs.add(new ColumnDefinition(new RoleIconLP(), "", 0, 24)); @@ -202,7 +200,7 @@ public class GroupMainPage extends FormPage implements ArgeoNames { "Distinguished Name", 240)); // Create and configure the table - UserTableViewer userViewerCmp = new MyUserTableViewer(parent, SWT.MULTI + LdifUsersTable userViewerCmp = new MyUserTableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL, userAdminWrapper.getUserAdmin()); userViewerCmp.setColumnDefinitions(columnDefs); @@ -222,13 +220,16 @@ public class GroupMainPage extends FormPage implements ArgeoNames { } // Local viewers - - private class MyUserTableViewer extends UserTableViewer { + private class MyUserTableViewer extends LdifUsersTable { private static final long serialVersionUID = 8467999509931900367L; + private final UserFilter userFilter; + public MyUserTableViewer(Composite parent, int style, UserAdmin userAdmin) { - super(parent, style, userAdmin, true); + super(parent, style, true); + userFilter = new UserFilter(); + } @Override @@ -236,9 +237,11 @@ public class GroupMainPage extends FormPage implements ArgeoNames { Group group = (Group) editor.getDisplayedUser(); Role[] roles = group.getMembers(); List users = new ArrayList(); + userFilter.setSearchText(filter); for (Role role : roles) // if (role.getType() == Role.GROUP) - users.add((User) role); + if (userFilter.select(null, null, role)) + users.add((User) role); return users; } } @@ -294,7 +297,7 @@ public class GroupMainPage extends FormPage implements ArgeoNames { // StringBuilder builder = new StringBuilder(); while (it.hasNext()) { User currUser = it.next(); - // String groupName = UiAdminUtils.getUsername(currGroup); + // String groupName = UserAdminUtils.getUsername(currGroup); // builder.append(groupName).append("; "); users.add(currUser); } @@ -310,12 +313,12 @@ public class GroupMainPage extends FormPage implements ArgeoNames { // LOCAL CONTROLLERS private class GroupMembersPart extends SectionPart { - private final UserTableViewer userViewer; + private final LdifUsersTable userViewer; private final Group group; private GroupChangeListener listener; - public GroupMembersPart(Section section, UserTableViewer userViewer, + public GroupMembersPart(Section section, LdifUsersTable userViewer, Group group) { super(section); this.userViewer = userViewer; @@ -325,7 +328,7 @@ public class GroupMainPage extends FormPage implements ArgeoNames { @Override public void initialize(IManagedForm form) { super.initialize(form); - listener = editor.new GroupChangeListener(GroupMembersPart.this); + listener = editor.new GroupChangeListener(userViewer.getDisplay(), GroupMembersPart.this); userAdminWrapper.addListener(listener); } @@ -340,8 +343,8 @@ public class GroupMainPage extends FormPage implements ArgeoNames { refreshFormTitle(group); getSection().setText( "Members of group " - + UiAdminUtils.getProperty(group, - UserAdminConstants.KEY_CN)); + + UserAdminUtils.getProperty(group, + LdifName.cn.name())); userViewer.refresh(); super.refresh(); } @@ -355,11 +358,11 @@ public class GroupMainPage extends FormPage implements ArgeoNames { private static final long serialVersionUID = 2893468717831451621L; private final UserAdminWrapper userAdminWrapper; - // private final UserTableViewer myUserViewerCmp; + // private final LdifUsersTable myUserViewerCmp; private final Group myGroup; public GroupDropListener(UserAdminWrapper userAdminWrapper, - UserTableViewer userTableViewerCmp, Group group) { + LdifUsersTable userTableViewerCmp, Group group) { super(userTableViewerCmp.getTableViewer()); this.userAdminWrapper = userAdminWrapper; this.myGroup = group; @@ -377,21 +380,13 @@ public class GroupMainPage extends FormPage implements ArgeoNames { @Override public void drop(DropTargetEvent event) { - // TODO Is there an opportunity to perform ceck before? + // TODO Is there an opportunity to perform the check before? String newUserName = (String) event.data; UserAdmin myUserAdmin = userAdminWrapper.getUserAdmin(); Role role = myUserAdmin.getRole(newUserName); - if (role.getType() == Role.USER) { - // TODO check if the group is already member of this group - userAdminWrapper.beginTransactionIfNeeded(); - User user = (User) role; - myGroup.addMember(user); - userAdminWrapper.notifyListeners(new UserAdminEvent(null, - UserAdminEvent.ROLE_CHANGED, myGroup)); - } else if (role.getType() == Role.GROUP) { + if (role.getType() == Role.GROUP) { Group newGroup = (Group) role; - Shell shell = getViewer().getControl().getShell(); // Sanity checks if (myGroup == newGroup) { // Equality @@ -418,12 +413,18 @@ public class GroupMainPage extends FormPage implements ArgeoNames { + ", this membership already exists"); return; } - userAdminWrapper.beginTransactionIfNeeded(); // TODO implement the dirty state myGroup.addMember(newGroup); userAdminWrapper.notifyListeners(new UserAdminEvent(null, UserAdminEvent.ROLE_CHANGED, myGroup)); + } else if (role.getType() == Role.USER) { + // TODO check if the group is already member of this group + userAdminWrapper.beginTransactionIfNeeded(); + User user = (User) role; + myGroup.addMember(user); + userAdminWrapper.notifyListeners(new UserAdminEvent(null, + UserAdminEvent.ROLE_CHANGED, myGroup)); } super.drop(event); } @@ -438,7 +439,7 @@ public class GroupMainPage extends FormPage implements ArgeoNames { // LOCAL HELPERS private void refreshFormTitle(Group group) { getManagedForm().getForm().setText( - UiAdminUtils.getProperty(group, UserAdminConstants.KEY_CN)); + UserAdminUtils.getProperty(group, LdifName.cn.name())); } private Composite addSection(FormToolkit tk, Composite parent, String title) {