/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.esl.util;
import java.util.List;
import java.util.Set;
/**
* This interface defines the relation node.
*/
public interface RelationNode
{
public Object getKey();
public RelationNode getParent();
public boolean isRoot();
public boolean hasParent();
public boolean hasChildren();
public int getChildCount();
public int getTotalChildCount();
public Object getData();
public void setData( Object data );
public List getChildren();
public boolean isAncestor( RelationNode node );
public boolean isAncestorOrSelf( RelationNode node );
public int getLevel();
public boolean isChild( RelationNode node );
public Set findSelectedKeys();
public Set findSelectedNodes();
public Object accept( RelationVisitor visitor );
public RelationNode getRoot();
public RelationNode getNode( Object key );
public boolean isSelected();
public void setSelected( boolean selected );
public void selectAll();
public void selectLevels( int levels );
public void clearSelected();
}