1 package org.argeo.people.e4.parts;
2
3 import javax.inject.Inject;
4 import javax.jcr.Node;
5 import javax.jcr.Property;
6
7 import org.apache.commons.logging.Log;
8 import org.apache.commons.logging.LogFactory;
9 import org.argeo.activities.ActivitiesService;
10 import org.argeo.activities.ui.RelatedActivityList;
11 import org.argeo.cms.ui.eclipse.forms.AbstractFormPart;
12 import org.argeo.cms.util.CmsUtils;
13 import org.argeo.connect.ConnectConstants;
14 import org.argeo.connect.e4.ConnectE4Msg;
15 import org.argeo.connect.resources.ResourcesNames;
16 import org.argeo.connect.ui.ConnectUiUtils;
17 import org.argeo.connect.ui.parts.TagLikeListPart;
18 import org.argeo.connect.ui.util.LazyCTabControl;
19 import org.argeo.connect.util.ConnectJcrUtils;
20 import org.argeo.eclipse.ui.EclipseUiUtils;
21 import org.argeo.people.PeopleException;
22 import org.argeo.people.PeopleService;
23 import org.argeo.people.e4.PeopleRapConstants;
24 import org.argeo.people.ui.PeopleMsg;
25 import org.argeo.people.ui.providers.OrgOverviewLabelProvider;
26 import org.eclipse.jface.viewers.ColumnLabelProvider;
27 import org.eclipse.swt.SWT;
28 import org.eclipse.swt.custom.CTabFolder;
29 import org.eclipse.swt.layout.FormLayout;
30 import org.eclipse.swt.layout.GridData;
31 import org.eclipse.swt.layout.GridLayout;
32 import org.eclipse.swt.widgets.Composite;
33 import org.eclipse.swt.widgets.Label;
34
35
36 public class OrgEditor extends AbstractPeopleWithImgEditor {
37
38
39
40
41 final static Log log = LogFactory.getLog(OrgEditor.class);
42
43
44 @Inject
45 private ActivitiesService activitiesService;
46 @Inject
47 private PeopleService peopleService;
48
49 private Node org;
50
51 public OrgEditor() {
52
53
54
55 }
56
57 public void init() {
58 super.init();
59 org = getNode();
60 }
61
62 @Override
63 protected void updatePartName() {
64 String shortName = ConnectJcrUtils.get(getNode(), Property.JCR_TITLE);
65 if (EclipseUiUtils.notEmpty(shortName)) {
66 if (shortName.length() > SHORT_NAME_LENGHT)
67 shortName = shortName.substring(0, SHORT_NAME_LENGHT - 1) + "...";
68 setPartName(shortName);
69 }
70 }
71
72 @Override
73 protected void populateHeader(Composite parent) {
74 GridLayout gl = EclipseUiUtils.noSpaceGridLayout();
75 gl.marginBottom = 10;
76 parent.setLayout(gl);
77
78 Composite titleCmp = getFormToolkit().createComposite(parent, SWT.NO_FOCUS);
79 titleCmp.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
80 populateTitleComposite(titleCmp);
81
82
83 Composite tagsCmp = new TagLikeListPart(this, parent, SWT.NO_FOCUS, getResourcesService(),
84 getSystemWorkbenchService(), ConnectConstants.RESOURCE_TAG, org, ResourcesNames.CONNECT_TAGS,
85 ConnectE4Msg.addTag.lead());
86 tagsCmp.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
87
88
89
90
91
92
93
94
95 }
96
97 protected void populateTabFolder(CTabFolder folder) {
98
99 String tooltip = "";
100
101 LazyCTabControl cpc = new ContactListCTab(folder, SWT.NO_FOCUS, this, getNode(), getResourcesService(),
102 getPeopleService(), getSystemWorkbenchService());
103 cpc.setLayoutData(EclipseUiUtils.fillAll());
104 addLazyTabToFolder(folder, cpc, PeopleMsg.orgDetails.lead(), PeopleRapConstants.CTAB_CONTACT_DETAILS, tooltip);
105
106
107 tooltip = "";
108 LazyCTabControl activitiesCmp = new RelatedActivityList(folder, SWT.NO_FOCUS, this, getUserAdminService(),
109 getResourcesService(), getActivitiesService(), getSystemAppService(), getSystemWorkbenchService(), org);
110 activitiesCmp.setLayoutData(EclipseUiUtils.fillAll());
111 addLazyTabToFolder(folder, activitiesCmp, PeopleMsg.orgActivityLog.lead(), PeopleRapConstants.CTAB_ACTIVITY_LOG,
112 tooltip);
113
114
115 tooltip = "";
116 LazyCTabControl employeesCmp = new JobListCTab(folder, SWT.NO_FOCUS, this, getResourcesService(),
117 getPeopleService(), getSystemWorkbenchService(), org);
118 employeesCmp.setLayoutData(EclipseUiUtils.fillAll());
119 addLazyTabToFolder(folder, employeesCmp, PeopleMsg.team.lead(), PeopleRapConstants.CTAB_EMPLOYEES, tooltip);
120
121
122 tooltip = "";
123 LazyCTabControl legalCmp = new OrgAdminInfoCTab(folder, SWT.NO_FOCUS, this, org);
124 legalCmp.setLayoutData(EclipseUiUtils.fillAll());
125 addLazyTabToFolder(folder, legalCmp, PeopleMsg.orgAdmin.lead(), PeopleRapConstants.CTAB_LEGAL_INFO, tooltip);
126 }
127
128 protected void populateTitleComposite(final Composite parent) {
129 try {
130 parent.setLayout(new FormLayout());
131
132 final Composite roPanelCmp = getFormToolkit().createComposite(parent, SWT.NO_FOCUS);
133 ConnectUiUtils.setSwitchingFormData(roPanelCmp);
134 roPanelCmp.setLayout(new GridLayout());
135
136
137 final Label orgInfoROLbl = getFormToolkit().createLabel(roPanelCmp, "", SWT.WRAP);
138 CmsUtils.markup(orgInfoROLbl);
139 final ColumnLabelProvider orgLP = new OrgOverviewLabelProvider(false, getResourcesService(),
140 getPeopleService(), getSystemWorkbenchService());
141
142
143 final Composite editPanelCmp = getFormToolkit().createComposite(parent, SWT.NONE);
144 ConnectUiUtils.setSwitchingFormData(editPanelCmp);
145 editPanelCmp.setLayout(new GridLayout(2, false));
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161 final AbstractFormPart editPart = new AbstractFormPart() {
162
163 public void refresh() {
164
165
166
167
168
169
170
171
172
173
174 String roText = orgLP.getText(org);
175 orgInfoROLbl.setText(roText);
176
177
178
179
180 editPanelCmp.moveBelow(roPanelCmp);
181 orgInfoROLbl.pack();
182 editPanelCmp.getParent().layout();
183 super.refresh();
184 }
185 };
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216 editPart.initialize(getManagedForm());
217 getManagedForm().addPart(editPart);
218 } catch (Exception e) {
219 throw new PeopleException("Cannot create main info section", e);
220 }
221 }
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240 protected ActivitiesService getActivitiesService() {
241 return activitiesService;
242 }
243
244 protected PeopleService getPeopleService() {
245 return peopleService;
246 }
247
248
249 public void setActivitiesService(ActivitiesService activitiesService) {
250 this.activitiesService = activitiesService;
251 }
252
253 public void setPeopleService(PeopleService peopleService) {
254 this.peopleService = peopleService;
255 }
256 }