Group management
[gpl/argeo-suite.git] / swt / org.argeo.app.ui / src / org / argeo / app / ui / people / PeopleEntryArea.java
index 41310aa8c6e8f36a0c46f918526169653e81334e..f7141a4ecb8386f16a466a158ff7562d9896fc82 100644 (file)
@@ -6,26 +6,29 @@ import javax.jcr.RepositoryException;
 import org.argeo.api.acr.Content;
 import org.argeo.api.acr.ContentRepository;
 import org.argeo.api.acr.ContentSession;
-import org.argeo.api.acr.ldap.LdapAttrs;
+import org.argeo.api.acr.ldap.LdapAttr;
 import org.argeo.api.cms.directory.CmsUserManager;
 import org.argeo.api.cms.directory.HierarchyUnit;
 import org.argeo.api.cms.ux.CmsView;
 import org.argeo.app.ui.SuiteIcon;
 import org.argeo.app.ui.SuiteMsg;
 import org.argeo.app.ui.SuiteUxEvent;
+import org.argeo.cms.CurrentUser;
 import org.argeo.cms.acr.ContentUtils;
+import org.argeo.cms.auth.CmsRole;
 import org.argeo.cms.jcr.acr.JcrContent;
 import org.argeo.cms.swt.CmsSwtTheme;
 import org.argeo.cms.swt.CmsSwtUtils;
 import org.argeo.cms.swt.Selected;
 import org.argeo.cms.swt.acr.SwtUiProvider;
+import org.argeo.cms.swt.dialogs.CmsFeedback;
 import org.argeo.cms.swt.widgets.SwtGuidedFormDialog;
 import org.argeo.cms.swt.widgets.SwtTableView;
 import org.argeo.cms.swt.widgets.SwtTreeView;
 import org.argeo.cms.ui.CmsUiProvider;
+import org.argeo.cms.ux.widgets.CmsDialog;
 import org.argeo.cms.ux.widgets.Column;
 import org.argeo.cms.ux.widgets.GuidedForm;
-import org.eclipse.jface.window.Window;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.custom.SashForm;
 import org.eclipse.swt.graphics.Point;
@@ -66,7 +69,7 @@ public class PeopleEntryArea implements SwtUiProvider, CmsUiProvider {
 
                        @Override
                        public String getText(Content role) {
-                               return role.attr(LdapAttrs.mail);
+                               return role.attr(LdapAttr.mail);
                        }
 
                        @Override
@@ -81,10 +84,9 @@ public class PeopleEntryArea implements SwtUiProvider, CmsUiProvider {
                ToolBar bottomToolBar = new ToolBar(bottom, SWT.NONE);
                bottomToolBar.setLayoutData(new GridData(SWT.END, SWT.FILL, true, false));
 
-               ToolItem deleteItem = new ToolItem(bottomToolBar, SWT.FLAT);
-               deleteItem.setEnabled(false);
-//             CmsUiUtils.style(deleteItem, SuiteStyle.recentItems);
-               deleteItem.setImage(theme.getSmallIcon(SuiteIcon.delete));
+//             ToolItem deleteItem = new ToolItem(bottomToolBar, SWT.FLAT);
+//             deleteItem.setEnabled(false);
+//             deleteItem.setImage(theme.getSmallIcon(SuiteIcon.delete));
 
                Menu menu = new Menu(Display.getCurrent().getActiveShell(), SWT.POP_UP);
                // TODO display add user only if hierarchy unit is a POSIX group
@@ -97,8 +99,9 @@ public class PeopleEntryArea implements SwtUiProvider, CmsUiProvider {
                        Content huContent = ContentUtils.hierarchyUnitToContent(contentSession, hierarchyUnit);
                        GuidedForm wizard = new NewUserForm(cmsUserManager, huContent);
                        SwtGuidedFormDialog dialog = new SwtGuidedFormDialog(parent.getShell(), wizard);
-                       if (dialog.open() == Window.OK) {
-                               // TODO create
+                       if (dialog.open() == CmsDialog.OK) {
+                               CmsFeedback.show(SuiteMsg.personWizardFeedback.lead());
+                               usersPart.refresh();
                        }
                });
 
@@ -110,8 +113,9 @@ public class PeopleEntryArea implements SwtUiProvider, CmsUiProvider {
                        Content huContent = ContentUtils.hierarchyUnitToContent(contentSession, hierarchyUnit);
                        GuidedForm wizard = new NewOrgForm(cmsUserManager, huContent);
                        SwtGuidedFormDialog dialog = new SwtGuidedFormDialog(parent.getShell(), wizard);
-                       if (dialog.open() == Window.OK) {
-                               // TODO create
+                       if (dialog.open() == CmsDialog.OK) {
+                               CmsFeedback.show(SuiteMsg.orgWizardFeedback.lead());
+                               usersPart.refresh();
                        }
                });
 
@@ -130,6 +134,9 @@ public class PeopleEntryArea implements SwtUiProvider, CmsUiProvider {
                                HierarchyUnit hierarchyUnit = (HierarchyUnit) o;
                                usersPart.setInput(hierarchyUnit);
                                addItem.setEnabled(true);
+
+                               addOrgItem.setEnabled(usersPart.getInput() != null
+                                               && CurrentUser.implies(CmsRole.groupAdmin, usersPart.getInput().getBase()));
 //                             cmsView.sendEvent(SuiteUxEvent.refreshPart.topic(), SuiteUxEvent
 //                                             .eventProperties(ContentUtils.hierarchyUnitToContent(contentSession, hierarchyUnit)));
                        }
@@ -139,9 +146,9 @@ public class PeopleEntryArea implements SwtUiProvider, CmsUiProvider {
                        Content user = (Content) o;
                        if (user != null) {
                                cmsView.sendEvent(SuiteUxEvent.refreshPart.topic(), SuiteUxEvent.eventProperties(user));
-                               deleteItem.setEnabled(true);
+//                             deleteItem.setEnabled(true);
                        } else {
-                               deleteItem.setEnabled(false);
+//                             deleteItem.setEnabled(false);
                        }
                });