View Javadoc

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  }