]> git.argeo.org Git - gpl/argeo-suite.git/blob - suite/workbench/internal/EntitySingleColumnLabelProvider.java
Prepare next development cycle
[gpl/argeo-suite.git] / suite / workbench / internal / EntitySingleColumnLabelProvider.java
1 package org.argeo.suite.workbench.internal;
2
3 import javax.jcr.Node;
4 import javax.jcr.RepositoryException;
5
6 import org.argeo.activities.ActivitiesService;
7 import org.argeo.activities.ActivitiesTypes;
8 import org.argeo.activities.ui.ActivityListLabelProvider;
9 import org.argeo.connect.resources.ResourcesService;
10 import org.argeo.connect.ui.ConnectUiConstants;
11 import org.argeo.connect.ui.ConnectUiUtils;
12 import org.argeo.connect.ui.util.TagLabelProvider;
13 import org.argeo.connect.workbench.SystemWorkbenchService;
14 import org.argeo.people.PeopleException;
15 import org.argeo.people.PeopleNames;
16 import org.argeo.people.PeopleService;
17 import org.argeo.people.PeopleTypes;
18 import org.argeo.people.workbench.rap.providers.GroupLabelProvider;
19 import org.argeo.people.workbench.rap.providers.OrgListLabelProvider;
20 import org.argeo.people.workbench.rap.providers.PersonListLabelProvider;
21 import org.argeo.tracker.TrackerTypes;
22 import org.argeo.tracker.ui.TrackerSingleColLP;
23 import org.eclipse.jface.viewers.LabelProvider;
24 import org.eclipse.swt.graphics.Image;
25
26 /**
27 * Provide a single column label provider for entity lists. Icon and displayed
28 * text vary with the element node type
29 */
30 public class EntitySingleColumnLabelProvider extends LabelProvider implements PeopleNames {
31 private static final long serialVersionUID = 3111885324210673320L;
32
33 private SystemWorkbenchService systemWorkbenchService;
34
35 private ActivityListLabelProvider activityLP;
36 private TrackerSingleColLP trackerLP;
37 private OrgListLabelProvider orgLp;
38 private PersonListLabelProvider personLp;
39 private GroupLabelProvider groupLp = new GroupLabelProvider(ConnectUiConstants.LIST_TYPE_SMALL);
40 private TagLabelProvider mlInstanceLp;
41
42 public EntitySingleColumnLabelProvider(ResourcesService resourceService, ActivitiesService activitiesService,
43 PeopleService peopleService, SystemWorkbenchService systemWorkbenchService) {
44 this.systemWorkbenchService = systemWorkbenchService;
45 activityLP = new ActivityListLabelProvider(activitiesService);
46 trackerLP = new TrackerSingleColLP(activitiesService);
47 personLp = new PersonListLabelProvider(peopleService);
48 orgLp = new OrgListLabelProvider(resourceService, peopleService);
49 mlInstanceLp = new TagLabelProvider(resourceService, ConnectUiConstants.LIST_TYPE_SMALL);
50 }
51
52 @Override
53 public String getText(Object element) {
54 try {
55 Node entity = (Node) element;
56 String result;
57
58 if (entity.isNodeType(TrackerTypes.TRACKER_TASK) || entity.isNodeType(TrackerTypes.TRACKER_PROJECT)
59 || entity.isNodeType(TrackerTypes.TRACKER_MILESTONE))
60 result = trackerLP.getText(element);
61 else if (entity.isNodeType(ActivitiesTypes.ACTIVITIES_ACTIVITY))
62 result = activityLP.getText(element);
63 else if (entity.isNodeType(PeopleTypes.PEOPLE_PERSON))
64 result = personLp.getText(element);
65 else if (entity.isNodeType(PeopleTypes.PEOPLE_ORG))
66 result = orgLp.getText(element);
67 else if (entity.isNodeType(PeopleTypes.PEOPLE_MAILING_LIST))
68 result = mlInstanceLp.getText(element);
69 else if (entity.isNodeType(PeopleTypes.PEOPLE_GROUP))
70 result = groupLp.getText(element);
71 else
72 result = "";
73 return ConnectUiUtils.replaceAmpersand(result);
74 } catch (RepositoryException re) {
75 throw new PeopleException("Unable to get formatted value for node", re);
76 }
77 }
78
79 /** Overwrite this method to provide project specific images */
80 @Override
81 public Image getImage(Object element) {
82 return systemWorkbenchService.getIconForType((Node) element);
83 }
84 }