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=b6b7d6ecd5640c5bb532b802d723a0f89b4e15d0;hb=98f57ce4987d7a7bfcea4806b20520f1a01830fa;hp=f3fdabfb19ccf16650e664280ef4963686aca5b7;hpb=2aa71ada5453ae3573593b67d953e57ee37c6020;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 f3fdabfb1..b6b7d6ecd 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.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; @@ -50,6 +51,7 @@ import org.eclipse.swt.dnd.Transfer; import org.eclipse.swt.dnd.TransferData; import org.eclipse.swt.events.DisposeEvent; import org.eclipse.swt.events.DisposeListener; +import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.graphics.Cursor; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; @@ -105,13 +107,22 @@ public class GroupMainPage extends FormPage implements ArgeoNames { GridLayout layout = new GridLayout(2, false); body.setLayout(layout); - final Text distinguishedName = createLT(body, "Group Name", - UiAdminUtils.getProperty(group, UserAdminConstants.KEY_UID)); - distinguishedName.setEnabled(false); + final Text dnTxt = createLT(body, "DN", + UiAdminUtils.getProperty(group, LdifName.dn.name())); + dnTxt.setEnabled(false); - final Text commonName = createLT(body, "Common Name", - UiAdminUtils.getProperty(group, UserAdminConstants.KEY_CN)); - commonName.setEnabled(false); + final Text cnTxt = createLT(body, "Common Name", + UiAdminUtils.getProperty(group, LdifName.cn.name())); + cnTxt.setEnabled(false); + + Label descLbl = new Label(body, SWT.LEAD); + descLbl.setText("Description"); + descLbl.setLayoutData(new GridData(SWT.RIGHT, SWT.TOP, false, false)); + final Text descTxt = new Text(body, SWT.LEAD | SWT.MULTI | SWT.WRAP + | SWT.BORDER); + GridData gd = EclipseUiUtils.fillAll(); + gd.heightHint = 100; + descTxt.setLayoutData(gd); // create form part (controller) AbstractFormPart part = new SectionPart((Section) body.getParent()) { @@ -131,16 +142,30 @@ public class GroupMainPage extends FormPage implements ArgeoNames { super.dispose(); } + @SuppressWarnings("unchecked") + public void commit(boolean onSave) { + group.getProperties().put(LdifName.description.name(), + descTxt.getText()); + // Enable common name ? + // editor.setProperty(UserAdminConstants.KEY_CN, + // email.getText()); + super.commit(onSave); + } + @Override public void refresh() { refreshFormTitle(group); - distinguishedName.setText(UiAdminUtils.getProperty(group, - UserAdminConstants.KEY_UID)); - commonName.setText(UiAdminUtils.getProperty(group, - UserAdminConstants.KEY_CN)); + dnTxt.setText(group.getName()); + cnTxt.setText(UiAdminUtils.getProperty(group, + LdifName.cn.name())); + descTxt.setText(UiAdminUtils.getProperty(group, + LdifName.description.name())); super.refresh(); } }; + + ModifyListener defaultListener = editor.new FormPartML(part); + descTxt.addModifyListener(defaultListener); getManagedForm().addPart(part); } @@ -156,7 +181,7 @@ public class GroupMainPage extends FormPage implements ArgeoNames { 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, @@ -165,7 +190,7 @@ public class GroupMainPage extends FormPage implements ArgeoNames { 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(); @@ -177,7 +202,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); @@ -198,12 +223,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 @@ -211,9 +240,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; } } @@ -285,12 +316,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; @@ -316,7 +347,7 @@ public class GroupMainPage extends FormPage implements ArgeoNames { getSection().setText( "Members of group " + UiAdminUtils.getProperty(group, - UserAdminConstants.KEY_CN)); + LdifName.cn.name())); userViewer.refresh(); super.refresh(); } @@ -330,11 +361,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; @@ -357,16 +388,8 @@ public class GroupMainPage extends FormPage implements ArgeoNames { 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 @@ -393,12 +416,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); } @@ -413,7 +442,7 @@ public class GroupMainPage extends FormPage implements ArgeoNames { // LOCAL HELPERS private void refreshFormTitle(Group group) { getManagedForm().getForm().setText( - UiAdminUtils.getProperty(group, UserAdminConstants.KEY_CN)); + UiAdminUtils.getProperty(group, LdifName.cn.name())); } private Composite addSection(FormToolkit tk, Composite parent, String title) {