+ private void addRemoveAbitily(SectionPart sectionPart,
+ TableViewer userViewer, Group group) {
+ Section section = sectionPart.getSection();
+ ToolBarManager toolBarManager = new ToolBarManager(SWT.FLAT);
+ ToolBar toolbar = toolBarManager.createControl(section);
+ final Cursor handCursor = new Cursor(section.getDisplay(),
+ SWT.CURSOR_HAND);
+ toolbar.setCursor(handCursor);
+ toolbar.addDisposeListener(new DisposeListener() {
+ private static final long serialVersionUID = 3882131405820522925L;
+
+ public void widgetDisposed(DisposeEvent e) {
+ if ((handCursor != null) && (handCursor.isDisposed() == false)) {
+ handCursor.dispose();
+ }
+ }
+ });
+
+ Action action = new RemoveMembershipAction(userViewer, group,
+ "Remove selected items from this group",
+ SecurityAdminImages.ICON_REMOVE_DESC);
+ toolBarManager.add(action);
+ toolBarManager.update(true);
+ section.setTextClient(toolbar);
+ }
+
+ private class RemoveMembershipAction extends Action {
+ private static final long serialVersionUID = -1337713097184522588L;
+
+ private final TableViewer userViewer;
+ private final Group group;
+
+ RemoveMembershipAction(TableViewer userViewer, Group group,
+ String name, ImageDescriptor img) {
+ super(name, img);
+ this.userViewer = userViewer;
+ this.group = group;
+ }
+
+ @Override
+ public void run() {
+ ISelection selection = userViewer.getSelection();
+ if (selection.isEmpty())
+ return;
+
+ @SuppressWarnings("unchecked")
+ Iterator<User> it = ((IStructuredSelection) selection).iterator();
+ List<User> users = new ArrayList<User>();
+ // StringBuilder builder = new StringBuilder();
+ while (it.hasNext()) {
+ User currUser = it.next();
+ // String groupName = UserAdminUtils.getUsername(currGroup);
+ // builder.append(groupName).append("; ");
+ users.add(currUser);
+ }
+
+ userAdminWrapper.beginTransactionIfNeeded();
+ for (User user : users) {
+ group.removeMember(user);
+ }
+ userAdminWrapper.notifyListeners(new UserAdminEvent(null,
+ UserAdminEvent.ROLE_CHANGED, group));
+ }
+ }
+
+ // LOCAL CONTROLLERS
+ private class GroupMembersPart extends SectionPart {
+ private final LdifUsersTable userViewer;
+ private final Group group;
+
+ private GroupChangeListener listener;
+
+ public GroupMembersPart(Section section, LdifUsersTable userViewer,
+ Group group) {
+ super(section);
+ this.userViewer = userViewer;
+ this.group = group;
+ }
+
+ @Override
+ public void initialize(IManagedForm form) {
+ super.initialize(form);
+ listener = editor.new GroupChangeListener(userViewer.getDisplay(), GroupMembersPart.this);
+ userAdminWrapper.addListener(listener);
+ }
+
+ @Override
+ public void dispose() {
+ userAdminWrapper.removeListener(listener);
+ super.dispose();
+ }
+
+ @Override
+ public void refresh() {
+ refreshFormTitle(group);
+ getSection().setText(
+ "Members of group "
+ + UserAdminUtils.getProperty(group,
+ LdifName.cn.name()));
+ userViewer.refresh();
+ super.refresh();
+ }