KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > prefuse > data > util > TreeNodeIterator


1 /**
2  * Copyright (c) 2004-2006 Regents of the University of California.
3  * See "license-prefuse.txt" for licensing terms.
4  */

5 package prefuse.data.util;
6
7 import java.util.Iterator JavaDoc;
8
9 import prefuse.data.Node;
10
11 /**
12  * A depth-first iterator over the subtree rooted at given node.
13  *
14  * @author <a HREF="http://jheer.org">jeffrey heer</a>
15  */

16 public class TreeNodeIterator implements Iterator JavaDoc {
17
18     private Node m_node;
19     private Node m_root;
20     
21     /**
22      * Create a new TreeNodeIterator over the given subtree.
23      * @param root the root of the subtree to traverse
24      */

25     public TreeNodeIterator(Node root) {
26         m_root = root;
27         m_node = root;
28     }
29     
30     /**
31      * @see java.util.Iterator#hasNext()
32      */

33     public boolean hasNext() {
34         return m_node != null;
35     }
36
37     /**
38      * @see java.util.Iterator#next()
39      */

40     public Object JavaDoc next() {
41         Node n, c;
42         if ( (c=m_node.getChild(0)) != null ) {
43             // do nothing
44
} else if ( m_node!=m_root && (c=m_node.getNextSibling()) != null ) {
45             // do nothing
46
} else {
47             c = m_node.getParent();
48             while ( c!=m_root && c != null ) {
49                 if ( (n=c.getNextSibling()) != null ) {
50                     c = n;
51                     break;
52                 }
53                 c = c.getParent();
54             }
55             if ( c == m_root )
56                 c = null;
57         }
58         n = m_node;
59         m_node = c;
60         return n;
61     }
62
63     /**
64      * Throws an UnsupportedOperationException
65      * @see java.util.Iterator#remove()
66      */

67     public void remove() {
68         throw new UnsupportedOperationException JavaDoc("Remove not supported");
69     }
70
71 } // end of class TreeNodeIterator
72
Popular Tags