package org.nightlabs.jfire.personrelation.ui.tree;
import java.util.Collection;
import java.util.Map;
import java.util.Set;
import org.nightlabs.jdo.ObjectID;
import org.nightlabs.jfire.jdo.notification.TreeNodeMultiParentResolver;
import org.nightlabs.jfire.prop.id.PropertySetID;
import org.nightlabs.progress.ProgressMonitor;
/**
* A delegate allowing to populate additional tree nodes into the {@link PersonRelationTree}.
* <p>
* It's recommended to subclass {@link AbstractPersonRelationTreeControllerDelegate} instead
* of directly implementing this interface.
* </p>
*
* @author marco schulze - marco at nightlabs dot de
*/
public interface IPersonRelationTreeControllerDelegate
{
Map<ObjectID, Long> retrieveChildCount(Set<? extends PersonRelationTreeNode> parentNodes, Set<ObjectID> parentIDs, ProgressMonitor monitor);
Collection<?> retrieveJDOObjects(Set<ObjectID> objectIDs, ProgressMonitor monitor);
Collection<? extends ObjectID> retrieveChildObjectIDs(PersonRelationTreeNode parentNode, ProgressMonitor monitor);
Collection<Class<? extends Object>> getJDOObjectClasses();
TreeNodeMultiParentResolver getPersonRelationParentResolverDelegate();
ObjectID getJDOObjectID(Object jdoObject);
void setRootPersonIDs(Collection<PropertySetID> rootPersonIDs);
}