package org.nightlabs.jfire.personrelation.ui.tree;
import org.eclipse.swt.graphics.Image;
import org.nightlabs.base.ui.resource.SharedImages;
import org.nightlabs.jdo.ObjectID;
import org.nightlabs.jfire.person.Person;
import org.nightlabs.jfire.personrelation.ui.PersonRelationPlugin;
import org.nightlabs.jfire.prop.id.PropertySetID;
/**
* Default {@link IPersonRelationTreeLabelProviderDelegate} to display {@link Person}-information.
*
* @author Marco Schulze
* @author khaireel
* @author abieber
*/
public class DefaultPersonRelationTreeLabelProviderDelegatePerson extends AbstractPersonRelationTreeLabelProviderDelegate {
public String getJDOObjectText(ObjectID jdoObjectID, Object jdoObject, int spanColIndex) {
if (jdoObject == null) {
if (jdoObjectID instanceof PropertySetID) {
PropertySetID personID = (PropertySetID) jdoObjectID;
switch (spanColIndex) {
case 0:
return personID.organisationID + '/' + personID.propertySetID;
default:
break;
}
}
else {
switch (spanColIndex) {
case 0:
return String.valueOf(jdoObjectID);
default:
break;
}
}
}
else {
if (jdoObject instanceof Person) {
Person person = (Person) jdoObject;
switch (spanColIndex) {
case 0:
return getPersonDisplayText(person); // I have encountered cases where the displayName is not set; eg. when the check-box to auto-generate displayName is not selected. Any forthcoming solutions? Kai
default:
break;
}
}
else {
switch (spanColIndex) {
case 0:
return String.valueOf(jdoObject);
default:
break;
}
}
}
return null;
}
protected String getPersonDisplayText(Person person) {
return person.getDisplayName();
}
public Image getJDOObjectImage(ObjectID jdoObjectID, Object jdoObject, int spanColIndex)
{
if (jdoObject instanceof Person) {
return spanColIndex == 0
? SharedImages.getSharedImage(PersonRelationPlugin.getDefault(), DefaultPersonRelationTreeLabelProviderDelegatePerson.class)
: null;
}
return null;
}
@Override
public Class<? extends ObjectID> getJDOObjectIDClass() {
return PropertySetID.class;
}
@Override
public Class<?> getJDOObjectClass() {
return Person.class;
}
@Override
public int[][] getJDOObjectColumnSpan(ObjectID jdoObjectID, Object jdoObject) {
if (jdoObjectID instanceof PropertySetID)
return new int[][] { {0, 1} };
return null;
}
}