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.BorderLayout; 12 import java.util.Vector; 13 14 /*** 15 * A panel showing XPath expression evaluation results 16 * 17 * @author Boris Gruschko ( boris at gruschko.org ) 18 * @version $Id: EvaluationResultsPanel.java,v 1.9 2005/09/02 19:36:22 tomcopeland Exp $ 19 */ 20 public class EvaluationResultsPanel 21 extends JPanel 22 implements ViewerModelListener { 23 private ViewerModel model; 24 private JList list; 25 26 /*** 27 * constructs the panel 28 * 29 * @param model model to refer to 30 */ 31 public EvaluationResultsPanel(ViewerModel model) { 32 super(new BorderLayout()); 33 34 this.model = model; 35 36 init(); 37 } 38 39 private void init() { 40 model.addViewerModelListener(this); 41 42 list = new JList(); 43 list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 44 45 list.addListSelectionListener(new ListSelectionListener() { 46 public void valueChanged(ListSelectionEvent e) { 47 if (list.getSelectedValue() != null) { 48 model.selectNode((SimpleNode) list.getSelectedValue(), EvaluationResultsPanel.this); 49 } 50 } 51 }); 52 53 add(new JScrollPane(list), BorderLayout.CENTER); 54 } 55 56 /*** 57 * @see ViewerModelListener#viewerModelChanged(ViewerModelEvent) 58 */ 59 public void viewerModelChanged(ViewerModelEvent e) { 60 switch (e.getReason()) { 61 case ViewerModelEvent.PATH_EXPRESSION_EVALUATED: 62 63 if (e.getSource() != this) { 64 list.setListData(new Vector(model.getLastEvaluationResults())); 65 } 66 67 break; 68 69 case ViewerModelEvent.CODE_RECOMPILED: 70 list.setListData(new Vector(0)); 71 72 break; 73 } 74 } 75 }