package net.sourceforge.pmd.util.viewer.model; import net.sourceforge.pmd.ast.SimpleNode; import javax.swing.event.TreeModelEvent; import javax.swing.event.TreeModelListener; import javax.swing.tree.TreeModel; import javax.swing.tree.TreePath; import java.util.Vector; /** * Model for the AST Panel Tree component * * @author Boris Gruschko ( boris at gruschko.org ) * @version $Id: ASTModel.java,v 1.2 2003/09/23 20:51:06 tomcopeland Exp $ */ public class ASTModel implements TreeModel { private SimpleNode root; private Vector listeners = new Vector( 1 ); /** * creates the tree model * * @param root tree's root */ public ASTModel( SimpleNode root ) { this.root = root; } /** * @see javax.swing.tree.TreeModel#getChild(java.lang.Object, int) */ public Object getChild( Object parent, int index ) { return ( (SimpleNode)parent ).jjtGetChild( index ); } /** * @see javax.swing.tree.TreeModel#getChildCount(java.lang.Object) */ public int getChildCount( Object parent ) { return ( (SimpleNode)parent ).jjtGetNumChildren( ); } /** * @see javax.swing.tree.TreeModel#getIndexOfChild(java.lang.Object, * java.lang.Object) */ public int getIndexOfChild( Object parent, Object child ) { SimpleNode node = ( (SimpleNode)parent ); for ( int i = 0; i < node.jjtGetNumChildren( ); i++ ) if ( node.jjtGetChild( i ).equals( child ) ) { return i; } return -1; } /** * @see javax.swing.tree.TreeModel#isLeaf(java.lang.Object) */ public boolean isLeaf( Object node ) { return ( (SimpleNode)node ).jjtGetNumChildren( ) == 0; } /** * @see javax.swing.tree.TreeModel#getRoot() */ public Object getRoot( ) { return root; } /** * @see javax.swing.tree.TreeModel#valueForPathChanged(javax.swing.tree.TreePath, * java.lang.Object) */ public void valueForPathChanged( TreePath path, Object newValue ) { throw new UnsupportedOperationException( ); } /** * @see javax.swing.tree.TreeModel#addTreeModelListener(javax.swing.event.TreeModelListener) */ public void addTreeModelListener( TreeModelListener l ) { listeners.add( l ); } /** * @see javax.swing.tree.TreeModel#removeTreeModelListener(javax.swing.event.TreeModelListener) */ public void removeTreeModelListener( TreeModelListener l ) { listeners.remove( l ); } protected void fireTreeModelEvent( TreeModelEvent e ) { for ( int i = 0; i < listeners.size( ); i++ ) { ( (TreeModelListener)listeners.elementAt( i ) ).treeNodesChanged( e ); } } } /* * $Log: ASTModel.java,v $ * Revision 1.2 2003/09/23 20:51:06 tomcopeland * Cleaned up imports * * Revision 1.1 2003/09/23 20:32:42 tomcopeland * Added Boris Gruschko's new AST/XPath viewer * * Revision 1.1 2003/09/24 01:33:03 bgr * moved to a new package * * Revision 1.1 2003/09/24 00:40:35 bgr * evaluation results browsing added * */