+ List<User> users = (List<User>) editor.getFlatGroups(null);
+ List<User> filteredUsers = new ArrayList<User>();
+ if (users.contains(user))
+ users.remove(user);
+ userFilter.setSearchText(filter);
+ for (User user : users)
+ if (userFilter.select(null, null, user))
+ filteredUsers.add(user);
+ return filteredUsers;
+ }
+ }
+
+ private void addRemoveAbitily(SectionPart sectionPart,
+ TableViewer userViewer, User user) {
+ 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();
+ }
+ }
+ });
+
+ String tooltip = "Remove " + UserAdminUtils.getUsername(user)
+ + " from the below selected groups";
+ Action action = new RemoveMembershipAction(userViewer, user, tooltip,
+ 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 User user;
+
+ RemoveMembershipAction(TableViewer userViewer, User user, String name,
+ ImageDescriptor img) {
+ super(name, img);
+ this.userViewer = userViewer;
+ this.user = user;
+ }
+
+ @Override
+ public void run() {
+ ISelection selection = userViewer.getSelection();
+ if (selection.isEmpty())
+ return;
+
+ @SuppressWarnings("unchecked")
+ Iterator<Group> it = ((IStructuredSelection) selection).iterator();
+ List<Group> groups = new ArrayList<Group>();
+ // StringBuilder builder = new StringBuilder();
+ while (it.hasNext()) {
+ Group currGroup = it.next();
+ // String groupName = UserAdminUtils.getUsername(currGroup);
+ // builder.append(groupName).append("; ");
+ groups.add(currGroup);
+ }
+
+ // if (!MessageDialog.openQuestion(
+ // HandlerUtil.getActiveShell(event),
+ // "Re",
+ // "Are you sure that you want to delete these users?\n"
+ // + builder.substring(0, builder.length() - 2)))
+ // return null;
+
+ userAdminWrapper.beginTransactionIfNeeded();
+ for (Group group : groups) {
+ group.removeMember(user);
+ // sectionPart.refresh();
+ userAdminWrapper.notifyListeners(new UserAdminEvent(null,
+ UserAdminEvent.ROLE_CHANGED, group));
+ }