X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Fusers%2FUserRolesPart.java;h=8efcba26113a67301097c7fe93243487a913d42d;hb=0a63088e055dcd5ff397ce4e98d008c62c84dc98;hp=be13ed8a27213fb3902022fe75e10abafc8d352e;hpb=050d54bb859aaed19777b32d7c9e677c532ef52f;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms/src/org/argeo/cms/users/UserRolesPart.java b/org.argeo.cms/src/org/argeo/cms/users/UserRolesPart.java index be13ed8a2..8efcba261 100644 --- a/org.argeo.cms/src/org/argeo/cms/users/UserRolesPart.java +++ b/org.argeo.cms/src/org/argeo/cms/users/UserRolesPart.java @@ -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 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 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(); for (GrantedAuthority ga : userDetails.getAuthorities()) roles.add(ga.getAuthority());