1 package net.sourceforge.pmd.util.viewer.model;
2
3 import net.sourceforge.pmd.ast.SimpleNode;
4
5 import javax.swing.tree.TreeNode;
6 import java.util.ArrayList;
7 import java.util.Collections;
8 import java.util.Enumeration;
9 import java.util.List;
10
11
12 /***
13 * provides the adapter for the tree model
14 *
15 * @author Boris Gruschko ( boris at gruschko.org )
16 * @version $Id: SimpleNodeTreeNodeAdapter.java,v 1.2 2003/09/23 20:51:06 tomcopeland Exp $
17 */
18 public class SimpleNodeTreeNodeAdapter
19 implements TreeNode
20 {
21 private SimpleNode node;
22 private List children;
23 private SimpleNodeTreeNodeAdapter parent;
24
25 /***
26 * constructs the node
27 *
28 * @param node underlying AST's node
29 */
30 public SimpleNodeTreeNodeAdapter(
31 SimpleNodeTreeNodeAdapter parent, SimpleNode node )
32 {
33 this.parent = parent;
34 this.node = node;
35 }
36
37 /***
38 * retrieves the underlying node
39 *
40 * @return AST node
41 */
42 public SimpleNode getSimpleNode( )
43 {
44 return node;
45 }
46
47 /***
48 * @see javax.swing.tree.TreeNode#getChildAt(int)
49 */
50 public TreeNode getChildAt( int childIndex )
51 {
52 checkChildren( );
53
54 return (TreeNode)children.get( childIndex );
55 }
56
57 /***
58 * @see javax.swing.tree.TreeNode#getChildCount()
59 */
60 public int getChildCount( )
61 {
62 checkChildren( );
63
64 return children.size( );
65 }
66
67 /***
68 * @see javax.swing.tree.TreeNode#getParent()
69 */
70 public TreeNode getParent( )
71 {
72 return parent;
73 }
74
75 /***
76 * @see javax.swing.tree.TreeNode#getIndex(javax.swing.tree.TreeNode)
77 */
78 public int getIndex( TreeNode node )
79 {
80 checkChildren( );
81
82 return children.indexOf( node );
83 }
84
85 /***
86 * @see javax.swing.tree.TreeNode#getAllowsChildren()
87 */
88 public boolean getAllowsChildren( )
89 {
90 return true;
91 }
92
93 /***
94 * @see javax.swing.tree.TreeNode#isLeaf()
95 */
96 public boolean isLeaf( )
97 {
98 checkChildren( );
99
100 return children.size( ) == 0;
101 }
102
103 /***
104 * @see javax.swing.tree.TreeNode#children()
105 */
106 public Enumeration children( )
107 {
108 return Collections.enumeration( children );
109 }
110
111 /***
112 * checks the children and creates them if neccessary
113 */
114 private void checkChildren( )
115 {
116 if ( children == null )
117 {
118 children = new ArrayList( node.jjtGetNumChildren( ) );
119
120 for ( int i = 0; i < node.jjtGetNumChildren( ); i++ )
121 {
122 children.add(
123 new SimpleNodeTreeNodeAdapter(
124 this, (SimpleNode)node.jjtGetChild( i ) ) );
125 }
126 }
127 }
128
129 /***
130 * @see java.lang.Object#toString()
131 */
132 public String toString( )
133 {
134 return node.toString( );
135 }
136 }
137
138
139 /*
140 * $Log: SimpleNodeTreeNodeAdapter.java,v $
141 * Revision 1.2 2003/09/23 20:51:06 tomcopeland
142 * Cleaned up imports
143 *
144 * Revision 1.1 2003/09/23 20:32:42 tomcopeland
145 * Added Boris Gruschko's new AST/XPath viewer
146 *
147 * Revision 1.1 2003/09/24 01:33:03 bgr
148 * moved to a new package
149 *
150 * Revision 1.1 2003/09/22 05:21:54 bgr
151 * initial commit
152 *
153 */
This page was automatically generated by Maven