1 package net.sourceforge.pmd.util.viewer.gui;
2
3 import net.sourceforge.pmd.util.viewer.model.ViewerModel;
4 import net.sourceforge.pmd.util.viewer.model.ViewerModelEvent;
5 import net.sourceforge.pmd.util.viewer.model.ViewerModelListener;
6 import net.sourceforge.pmd.util.viewer.util.NLS;
7
8 import javax.swing.*;
9 import java.awt.*;
10
11
12 /***
13 * Panel for the XPath entry and editing
14 *
15 * @author Boris Gruschko ( boris at gruschko.org )
16 * @version $Id: XPathPanel.java,v 1.3 2004/04/15 18:21:58 tomcopeland Exp $
17 */
18 public class XPathPanel
19 extends JTabbedPane
20 implements ViewerModelListener
21 {
22 private ViewerModel model;
23 private JTextArea xPathArea;
24
25 /***
26 * Constructs the panel
27 *
28 * @param model model to refer to
29 */
30 public XPathPanel( ViewerModel model )
31 {
32 super( JTabbedPane.BOTTOM );
33
34 this.model = model;
35
36 init( );
37 }
38
39 private void init( )
40 {
41 model.addViewerModelListener( this );
42
43 xPathArea = new JTextArea( );
44
45 setBorder(
46 BorderFactory.createTitledBorder(
47 BorderFactory.createEtchedBorder( ), NLS.nls( "XPATH.PANEL.TITLE" ) ) );
48
49 add( new JScrollPane( xPathArea ), NLS.nls( "XPATH.PANEL.EXPRESSION" ) );
50 add( new EvaluationResultsPanel( model ), NLS.nls( "XPATH.PANEL.RESULTS" ) );
51
52 setPreferredSize( new Dimension( -1, 200 ) );
53 }
54
55 /***
56 * retrieves the XPath expression typed into the text area
57 *
58 * @return XPath expression
59 */
60 public String getXPathExpression( )
61 {
62 return xPathArea.getText( );
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_APPENDED :
73
74 if ( e.getSource( ) != this )
75 {
76 xPathArea.append( (String)e.getParameter( ) );
77 }
78
79 setSelectedIndex( 0 );
80
81 break;
82
83 case ViewerModelEvent.CODE_RECOMPILED :
84 setSelectedIndex( 0 );
85
86 break;
87 }
88 }
89 }
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115