View Javadoc
1 package net.sourceforge.pmd.util.viewer.gui; 2 3 import net.sourceforge.pmd.ast.Node; 4 import net.sourceforge.pmd.ast.SimpleNode; 5 import net.sourceforge.pmd.util.viewer.gui.menu.ASTNodePopupMenu; 6 import net.sourceforge.pmd.util.viewer.model.ASTModel; 7 import net.sourceforge.pmd.util.viewer.model.ViewerModel; 8 import net.sourceforge.pmd.util.viewer.model.ViewerModelEvent; 9 import net.sourceforge.pmd.util.viewer.model.ViewerModelListener; 10 import net.sourceforge.pmd.util.viewer.util.NLS; 11 12 import javax.swing.BorderFactory; 13 import javax.swing.JPanel; 14 import javax.swing.JPopupMenu; 15 import javax.swing.JScrollPane; 16 import javax.swing.JTree; 17 import javax.swing.event.TreeSelectionEvent; 18 import javax.swing.event.TreeSelectionListener; 19 import javax.swing.tree.TreeNode; 20 import javax.swing.tree.TreePath; 21 import java.awt.BorderLayout; 22 import java.awt.event.MouseAdapter; 23 import java.awt.event.MouseEvent; 24 import java.util.LinkedList; 25 26 27 /*** 28 * tree panel GUI 29 * 30 * @author Boris Gruschko ( boris at gruschko.org ) 31 * @version $Id: ASTPanel.java,v 1.2 2003/09/23 20:51:06 tomcopeland Exp $ 32 */ 33 public class ASTPanel 34 extends JPanel 35 implements ViewerModelListener, TreeSelectionListener 36 { 37 private ViewerModel model; 38 private JTree tree; 39 40 /*** 41 * constructs the panel 42 * 43 * @param model model to attach the panel to 44 */ 45 public ASTPanel( ViewerModel model ) 46 { 47 this.model = model; 48 49 init( ); 50 } 51 52 private void init( ) 53 { 54 model.addViewerModelListener( this ); 55 56 setBorder( 57 BorderFactory.createTitledBorder( 58 BorderFactory.createEtchedBorder( ), NLS.nls( "AST.PANEL.TITLE" ) ) ); 59 60 setLayout( new BorderLayout( ) ); 61 62 tree = new JTree( (TreeNode)null ); 63 64 tree.addTreeSelectionListener( this ); 65 66 tree.addMouseListener( 67 new MouseAdapter( ) 68 { 69 public void mouseReleased( MouseEvent e ) 70 { 71 if ( e.isPopupTrigger( ) ) 72 { 73 TreePath path = 74 tree.getClosestPathForLocation( e.getX( ), e.getY( ) ); 75 tree.setSelectionPath( path ); 76 77 JPopupMenu menu = 78 new ASTNodePopupMenu( 79 model, (SimpleNode)path.getLastPathComponent( ) ); 80 81 menu.show( tree, e.getX( ), e.getY( ) ); 82 } 83 } 84 } ); 85 86 add( new JScrollPane( tree ), BorderLayout.CENTER ); 87 } 88 89 /*** 90 * @see org.gruschko.pmd.viewer.model.ViewerModelListener#viewerModelChanged(org.gruschko.pmd.viewer.model.ViewerModelEvent) 91 */ 92 public void viewerModelChanged( ViewerModelEvent e ) 93 { 94 switch ( e.getReason( ) ) 95 { 96 case ViewerModelEvent.CODE_RECOMPILED : 97 tree.setModel( new ASTModel( model.getRootNode( ) ) ); 98 99 break; 100 101 case ViewerModelEvent.NODE_SELECTED : 102 103 if ( e.getSource( ) != this ) 104 { 105 LinkedList list = new LinkedList( ); 106 107 for ( 108 Node node = (Node)e.getParameter( ); node != null; 109 node = node.jjtGetParent( ) ) 110 list.addFirst( node ); 111 112 TreePath path = new TreePath( list.toArray( ) ); 113 114 tree.setSelectionPath( path ); 115 116 tree.scrollPathToVisible( path ); 117 } 118 119 break; 120 } 121 } 122 123 /*** 124 * @see javax.swing.event.TreeSelectionListener#valueChanged(javax.swing.event.TreeSelectionEvent) 125 */ 126 public void valueChanged( TreeSelectionEvent e ) 127 { 128 model.selectNode( 129 (SimpleNode)e.getNewLeadSelectionPath( ).getLastPathComponent( ), this ); 130 } 131 } 132 133 134 /* 135 * $Log: ASTPanel.java,v $ 136 * Revision 1.2 2003/09/23 20:51:06 tomcopeland 137 * Cleaned up imports 138 * 139 * Revision 1.1 2003/09/23 20:32:42 tomcopeland 140 * Added Boris Gruschko's new AST/XPath viewer 141 * 142 * Revision 1.1 2003/09/24 01:33:03 bgr 143 * moved to a new package 144 * 145 * Revision 1.3 2003/09/24 00:40:35 bgr 146 * evaluation results browsing added 147 * 148 * Revision 1.2 2003/09/23 07:52:16 bgr 149 * menus added 150 * 151 * Revision 1.1 2003/09/22 05:21:54 bgr 152 * initial commit 153 * 154 */

This page was automatically generated by Maven