View Javadoc

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