View Javadoc
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  /** Single column label provider for Organisation lists */
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  	 * @param resourcesService
36  	 * @param peopleService
37  	 * @param listType
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 }