]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - org.argeo.cms/src/org/argeo/cms/users/UserRolesPart.java
Remove or merge bundles
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / users / UserRolesPart.java
index be13ed8a27213fb3902022fe75e10abafc8d352e..8efcba26113a67301097c7fe93243487a913d42d 100644 (file)
@@ -27,22 +27,22 @@ import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.FocusEvent;
 import org.eclipse.swt.events.FocusListener;
 import org.eclipse.swt.events.MouseListener;
+import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Table;
 import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.swt.widgets.Text;
-import org.springframework.security.GrantedAuthority;
+import org.springframework.security.core.GrantedAuthority;
 
 /** Display a single user main info once it has been created. */
 public class UserRolesPart extends StyledControl implements EditablePart,
                NodePart, FocusListener {
-
-       // A static list of supported properties.
-       private List<Text> texts;
-       private final static String KEY_PROP_NAME = "jcr:propertyName";
+       private static final long serialVersionUID = -6013980335975055846L;
 
        private CheckboxTableViewer rolesViewer;
+       private Table table;
+
        private JcrUserDetails userDetails;
        private UserAdminService userAdminService;
        private List<String> roles;
@@ -64,9 +64,7 @@ public class UserRolesPart extends StyledControl implements EditablePart,
        public UserRolesPart(Composite parent, int style, Item item,
                        boolean cacheImmediately) throws RepositoryException {
                super(parent, style, item, cacheImmediately);
-
                // checked = new Image(parent, imageData);
-
        }
 
        @Override
@@ -74,19 +72,26 @@ public class UserRolesPart extends StyledControl implements EditablePart,
                return getNode();
        }
 
-       // Experimental, remove
        public void setMouseListener(MouseListener mouseListener) {
                super.setMouseListener(mouseListener);
-
-               for (Text txt : texts)
-                       txt.addMouseListener(mouseListener);
-
+               table.addMouseListener(mouseListener);
        }
 
        @Override
        protected Control createControl(Composite box, String style) {
-               Table table = new Table(box, SWT.CHECK | SWT.MULTI | SWT.H_SCROLL
-                               | SWT.V_SCROLL);
+               // box.setLayout(CmsUtils.noSpaceGridLayout());
+               box.setLayout(new GridLayout());
+
+               Label header = new Label(box, SWT.NONE);
+               header.setText(" Groups");
+               CmsUtils.style(header, UserStyles.USER_FORM_TITLE);
+               header.setLayoutData(CmsUtils.fillWidth());
+
+               int swtStyle = SWT.CHECK | SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL;
+               if (!isEditing())
+                       swtStyle |= SWT.READ_ONLY;
+
+               table = new Table(box, swtStyle);
                table.setLinesVisible(true);
                table.setHeaderVisible(false);
                CmsUtils.style(table, style);
@@ -128,6 +133,9 @@ public class UserRolesPart extends StyledControl implements EditablePart,
                rolesViewer.setContentProvider(new RolesContentProvider());
                rolesViewer.setInput(userAdminService.listEditableRoles().toArray());
 
+               // try to prevent edition on read only nodes. Does not work.
+               // rolesViewer.setAllGrayed(!isEditing());
+
                rolesViewer.addCheckStateListener(new ICheckStateListener() {
 
                        @Override
@@ -136,7 +144,7 @@ public class UserRolesPart extends StyledControl implements EditablePart,
                                boolean contained = roles.contains(name);
                                boolean checked = event.getChecked();
                                if (checked != contained) {
-                                       if (contained)
+                                       if (!contained)
                                                roles.add(name);
                                        else
                                                roles.remove(name);
@@ -148,11 +156,6 @@ public class UserRolesPart extends StyledControl implements EditablePart,
                return table;
        }
 
-       // void refresh() {
-       // for (Text txt : texts) {
-       // }
-       // }
-
        // THE LISTENER
        @Override
        public void focusGained(FocusEvent e) {
@@ -170,28 +173,23 @@ public class UserRolesPart extends StyledControl implements EditablePart,
 
        public void setUserAdminService(UserAdminService userAdminService) {
                this.userAdminService = userAdminService;
-
                try {
                        String username = getNode().getProperty(ArgeoNames.ARGEO_USER_ID)
                                        .getString();
-                       // ;
-
                        if (userAdminService.userExists(username)) {
                                JcrUserDetails userDetails = (JcrUserDetails) userAdminService
                                                .loadUserByUsername(username);
                                setUserDetails(userDetails);
                        }
                } catch (Exception e) {
-                       throw new ArgeoException("Cannot retrieve userDetails for "// +
-                                                                                                                                               // username
-                                       , e);
+                       throw new ArgeoException("Cannot retrieve userDetails for "
+                                       + getNode(), e);
                }
 
        }
 
        public void setUserDetails(JcrUserDetails userDetails) {
                this.userDetails = userDetails;
-
                this.roles = new ArrayList<String>();
                for (GrantedAuthority ga : userDetails.getAuthorities())
                        roles.add(ga.getAuthority());