1 package net.sourceforge.pmd.util.viewer.model;
2
3 import net.sourceforge.pmd.ast.SimpleNode;
4
5 import javax.swing.event.TreeModelEvent;
6 import javax.swing.event.TreeModelListener;
7 import javax.swing.tree.TreeModel;
8 import javax.swing.tree.TreePath;
9 import java.util.Vector;
10
11
12 /***
13 * Model for the AST Panel Tree component
14 *
15 * @author Boris Gruschko ( boris at gruschko.org )
16 * @version $Id: ASTModel.java,v 1.2 2003/09/23 20:51:06 tomcopeland Exp $
17 */
18 public class ASTModel
19 implements TreeModel
20 {
21 private SimpleNode root;
22 private Vector listeners = new Vector( 1 );
23
24 /***
25 * creates the tree model
26 *
27 * @param root tree's root
28 */
29 public ASTModel( SimpleNode root )
30 {
31 this.root = root;
32 }
33
34 /***
35 * @see javax.swing.tree.TreeModel#getChild(java.lang.Object, int)
36 */
37 public Object getChild( Object parent, int index )
38 {
39 return ( (SimpleNode)parent ).jjtGetChild( index );
40 }
41
42 /***
43 * @see javax.swing.tree.TreeModel#getChildCount(java.lang.Object)
44 */
45 public int getChildCount( Object parent )
46 {
47 return ( (SimpleNode)parent ).jjtGetNumChildren( );
48 }
49
50 /***
51 * @see javax.swing.tree.TreeModel#getIndexOfChild(java.lang.Object,
52 * java.lang.Object)
53 */
54 public int getIndexOfChild( Object parent, Object child )
55 {
56 SimpleNode node = ( (SimpleNode)parent );
57
58 for ( int i = 0; i < node.jjtGetNumChildren( ); i++ )
59 if ( node.jjtGetChild( i ).equals( child ) )
60 {
61 return i;
62 }
63
64 return -1;
65 }
66
67 /***
68 * @see javax.swing.tree.TreeModel#isLeaf(java.lang.Object)
69 */
70 public boolean isLeaf( Object node )
71 {
72 return ( (SimpleNode)node ).jjtGetNumChildren( ) == 0;
73 }
74
75 /***
76 * @see javax.swing.tree.TreeModel#getRoot()
77 */
78 public Object getRoot( )
79 {
80 return root;
81 }
82
83 /***
84 * @see javax.swing.tree.TreeModel#valueForPathChanged(javax.swing.tree.TreePath,
85 * java.lang.Object)
86 */
87 public void valueForPathChanged( TreePath path, Object newValue )
88 {
89 throw new UnsupportedOperationException( );
90 }
91
92 /***
93 * @see javax.swing.tree.TreeModel#addTreeModelListener(javax.swing.event.TreeModelListener)
94 */
95 public void addTreeModelListener( TreeModelListener l )
96 {
97 listeners.add( l );
98 }
99
100 /***
101 * @see javax.swing.tree.TreeModel#removeTreeModelListener(javax.swing.event.TreeModelListener)
102 */
103 public void removeTreeModelListener( TreeModelListener l )
104 {
105 listeners.remove( l );
106 }
107
108 protected void fireTreeModelEvent( TreeModelEvent e )
109 {
110 for ( int i = 0; i < listeners.size( ); i++ )
111 {
112 ( (TreeModelListener)listeners.elementAt( i ) ).treeNodesChanged( e );
113 }
114 }
115 }
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132