View Javadoc
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   * Provide a label provider for group members
16   */
17  public class TagLabelProvider extends ColumnLabelProvider {
18  	// private final static Log log = LogFactory
19  	// .getLog(TagLabelProvider.class);
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  		// first line
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  		// Description
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  }