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 * Panel for the XPath entry and editing 15 * 16 * @author Boris Gruschko ( boris at gruschko.org ) 17 * @version $Id: XPathPanel.java,v 1.9 2005/09/02 19:36:22 tomcopeland Exp $ 18 */ 19 20 public class XPathPanel 21 22 extends JTabbedPane 23 24 implements ViewerModelListener { 25 26 private ViewerModel model; 27 28 private JTextArea xPathArea; 29 30 31 /*** 32 * Constructs the panel 33 * 34 * @param model model to refer to 35 */ 36 37 public XPathPanel(ViewerModel model) { 38 39 super(JTabbedPane.BOTTOM); 40 41 42 this.model = model; 43 44 45 init(); 46 47 } 48 49 50 private void init() { 51 52 model.addViewerModelListener(this); 53 54 55 xPathArea = new JTextArea(); 56 57 58 setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), NLS.nls("XPATH.PANEL.TITLE"))); 59 60 61 add(new JScrollPane(xPathArea), NLS.nls("XPATH.PANEL.EXPRESSION")); 62 63 add(new EvaluationResultsPanel(model), NLS.nls("XPATH.PANEL.RESULTS")); 64 65 66 setPreferredSize(new Dimension(-1, 200)); 67 68 } 69 70 71 /*** 72 * retrieves the XPath expression typed into the text area 73 * 74 * @return XPath expression 75 */ 76 77 public String getXPathExpression() { 78 79 return xPathArea.getText(); 80 81 } 82 83 84 /*** 85 * @see ViewerModelListener#viewerModelChanged(ViewerModelEvent) 86 */ 87 88 public void viewerModelChanged(ViewerModelEvent e) { 89 90 switch (e.getReason()) { 91 92 case ViewerModelEvent.PATH_EXPRESSION_APPENDED: 93 94 95 if (e.getSource() != this) { 96 97 xPathArea.append((String) e.getParameter()); 98 99 } 100 101 102 setSelectedIndex(0); 103 104 105 break; 106 107 108 case ViewerModelEvent.CODE_RECOMPILED: 109 110 setSelectedIndex(0); 111 112 113 break; 114 115 } 116 117 } 118 119 }