Clover coverage report - PMD - 3.3
Coverage timestamp: Thu Sep 15 2005 17:59:57 EDT
file stats: LOC: 104   Methods: 5
NCLOC: 70   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
ASTPanel.java 0% 0% 0% 0%
coverage
 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.9 2005/09/02 19:36:22 tomcopeland Exp $
 27    */
 28   
 29    public class ASTPanel
 30    extends JPanel
 31    implements ViewerModelListener, TreeSelectionListener {
 32    private ViewerModel model;
 33    private JTree tree;
 34   
 35    /**
 36    * constructs the panel
 37    *
 38    * @param model model to attach the panel to
 39    */
 40  0 public ASTPanel(ViewerModel model) {
 41  0 this.model = model;
 42   
 43  0 init();
 44    }
 45   
 46  0 private void init() {
 47  0 model.addViewerModelListener(this);
 48   
 49  0 setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), NLS.nls("AST.PANEL.TITLE")));
 50   
 51  0 setLayout(new BorderLayout());
 52   
 53  0 tree = new JTree((TreeNode) null);
 54   
 55  0 tree.addTreeSelectionListener(this);
 56   
 57  0 tree.addMouseListener(new MouseAdapter() {
 58  0 public void mouseReleased(MouseEvent e) {
 59  0 if (e.isPopupTrigger()) {
 60  0 TreePath path =
 61    tree.getClosestPathForLocation(e.getX(), e.getY());
 62  0 tree.setSelectionPath(path);
 63   
 64  0 JPopupMenu menu =
 65    new ASTNodePopupMenu(model, (SimpleNode) path.getLastPathComponent());
 66   
 67  0 menu.show(tree, e.getX(), e.getY());
 68    }
 69    }
 70    });
 71   
 72  0 add(new JScrollPane(tree), BorderLayout.CENTER);
 73    }
 74   
 75    /**
 76    * @see ViewerModelListener#viewerModelChanged(ViewerModelEvent)
 77    */
 78  0 public void viewerModelChanged(ViewerModelEvent e) {
 79  0 switch (e.getReason()) {
 80  0 case ViewerModelEvent.CODE_RECOMPILED:
 81  0 tree.setModel(new ASTModel(model.getRootNode()));
 82  0 break;
 83  0 case ViewerModelEvent.NODE_SELECTED:
 84  0 if (e.getSource() != this) {
 85  0 LinkedList list = new LinkedList();
 86  0 for (
 87  0 Node node = (Node) e.getParameter(); node != null;
 88    node = node.jjtGetParent())
 89  0 list.addFirst(node);
 90  0 TreePath path = new TreePath(list.toArray());
 91  0 tree.setSelectionPath(path);
 92  0 tree.scrollPathToVisible(path);
 93    }
 94  0 break;
 95    }
 96    }
 97   
 98    /**
 99    * @see javax.swing.event.TreeSelectionListener#valueChanged(javax.swing.event.TreeSelectionEvent)
 100    */
 101  0 public void valueChanged(TreeSelectionEvent e) {
 102  0 model.selectNode((SimpleNode) e.getNewLeadSelectionPath().getLastPathComponent(), this);
 103    }
 104    }