From 47d6dbcecd2f4958ef16d805cbc67ace6755d2a5 Mon Sep 17 00:00:00 2001 From: Jakub Valtar Date: Sun, 17 Apr 2016 00:36:19 +0200 Subject: [PATCH] ASTGen: fix debug tree labels & highlighting --- .../mode/java/pdex/ASTGenerator.java | 29 +++++++++++++++---- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/java/src/processing/mode/java/pdex/ASTGenerator.java b/java/src/processing/mode/java/pdex/ASTGenerator.java index 1b59e063c..2d4321d12 100644 --- a/java/src/processing/mode/java/pdex/ASTGenerator.java +++ b/java/src/processing/mode/java/pdex/ASTGenerator.java @@ -2881,7 +2881,10 @@ public class ASTGenerator { .getLastSelectedPathComponent(); if (tnode.getUserObject() instanceof ASTNode) { - // TODO: highlight ASTNode + ASTNode node = (ASTNode) tnode.getUserObject(); + int startOffset = node.getStartPosition(); + int length = node.getLength(); + astGen.errorCheckerService.highlightJavaRange(startOffset, length); } } }); @@ -2952,7 +2955,22 @@ public class ASTGenerator { protected void initDebugWindow() { debugTreeWindow = new JFrame(); - debugTree = new JTree(); + debugTree = new JTree() { + @Override + public String convertValueToText(Object value, boolean selected, + boolean expanded, boolean leaf, + int row, boolean hasFocus) { + if (value instanceof DefaultMutableTreeNode) { + DefaultMutableTreeNode treeNode = (DefaultMutableTreeNode) value; + Object o = treeNode.getUserObject(); + if (o instanceof ASTNode) { + ASTNode node = (ASTNode) o; + return getNodeAsString(node); + } + } + return super.convertValueToText(value, selected, expanded, leaf, row, hasFocus); + } + }; debugTreeWindow.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); debugTreeWindow.setBounds(new Rectangle(680, 100, 460, 620)); debugTreeWindow.setTitle("AST View - " + editor.getSketch().getName()); @@ -2980,15 +2998,16 @@ public class ASTGenerator { @Override public void valueChanged(TreeSelectionEvent e) { - Messages.log(e.toString()); - if (debugTree.getLastSelectedPathComponent() == null) { return; } DefaultMutableTreeNode tnode = (DefaultMutableTreeNode) debugTree.getLastSelectedPathComponent(); if (tnode.getUserObject() instanceof ASTNode) { - // TODO: highlight ASTNode, print some info maybe + ASTNode node = (ASTNode) tnode.getUserObject(); + int startOffset = node.getStartPosition(); + int length = node.getLength(); + astGen.errorCheckerService.highlightJavaRange(startOffset, length); } }