Improve and simplify OSGi Boot
[lgpl/argeo-commons.git] / org.argeo.security.ui.admin / src / org / argeo / security / ui / admin / internal / parts / GroupsView.java
index 95a4c7f45eb695a985a11d27eae8a32b06e7e53e..82f4e1bdd8f27a0f6f1713f159d85e68910846ed 100644 (file)
@@ -20,15 +20,16 @@ import java.util.List;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.argeo.ArgeoException;
+import org.argeo.cms.CmsException;
 import org.argeo.cms.auth.AuthConstants;
+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.SecurityAdminPlugin;
-import org.argeo.security.ui.admin.internal.UiAdminUtils;
+import org.argeo.security.ui.admin.internal.UiUserAdminListener;
 import org.argeo.security.ui.admin.internal.UserAdminWrapper;
 import org.argeo.security.ui.admin.internal.providers.CommonNameLP;
 import org.argeo.security.ui.admin.internal.providers.DomainNameLP;
@@ -46,6 +47,7 @@ import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
 import org.eclipse.ui.part.ViewPart;
 import org.osgi.framework.InvalidSyntaxException;
 import org.osgi.service.useradmin.Role;
@@ -73,7 +75,7 @@ public class GroupsView extends ViewPart implements ArgeoNames {
        public void createPartControl(Composite parent) {
                parent.setLayout(EclipseUiUtils.noSpaceGridLayout());
 
-               boolean isAdmin = UiAdminUtils.isUserInRole(AuthConstants.ROLE_ADMIN);
+               boolean isAdmin = UserAdminUtils.isUserInRole(AuthConstants.ROLE_ADMIN);
 
                // Define the displayed columns
                columnDefs.add(new ColumnDefinition(new RoleIconLP(), "", 26));
@@ -111,17 +113,34 @@ public class GroupsView extends ViewPart implements ArgeoNames {
                userViewer.addDragSupport(operations, tt, new UserDragListener(
                                userViewer));
 
+               // // Register a useradmin listener
+               // listener = new UserAdminListener() {
+               // @Override
+               // public void roleChanged(UserAdminEvent event) {
+               // if (userViewer != null && !userViewer.getTable().isDisposed())
+               // refresh();
+               // }
+               // };
+               // userAdminWrapper.addListener(listener);
+               // }
+
                // Register a useradmin listener
-               listener = new UserAdminListener() {
-                       @Override
-                       public void roleChanged(UserAdminEvent event) {
-                               if (userViewer != null && !userViewer.getTable().isDisposed())
-                                       refresh();
-                       }
-               };
+               listener = new MyUiUAListener(parent.getDisplay());
                userAdminWrapper.addListener(listener);
        }
 
+       private class MyUiUAListener extends UiUserAdminListener {
+               public MyUiUAListener(Display display) {
+                       super(display);
+               }
+
+               @Override
+               public void roleChangedToUiThread(UserAdminEvent event) {
+                       if (userViewer != null && !userViewer.getTable().isDisposed())
+                               refresh();
+               }
+       }
+
        private class MyUserTableViewer extends LdifUsersTable {
                private static final long serialVersionUID = 8467999509931900367L;
 
@@ -157,7 +176,7 @@ public class GroupsView extends ViewPart implements ArgeoNames {
                        try {
                                StringBuilder builder = new StringBuilder();
                                StringBuilder tmpBuilder = new StringBuilder();
-                               if (UiAdminUtils.notNull(filter))
+                               if (EclipseUiUtils.notEmpty(filter))
                                        for (String prop : knownProps) {
                                                tmpBuilder.append("(");
                                                tmpBuilder.append(prop);
@@ -197,7 +216,7 @@ public class GroupsView extends ViewPart implements ArgeoNames {
                                roles = userAdminWrapper.getUserAdmin().getRoles(
                                                builder.toString());
                        } catch (InvalidSyntaxException e) {
-                               throw new ArgeoException("Unable to get roles with filter: "
+                               throw new CmsException("Unable to get roles with filter: "
                                                + filter, e);
                        }
                        List<User> users = new ArrayList<User>();