01 package net.sourceforge.pmd.util.viewer.gui;
02
03
04 import net.sourceforge.pmd.util.viewer.model.ViewerModel;
05 import net.sourceforge.pmd.util.viewer.model.ViewerModelEvent;
06 import net.sourceforge.pmd.util.viewer.model.ViewerModelListener;
07 import net.sourceforge.pmd.util.viewer.util.NLS;
08
09 import javax.swing.*;
10 import java.awt.Dimension;
11
12
13 /**
14 * Panel for the XPath entry and editing
15 *
16 * @author Boris Gruschko ( boris at gruschko.org )
17 * @version $Id: XPathPanel.java 6275 2008-06-25 01:21:49Z rgustav $
18 */
19
20 public class XPathPanel extends JTabbedPane implements ViewerModelListener {
21 private ViewerModel model;
22 private JTextArea xPathArea;
23
24 /**
25 * Constructs the panel
26 *
27 * @param model model to refer to
28 */
29 public XPathPanel(ViewerModel model) {
30 super(JTabbedPane.BOTTOM);
31 this.model = model;
32 init();
33 }
34
35 private void init() {
36 model.addViewerModelListener(this);
37 xPathArea = new JTextArea();
38 setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), NLS.nls("XPATH.PANEL.TITLE")));
39 add(new JScrollPane(xPathArea), NLS.nls("XPATH.PANEL.EXPRESSION"));
40 add(new EvaluationResultsPanel(model), NLS.nls("XPATH.PANEL.RESULTS"));
41 setPreferredSize(new Dimension(-1, 200));
42 }
43
44 public String getXPathExpression() {
45 return xPathArea.getText();
46 }
47
48 /**
49 * @see ViewerModelListener#viewerModelChanged(ViewerModelEvent)
50 */
51 public void viewerModelChanged(ViewerModelEvent e) {
52 switch (e.getReason()) {
53 case ViewerModelEvent.PATH_EXPRESSION_APPENDED:
54 if (e.getSource() != this) {
55 xPathArea.append((String) e.getParameter());
56 }
57 setSelectedIndex(0);
58 break;
59 case ViewerModelEvent.CODE_RECOMPILED:
60 setSelectedIndex(0);
61 break;
62 default:
63 // Do nothing
64 break;
65 }
66 }
67 }
|