package net.nightwhistler.ui;
import jedi.option.Option;
import java.util.ArrayList;
import java.util.List;
import static java.util.Collections.unmodifiableList;
import static jedi.functional.FunctionalPrimitives.forEach;
import static net.nightwhistler.pageturner.CollectionUtil.listElement;
/**
* Created by alex on 11/9/14.
*/
public class TreeNode<T extends TreeNode> {
private List<T> children = new ArrayList<>();
public TreeNode() {}
public TreeNode( List<T> children ) {
this.children.addAll( children );
}
public void addChild( T child ) {
this.children.add( child );
}
public boolean hasChildren() {
return ! this.children.isEmpty();
}
public Option<T> getChild( int child ) {
return listElement( children, child );
}
public int getChildCount() {
return children.size();
}
public void addChildren( Iterable<T> children ) {
forEach( children, this::addChild );
}
public List<T> getChildren() {
return unmodifiableList( this.children );
}
}