1 package net.sourceforge.pmd.util.viewer.gui;
2
3 import net.sourceforge.pmd.ast.SimpleNode;
4 import net.sourceforge.pmd.util.viewer.model.ViewerModel;
5 import net.sourceforge.pmd.util.viewer.model.ViewerModelEvent;
6 import net.sourceforge.pmd.util.viewer.model.ViewerModelListener;
7
8 import javax.swing.*;
9 import javax.swing.event.ListSelectionEvent;
10 import javax.swing.event.ListSelectionListener;
11 import java.awt.*;
12 import java.util.Vector;
13
14
15 /***
16 * A panel showing XPath expression evaluation results
17 *
18 * @author Boris Gruschko ( boris at gruschko.org )
19 * @version $Id: EvaluationResultsPanel.java,v 1.3 2004/04/15 18:21:58 tomcopeland Exp $
20 */
21 public class EvaluationResultsPanel
22 extends JPanel
23 implements ViewerModelListener
24 {
25 private ViewerModel model;
26 private JList list;
27
28 /***
29 * constructs the panel
30 *
31 * @param model model to refer to
32 */
33 public EvaluationResultsPanel( ViewerModel model )
34 {
35 super( new BorderLayout( ) );
36
37 this.model = model;
38
39 init( );
40 }
41
42 private void init( )
43 {
44 model.addViewerModelListener( this );
45
46 list = new JList( );
47 list.setSelectionMode( ListSelectionModel.SINGLE_SELECTION );
48
49 list.addListSelectionListener(
50 new ListSelectionListener( )
51 {
52 public void valueChanged( ListSelectionEvent e )
53 {
54 if ( list.getSelectedValue( ) != null )
55 {
56 model.selectNode(
57 (SimpleNode)list.getSelectedValue( ), EvaluationResultsPanel.this );
58 }
59 }
60 } );
61
62 add( new JScrollPane( list ), BorderLayout.CENTER );
63 }
64
65 /***
66 * @see org.gruschko.pmd.viewer.model.ViewerModelListener#viewerModelChanged(org.gruschko.pmd.viewer.model.ViewerModelEvent)
67 */
68 public void viewerModelChanged( ViewerModelEvent e )
69 {
70 switch ( e.getReason( ) )
71 {
72 case ViewerModelEvent.PATH_EXPRESSION_EVALUATED :
73
74 if ( e.getSource( ) != this )
75 {
76 list.setListData( new Vector( model.getLastEvaluationResults( ) ) );
77 }
78
79 break;
80
81 case ViewerModelEvent.CODE_RECOMPILED :
82 list.setListData( new Vector( 0 ) );
83
84 break;
85 }
86 }
87 }
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107