1 package net.sourceforge.pmd.util.viewer.gui;
2
3
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 import net.sourceforge.pmd.util.viewer.util.NLS;
8
9 import javax.swing.*;
10 import java.awt.Dimension;
11
12
13
14
15
16
17
18
19
20 public class XPathPanel extends JTabbedPane implements ViewerModelListener {
21 private ViewerModel model;
22 private JTextArea xPathArea;
23
24
25
26
27
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
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
64 break;
65 }
66 }
67 }