1 package org.argeo.people.web.providers;
2
3 import static org.argeo.eclipse.ui.EclipseUiUtils.notEmpty;
4
5 import javax.jcr.Node;
6 import javax.jcr.RepositoryException;
7
8 import org.argeo.connect.ConnectConstants;
9 import org.argeo.connect.resources.ResourcesNames;
10 import org.argeo.connect.resources.ResourcesService;
11 import org.argeo.connect.ui.ConnectUiConstants;
12 import org.argeo.connect.util.ConnectUtils;
13 import org.argeo.people.PeopleException;
14 import org.argeo.people.PeopleNames;
15 import org.argeo.people.PeopleService;
16 import org.argeo.people.PeopleTypes;
17 import org.argeo.people.ui.PeopleUiSnippets;
18 import org.argeo.people.web.PeopleWebConstants;
19 import org.argeo.people.web.PeopleWebSnippets;
20 import org.eclipse.jface.viewers.ILabelProvider;
21 import org.eclipse.jface.viewers.ILabelProviderListener;
22 import org.eclipse.swt.graphics.Image;
23
24
25 public class OrgOverviewLP implements ILabelProvider, PeopleNames {
26
27 private static final long serialVersionUID = 1L;
28 private final int listType;
29
30 private PeopleService peopleService;
31 private ResourcesService resourcesService;
32
33
34
35
36
37
38
39 public OrgOverviewLP(ResourcesService resourcesService, PeopleService peopleService, int listType) {
40 this.listType = listType;
41 this.peopleService = peopleService;
42 this.resourcesService = resourcesService;
43 }
44
45 @Override
46 public String getText(Object element) {
47
48 try {
49 Node entity = (Node) element;
50 String result;
51 switch (listType) {
52 case PeopleWebConstants.OVERVIEW_TYPE_HEADER:
53 result = getOverviewTitle(entity);
54 break;
55 case PeopleWebConstants.OVERVIEW_TYPE_LARGE_LIST:
56 result = getOverviewForList(entity, false);
57 break;
58 case PeopleWebConstants.OVERVIEW_TYPE_SINGLE_LINE_LIST:
59 result = getOverviewForList(entity, true);
60 break;
61 default:
62 throw new PeopleException("Unable to provide text for person");
63 }
64 return ConnectUtils.replaceAmpersand(result);
65 } catch (RepositoryException re) {
66 throw new PeopleException("Cannot create organizations content", re);
67 }
68 }
69
70 private String getOverviewTitle(Node orga) throws RepositoryException {
71 StringBuilder builder = new StringBuilder();
72 builder.append("<span style='font-size:15px;' >");
73 builder.append("<big><b>");
74 builder.append(peopleService.getDisplayName(orga));
75 builder.append("</b></big> ");
76
77 String local = PeopleUiSnippets.getLocalisationInfo(resourcesService, peopleService, orga);
78 if (notEmpty(local))
79 builder.append(local);
80
81 builder.append("<br/>");
82
83 String tmpStr = PeopleUiSnippets.getPrimaryContacts(orga);
84 if (notEmpty(tmpStr)) {
85 builder.append(tmpStr);
86 }
87 builder.append("</span>");
88 return builder.toString();
89 }
90
91 private String getOverviewForList(Node orga, boolean isSmallList) throws RepositoryException {
92
93 StringBuilder builder = new StringBuilder();
94
95 if (!isSmallList)
96 builder.append("<span> <big>");
97 builder.append("<b>");
98 builder.append(peopleService.getDisplayName(orga));
99 builder.append("</b> ");
100 if (!isSmallList)
101 builder.append("</big>");
102
103 String local = PeopleUiSnippets.getLocalisationInfo(resourcesService, peopleService, orga);
104 if (notEmpty(local))
105 builder.append(local);
106
107 if (isSmallList)
108 builder.append(ConnectUiConstants.NB_SPACE + ConnectUiConstants.NB_SPACE);
109 else
110 builder.append("<br/>");
111
112 String tmpStr = PeopleUiSnippets.getPrimaryContacts(orga);
113 if (notEmpty(tmpStr))
114 builder.append(tmpStr);
115
116 String tags = PeopleWebSnippets.getTagLikeValues(resourcesService, ConnectConstants.RESOURCE_TAG, orga,
117 ResourcesNames.CONNECT_TAGS, "#");
118 String mailingLists = PeopleWebSnippets.getTagLikeValues(resourcesService, PeopleTypes.PEOPLE_MAILING_LIST, orga,
119 PeopleNames.PEOPLE_MAILING_LISTS, "@");
120
121 if (isSmallList) {
122 builder.append(ConnectUiConstants.NB_SPACE + ConnectUiConstants.NB_SPACE).append(tags.trim());
123 if (notEmpty(tags) && notEmpty(mailingLists))
124 builder.append(ConnectUiConstants.NB_SPACE);
125 builder.append(mailingLists.trim());
126 } else {
127 builder.append("<br/>").append(tags.trim());
128 if (notEmpty(tags) && notEmpty(mailingLists))
129 builder.append("<br/>");
130 builder.append(mailingLists.trim());
131 builder.append("</span>");
132 }
133 return builder.toString();
134 }
135
136 @Override
137 public void addListener(ILabelProviderListener listener) {
138 }
139
140 @Override
141 public void dispose() {
142 }
143
144 @Override
145 public boolean isLabelProperty(Object element, String property) {
146 return false;
147 }
148
149 @Override
150 public void removeListener(ILabelProviderListener listener) {
151 }
152
153 @Override
154 public Image getImage(Object element) {
155 return null;
156 }
157 }