Clover Coverage Report - PMD-3.8
Coverage timestamp: Sat May 5 2007 15:33:30 EST
28   91   6   5.6
6   65   0.36   5
5     2  
1    
 
  ASTPanel       Line # 29 28 6 0% 0.0
 
No Tests
 
1    package net.sourceforge.pmd.util.viewer.gui;
2   
3    import net.sourceforge.pmd.ast.Node;
4    import net.sourceforge.pmd.ast.SimpleNode;
5    import net.sourceforge.pmd.util.viewer.gui.menu.ASTNodePopupMenu;
6    import net.sourceforge.pmd.util.viewer.model.ASTModel;
7    import net.sourceforge.pmd.util.viewer.model.ViewerModel;
8    import net.sourceforge.pmd.util.viewer.model.ViewerModelEvent;
9    import net.sourceforge.pmd.util.viewer.model.ViewerModelListener;
10    import net.sourceforge.pmd.util.viewer.util.NLS;
11   
12    import javax.swing.*;
13    import javax.swing.event.TreeSelectionEvent;
14    import javax.swing.event.TreeSelectionListener;
15    import javax.swing.tree.TreeNode;
16    import javax.swing.tree.TreePath;
17    import java.awt.BorderLayout;
18    import java.awt.event.MouseAdapter;
19    import java.awt.event.MouseEvent;
20    import java.util.LinkedList;
21   
22    /**
23    * tree panel GUI
24    *
25    * @author Boris Gruschko ( boris at gruschko.org )
26    * @version $Id: ASTPanel.java,v 1.11 2006/02/10 14:15:29 tomcopeland Exp $
27    */
28   
 
29    public class ASTPanel extends JPanel implements ViewerModelListener, TreeSelectionListener {
30    private ViewerModel model;
31    private JTree tree;
32   
33    /**
34    * constructs the panel
35    *
36    * @param model model to attach the panel to
37    */
 
38  0 toggle public ASTPanel(ViewerModel model) {
39  0 this.model = model;
40  0 init();
41    }
42   
 
43  0 toggle private void init() {
44  0 model.addViewerModelListener(this);
45  0 setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), NLS.nls("AST.PANEL.TITLE")));
46  0 setLayout(new BorderLayout());
47  0 tree = new JTree((TreeNode) null);
48  0 tree.addTreeSelectionListener(this);
49  0 tree.addMouseListener(new MouseAdapter() {
 
50  0 toggle public void mouseReleased(MouseEvent e) {
51  0 if (e.isPopupTrigger()) {
52  0 TreePath path = tree.getClosestPathForLocation(e.getX(), e.getY());
53  0 tree.setSelectionPath(path);
54  0 JPopupMenu menu = new ASTNodePopupMenu(model, (SimpleNode) path.getLastPathComponent());
55  0 menu.show(tree, e.getX(), e.getY());
56    }
57    }
58    });
59   
60  0 add(new JScrollPane(tree), BorderLayout.CENTER);
61    }
62   
63    /**
64    * @see ViewerModelListener#viewerModelChanged(ViewerModelEvent)
65    */
 
66  0 toggle public void viewerModelChanged(ViewerModelEvent e) {
67  0 switch (e.getReason()) {
68  0 case ViewerModelEvent.CODE_RECOMPILED:
69  0 tree.setModel(new ASTModel(model.getRootNode()));
70  0 break;
71  0 case ViewerModelEvent.NODE_SELECTED:
72  0 if (e.getSource() != this) {
73  0 LinkedList list = new LinkedList();
74  0 for (Node n = (Node) e.getParameter(); n != null; n = n.jjtGetParent()) {
75  0 list.addFirst(n);
76    }
77  0 TreePath path = new TreePath(list.toArray());
78  0 tree.setSelectionPath(path);
79  0 tree.scrollPathToVisible(path);
80    }
81  0 break;
82    }
83    }
84   
85    /**
86    * @see javax.swing.event.TreeSelectionListener#valueChanged(javax.swing.event.TreeSelectionEvent)
87    */
 
88  0 toggle public void valueChanged(TreeSelectionEvent e) {
89  0 model.selectNode((SimpleNode) e.getNewLeadSelectionPath().getLastPathComponent(), this);
90    }
91    }