View Javadoc
1   package org.argeo.people.ui.providers;
2   
3   import javax.jcr.Node;
4   import javax.jcr.RepositoryException;
5   
6   import org.argeo.connect.resources.ResourcesService;
7   import org.argeo.connect.ui.ConnectUiConstants;
8   import org.argeo.connect.ui.SystemWorkbenchService;
9   import org.argeo.connect.ui.util.TagLabelProvider;
10  import org.argeo.connect.util.ConnectUtils;
11  import org.argeo.people.PeopleException;
12  import org.argeo.people.PeopleNames;
13  import org.argeo.people.PeopleService;
14  import org.argeo.people.PeopleTypes;
15  import org.eclipse.jface.viewers.LabelProvider;
16  import org.eclipse.swt.graphics.Image;
17  
18  /**
19   * Provide a single column label provider for entity lists. Icon and displayed
20   * text vary with the element node type
21   */
22  public class EntitySingleColumnLabelProvider extends LabelProvider implements PeopleNames {
23  	private static final long serialVersionUID = -2613028516709467900L;
24  
25  	private SystemWorkbenchService systemWorkbenchService;
26  
27  	private OrgListLabelProvider orgLp;
28  	private PersonListLabelProvider personLp;
29  	private GroupLabelProvider groupLp = new GroupLabelProvider(ConnectUiConstants.LIST_TYPE_SMALL);
30  	private TagLabelProvider mlInstanceLp;
31  
32  	public EntitySingleColumnLabelProvider(ResourcesService resourceService, PeopleService peopleService,
33  			SystemWorkbenchService systemWorkbenchService) {
34  		this.systemWorkbenchService = systemWorkbenchService;
35  		personLp = new PersonListLabelProvider(peopleService);
36  		orgLp = new OrgListLabelProvider(resourceService, peopleService);
37  		mlInstanceLp = new TagLabelProvider(resourceService, ConnectUiConstants.LIST_TYPE_SMALL);
38  	}
39  
40  	@Override
41  	public String getText(Object element) {
42  		try {
43  			Node entity = (Node) element;
44  			String result;
45  			if (entity.isNodeType(PeopleTypes.PEOPLE_PERSON))
46  				result = personLp.getText(element);
47  			else if (entity.isNodeType(PeopleTypes.PEOPLE_ORG))
48  				result = orgLp.getText(element);
49  			else if (entity.isNodeType(PeopleTypes.PEOPLE_MAILING_LIST))
50  				result = mlInstanceLp.getText(element);
51  			else if (entity.isNodeType(PeopleTypes.PEOPLE_GROUP))
52  				result = groupLp.getText(element);
53  			else
54  				result = "";
55  			return ConnectUtils.replaceAmpersand(result);
56  		} catch (RepositoryException re) {
57  			throw new PeopleException("Unable to get formatted value for node", re);
58  		}
59  	}
60  
61  	/** Overwrite this method to provide project specific images */
62  	@Override
63  	public Image getImage(Object element) {
64  		return systemWorkbenchService.getIconForType((Node) element);
65  	}
66  }