| 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 |
|
|
| 24 |
|
|
| 25 |
|
@author |
| 26 |
|
@version |
| 27 |
|
|
| 28 |
|
|
|
|
|
| 0% |
Uncovered Elements: 39 (39) |
Complexity: 6 |
Complexity Density: 0.36 |
|
| 29 |
|
public class ASTPanel extends JPanel implements ViewerModelListener, TreeSelectionListener { |
| 30 |
|
private ViewerModel model; |
| 31 |
|
private JTree tree; |
| 32 |
|
|
| 33 |
|
|
| 34 |
|
|
| 35 |
|
|
| 36 |
|
@param |
| 37 |
|
|
|
|
|
| 0% |
Uncovered Elements: 2 (2) |
Complexity: 1 |
Complexity Density: 0.5 |
|
| 38 |
0
|
public ASTPanel(ViewerModel model) {... |
| 39 |
0
|
this.model = model; |
| 40 |
0
|
init(); |
| 41 |
|
} |
| 42 |
|
|
|
|
|
| 0% |
Uncovered Elements: 7 (7) |
Complexity: 1 |
Complexity Density: 0.14 |
|
| 43 |
0
|
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() { |
|
|
|
| 0% |
Uncovered Elements: 7 (7) |
Complexity: 2 |
Complexity Density: 0.4 |
|
| 50 |
0
|
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 |
| 65 |
|
|
|
|
|
| 0% |
Uncovered Elements: 17 (17) |
Complexity: 5 |
Complexity Density: 0.38 |
|
| 66 |
0
|
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 |
| 87 |
|
|
|
|
|
| 0% |
Uncovered Elements: 1 (1) |
Complexity: 1 |
Complexity Density: 1 |
|
| 88 |
0
|
public void valueChanged(TreeSelectionEvent e) {... |
| 89 |
0
|
model.selectNode((SimpleNode) e.getNewLeadSelectionPath().getLastPathComponent(), this); |
| 90 |
|
} |
| 91 |
|
} |