1 package org.argeo.connect.ui.util;
2
3 import javax.jcr.Node;
4 import javax.jcr.Property;
5
6 import org.argeo.connect.ConnectException;
7 import org.argeo.connect.resources.ResourcesService;
8 import org.argeo.connect.ui.ConnectUiConstants;
9 import org.argeo.connect.util.ConnectJcrUtils;
10 import org.argeo.connect.util.ConnectUtils;
11 import org.argeo.eclipse.ui.EclipseUiUtils;
12 import org.eclipse.jface.viewers.ColumnLabelProvider;
13
14
15
16
17 public class TagLabelProvider extends ColumnLabelProvider {
18
19
20
21 private static final long serialVersionUID = 9156065705311297011L;
22 private final int listType;
23
24 private final ResourcesService resourceService;
25
26 public TagLabelProvider(ResourcesService resourceService, int listType) {
27 this.resourceService = resourceService;
28 this.listType = listType;
29 }
30
31 @Override
32 public String getText(Object element) {
33 Node entity = (Node) element;
34 String result;
35 switch (listType) {
36 case ConnectUiConstants.LIST_TYPE_OVERVIEW_TITLE:
37 result = getOverviewTitle(entity);
38 break;
39 case ConnectUiConstants.LIST_TYPE_SMALL:
40 result = getOneLineLabel(entity);
41 break;
42 default:
43 throw new ConnectException("Undefined list type - Unable to provide text for group");
44 }
45 return ConnectUtils.replaceAmpersand(result);
46 }
47
48 private String getOverviewTitle(Node entity) {
49 StringBuilder builder = new StringBuilder();
50
51 builder.append("<span " + ConnectUiConstants.ENTITY_HEADER_INNER_CSS_STYLE + ">");
52
53
54 builder.append("<b><big> ");
55 builder.append(ConnectJcrUtils.get(entity, Property.JCR_TITLE));
56 builder.append("</big></b>");
57 long membersNb = resourceService.countMembers(entity);
58 builder.append(" <i>(").append(membersNb).append(" members)</i>");
59
60
61 String desc = ConnectJcrUtils.get(entity, Property.JCR_DESCRIPTION);
62 if (EclipseUiUtils.notEmpty(desc))
63 builder.append("<br />").append(desc);
64
65 builder.append("</span>");
66 return builder.toString();
67 }
68
69 private String getOneLineLabel(Node entity) {
70 StringBuilder builder = new StringBuilder();
71 builder.append("<b>");
72 builder.append(ConnectJcrUtils.get(entity, Property.JCR_TITLE));
73 builder.append("</b>");
74 long membersNb = resourceService.countMembers(entity);
75 builder.append(" <i>(").append(membersNb).append(" members)</i>");
76 return builder.toString();
77 }
78 }