X-Git-Url: http://git.argeo.org/?p=gpl%2Fargeo-suite.git;a=blobdiff_plain;f=org.argeo.suite.e4%2Fsrc%2Forg%2Fargeo%2Fsuite%2Fe4%2Fparts%2FEntitySingleColumnLabelProvider.java;fp=org.argeo.suite.e4%2Fsrc%2Forg%2Fargeo%2Fsuite%2Fe4%2Fparts%2FEntitySingleColumnLabelProvider.java;h=490ae13433b6c77db63d815f57e279bcc3732dbb;hp=0000000000000000000000000000000000000000;hb=0508f30bba143164a0fe83e3e7343e9375a4b6f4;hpb=ec48cb7ff84de8842c146d54057e70a93040e169 diff --git a/org.argeo.suite.e4/src/org/argeo/suite/e4/parts/EntitySingleColumnLabelProvider.java b/org.argeo.suite.e4/src/org/argeo/suite/e4/parts/EntitySingleColumnLabelProvider.java new file mode 100644 index 0000000..490ae13 --- /dev/null +++ b/org.argeo.suite.e4/src/org/argeo/suite/e4/parts/EntitySingleColumnLabelProvider.java @@ -0,0 +1,114 @@ +package org.argeo.suite.e4.parts; + +import javax.jcr.Node; +import javax.jcr.Property; +import javax.jcr.RepositoryException; +import javax.jcr.nodetype.NodeType; + +import org.argeo.activities.ActivitiesService; +import org.argeo.activities.ActivitiesTypes; +import org.argeo.activities.ui.ActivityListLabelProvider; +import org.argeo.connect.resources.ResourcesService; +import org.argeo.connect.ui.ConnectUiConstants; +import org.argeo.connect.ui.SystemWorkbenchService; +import org.argeo.connect.ui.util.TagLabelProvider; +import org.argeo.connect.util.ConnectUtils; +import org.argeo.people.PeopleException; +import org.argeo.people.PeopleNames; +import org.argeo.people.PeopleService; +import org.argeo.people.PeopleTypes; +import org.argeo.people.ui.providers.GroupLabelProvider; +import org.argeo.people.ui.providers.OrgListLabelProvider; +import org.argeo.people.ui.providers.PersonListLabelProvider; +import org.argeo.tracker.TrackerTypes; +import org.argeo.tracker.ui.TrackerSingleColLP; +import org.eclipse.jface.viewers.ILabelProvider; +import org.eclipse.jface.viewers.ILabelProviderListener; +import org.eclipse.swt.graphics.Image; + +/** + * Provide a single column label provider for entity lists. Icon and displayed + * text vary with the element node type + */ +public class EntitySingleColumnLabelProvider implements PeopleNames, ILabelProvider { + private static final long serialVersionUID = 3111885324210673320L; + + private SystemWorkbenchService systemWorkbenchService; + + private ActivityListLabelProvider activityLP; + private TrackerSingleColLP trackerLP; + private OrgListLabelProvider orgLp; + private PersonListLabelProvider personLp; + private GroupLabelProvider groupLp = new GroupLabelProvider(ConnectUiConstants.LIST_TYPE_SMALL); + private TagLabelProvider mlInstanceLp; + + public EntitySingleColumnLabelProvider(ResourcesService resourceService, ActivitiesService activitiesService, + PeopleService peopleService, SystemWorkbenchService systemWorkbenchService) { + this.systemWorkbenchService = systemWorkbenchService; + activityLP = new ActivityListLabelProvider(activitiesService); + trackerLP = new TrackerSingleColLP(activitiesService); + personLp = new PersonListLabelProvider(peopleService); + orgLp = new OrgListLabelProvider(resourceService, peopleService); + mlInstanceLp = new TagLabelProvider(resourceService, ConnectUiConstants.LIST_TYPE_SMALL); + } + + @Override + public String getText(Object element) { + try { + Node entity = (Node) element; + String result; + + if (entity.isNodeType(TrackerTypes.TRACKER_TASK) || entity.isNodeType(TrackerTypes.TRACKER_PROJECT) + || entity.isNodeType(TrackerTypes.TRACKER_MILESTONE)) + result = trackerLP.getText(element); + else if (entity.isNodeType(ActivitiesTypes.ACTIVITIES_ACTIVITY)) + result = activityLP.getText(element); + else if (entity.isNodeType(PeopleTypes.PEOPLE_PERSON)) + result = personLp.getText(element); + else if (entity.isNodeType(PeopleTypes.PEOPLE_ORG)) + result = orgLp.getText(element); + else if (entity.isNodeType(PeopleTypes.PEOPLE_MAILING_LIST)) + result = mlInstanceLp.getText(element); + else if (entity.isNodeType(PeopleTypes.PEOPLE_GROUP)) + result = groupLp.getText(element); + else if (entity.isNodeType(NodeType.MIX_TITLE) && entity.hasProperty(Property.JCR_TITLE)) + result = entity.getProperty(Property.JCR_TITLE).getString(); + else + result = ""; + return ConnectUtils.replaceAmpersand(result); + } catch (RepositoryException re) { + throw new PeopleException("Unable to get formatted value for node", re); + } + } + + /** Overwrite this method to provide project specific images */ + @Override + public Image getImage(Object element) { + return systemWorkbenchService.getIconForType((Node) element); + } + + @Override + public void addListener(ILabelProviderListener listener) { + // TODO Auto-generated method stub + + } + + @Override + public void dispose() { + // TODO Auto-generated method stub + + } + + @Override + public boolean isLabelProperty(Object element, String property) { + // TODO Auto-generated method stub + return false; + } + + @Override + public void removeListener(ILabelProviderListener listener) { + // TODO Auto-generated method stub + + } + +}