View Javadoc

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  * $Log: ASTModel.java,v $
120  * Revision 1.2  2003/09/23 20:51:06  tomcopeland
121  * Cleaned up imports
122  *
123  * Revision 1.1  2003/09/23 20:32:42  tomcopeland
124  * Added Boris Gruschko's new AST/XPath viewer
125  *
126  * Revision 1.1  2003/09/24 01:33:03  bgr
127  * moved to a new package
128  *
129  * Revision 1.1  2003/09/24 00:40:35  bgr
130  * evaluation results browsing added
131  *
132  */