// Eine einfache Implementation des TreeNodes. Der MyNode besitzt ein Array der die Childs speichert.
// Parent = Elternknoten (auch Vater- oder Mutterknoten)
// Child = Unterknoten
public class MyNode implements TreeNode{
private MyNode parent; // Der Parent-Node dieses Nodes
private MyNode[] childs; // Die Child-Nodes dieses Nodes
// Konstruktor
public MyNode( MyNode parent, MyNode[] childs ){
this.parent = parent;
this.childs = childs;
}
// Liefert eine Enumeration aller Childs dieses Nodes. Dazu wird eine anonyme Klasse verwendet.
public Enumeration children(){
return new Enumeration(){
private int index = 0; // Der aktuelle Index der Enumeration. Gibt an, welcher Node als nächster zurückgegeben wird.
// Gibt an, ob die Enumeration noch mehr Elemente besitzt.
public boolean hasMoreElements(){
return index < childs.length;
}
// Gibt das nächste Element dieser Enumeration zurük
public Object nextElement(){
return childs[ index++ ];
}
}
}
// Gibt an, ob dieser Node childs haben könnte.
public boolean getAllowsChildren(){
return true;
}
// Gibt das Child mit dem angegebenen Index zurück
public TreeNode getChildAt(int childIndex){
return childs[ childIndex ];
}
// Gibt die Anzahl Childs zurück
public int getChildCount(){
return childs.length;
}
// Gibt den Index dieses Childs zurück.
public int getIndex(TreeNode node){
for( int i = 0, n = childs.length; i<n; i++ )
if( childs[i] == node )
return i;
return -1;
}
// Gibt den Parent dieses Nodes zurück
public TreeNode getParent(){
return parent;
}
// Gibt an, ob dieser Node ein Leaf ist. Das ist genau dann true, wenn der Node keine Childs besitzt.
public boolean isLeaf(){
return childs.length == 0;
}
}