]> git.argeo.org Git - gpl/argeo-suite.git/blob - NewOrgForm.java
2b7dc60cdfdc634653adba8ed26a752106dc3012
[gpl/argeo-suite.git] / NewOrgForm.java
1 package org.argeo.app.ui.people;
2
3 import static org.argeo.eclipse.ui.EclipseUiUtils.isEmpty;
4
5 import java.util.HashMap;
6 import java.util.HashSet;
7 import java.util.Map;
8 import java.util.Set;
9
10 import org.argeo.api.acr.Content;
11 import org.argeo.api.acr.ldap.LdapAttr;
12 import org.argeo.api.acr.ldap.LdapObj;
13 import org.argeo.api.cms.directory.CmsGroup;
14 import org.argeo.api.cms.directory.CmsUserManager;
15 import org.argeo.api.cms.directory.HierarchyUnit;
16 import org.argeo.app.swt.ux.SuiteSwtUtils;
17 import org.argeo.app.ux.SuiteMsg;
18 import org.argeo.cms.swt.dialogs.CmsFeedback;
19 import org.argeo.cms.swt.widgets.SwtGuidedFormPage;
20 import org.argeo.cms.ux.widgets.AbstractGuidedForm;
21 import org.argeo.eclipse.ui.EclipseUiUtils;
22 import org.eclipse.swt.SWT;
23 import org.eclipse.swt.events.ModifyEvent;
24 import org.eclipse.swt.events.ModifyListener;
25 import org.eclipse.swt.layout.GridData;
26 import org.eclipse.swt.layout.GridLayout;
27 import org.eclipse.swt.widgets.Composite;
28 import org.eclipse.swt.widgets.Text;
29
30 /** Form to create a new organisation. */
31 public class NewOrgForm extends AbstractGuidedForm {
32 private Content hierarchyUnit;
33 private CmsUserManager cmsUserManager;
34
35 protected Text orgNameT;
36
37 public NewOrgForm(CmsUserManager cmsUserManager, Content hierarchyUnit) {
38 this.hierarchyUnit = hierarchyUnit;
39 this.cmsUserManager = cmsUserManager;
40 }
41
42 @Override
43 public void addPages() {
44 try {
45 MainInfoPage page = new MainInfoPage("main");
46 addPage(page);
47 } catch (Exception e) {
48 throw new RuntimeException("Cannot add page to wizard", e);
49 }
50 setFormTitle(SuiteMsg.orgWizardWindowTitle.lead());
51 }
52
53 @Override
54 public boolean performFinish() {
55 String orgName = orgNameT.getText();
56 if (EclipseUiUtils.isEmpty(orgName)) {
57 CmsFeedback.show(SuiteMsg.allFieldsMustBeSet.lead());
58 return false;
59 } else {
60 HierarchyUnit hu = hierarchyUnit.adapt(HierarchyUnit.class);
61 String dn = "cn=" + orgName + ",ou=Groups," + hu.getBase();
62
63 CmsGroup user = cmsUserManager.createGroup(dn);
64
65 Map<String, Object> additionalProperties = new HashMap<>();
66 additionalProperties.put(LdapAttr.o.name(), orgName);
67
68 Set<String> objectClasses = new HashSet<>();
69 objectClasses.add(LdapObj.organization.name());
70 cmsUserManager.addObjectClasses(user, objectClasses, additionalProperties);
71 return true;
72 }
73 }
74
75 @Override
76 public boolean performCancel() {
77 return true;
78 }
79
80 @Override
81 public boolean canFinish() {
82 String firstName = orgNameT.getText();
83 if (isEmpty(firstName)) {
84 return false;
85 } else
86 return true;
87 }
88
89 protected class MainInfoPage extends SwtGuidedFormPage {
90
91 public MainInfoPage(String pageName) {
92 super(pageName);
93 setTitle(SuiteMsg.orgWizardPageTitle.lead());
94 }
95
96 public void createControl(Composite parent) {
97 parent.setLayout(new GridLayout(2, false));
98
99 // FirstName
100 SuiteSwtUtils.createBoldLabel(parent, SuiteMsg.org);
101 orgNameT = new Text(parent, SWT.BORDER);
102 // firstNameTxt.setMessage("a first name");
103 orgNameT.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
104
105 ModifyListener ml = new ModifyListener() {
106 private static final long serialVersionUID = 1939491923843870844L;
107
108 @Override
109 public void modifyText(ModifyEvent event) {
110 getView().updateButtons();
111 }
112 };
113
114 orgNameT.addModifyListener(ml);
115
116 orgNameT.setFocus();
117 }
118 }
119 }