From a2cf09f7fe26d7107030788fa480c81a6a439dde Mon Sep 17 00:00:00 2001 From: Manindra Moharana Date: Tue, 18 Jun 2013 02:03:45 +0530 Subject: [PATCH] Sketch Outline Tool like thing implemented temporarily. Should help me see things clearly. --- .../mode/experimental/ASTGenerator.java | 19 +++++++++++++++++-- .../mode/experimental/ASTNodeWrapper.java | 5 ++++- .../experimental/ErrorCheckerService.java | 17 ++++++++++------- 3 files changed, 31 insertions(+), 10 deletions(-) diff --git a/pdex/src/processing/mode/experimental/ASTGenerator.java b/pdex/src/processing/mode/experimental/ASTGenerator.java index 8f22b45bf..6afc450d4 100644 --- a/pdex/src/processing/mode/experimental/ASTGenerator.java +++ b/pdex/src/processing/mode/experimental/ASTGenerator.java @@ -131,6 +131,7 @@ public class ASTGenerator { //loadJars(); //addCompletionPopupListner(); + addTreeListner(); } private DefaultMutableTreeNode buildAST(String source, CompilationUnit cu) { @@ -1101,6 +1102,7 @@ public class ASTGenerator { @Override public void valueChanged(TreeSelectionEvent e) { + System.out.println(e); SwingWorker worker = new SwingWorker() { @Override @@ -1109,10 +1111,23 @@ public class ASTGenerator { } protected void done() { + if(jtree + .getLastSelectedPathComponent() == null){ + return; + } DefaultMutableTreeNode tnode = (DefaultMutableTreeNode) jtree - .getLastSelectedPathComponent(); - ASTNodeWrapper awrap = (ASTNodeWrapper) tnode.getUserObject(); + .getLastSelectedPathComponent(); + if(tnode.getUserObject() == null){ + return; + } + if (tnode.getUserObject() instanceof ASTNodeWrapper) { + // 3 friggin casts. Javaaargh. + ASTNodeWrapper awrap = (ASTNodeWrapper) tnode.getUserObject(); + int offsets[] = awrap.getPDECodeOffsets(errorCheckerService); + ErrorCheckerService.scrollToErrorLine(editor, offsets[0], + offsets[1]); + } } }; worker.execute(); diff --git a/pdex/src/processing/mode/experimental/ASTNodeWrapper.java b/pdex/src/processing/mode/experimental/ASTNodeWrapper.java index 7b2b161a3..26bfaeaca 100644 --- a/pdex/src/processing/mode/experimental/ASTNodeWrapper.java +++ b/pdex/src/processing/mode/experimental/ASTNodeWrapper.java @@ -66,9 +66,12 @@ public class ASTNodeWrapper { * * @param ecs * - ErrorCheckerService instance + * @return int[0] - tab number, int[1] - line number in the int[0] tab, int[2] + * - line start offset, int[3] - offset from line start int[2] and + * int[3] are on TODO */ public int[] getPDECodeOffsets(ErrorCheckerService ecs) { - return ecs.JavaToPdeOffsets(lineNumber, node.getStartPosition()); + return ecs.JavaToPdeOffsets(lineNumber + 1, node.getStartPosition()); } public String toString() { diff --git a/pdex/src/processing/mode/experimental/ErrorCheckerService.java b/pdex/src/processing/mode/experimental/ErrorCheckerService.java index 4335da973..6e0f8d494 100644 --- a/pdex/src/processing/mode/experimental/ErrorCheckerService.java +++ b/pdex/src/processing/mode/experimental/ErrorCheckerService.java @@ -265,11 +265,12 @@ public class ErrorCheckerService implements Runnable{ lastTimeStamp = System.currentTimeMillis(); try { sourceCode = preprocessCode(editor.getSketch().getMainProgram()); - + syntaxCheck(); - System.err.println(editor.getSketch().getName()+ "1 MCO " + mainClassOffset); + System.out.println(editor.getSketch().getName() + "1 MCO " + + mainClassOffset); // No syntax errors, proceed for compilation check, Stage 2. - + if (problems.length == 0 && editor.compilationCheckEnabled) { //mainClassOffset++; // just a hack. astGenerator.buildAST(cu); @@ -283,10 +284,10 @@ public class ErrorCheckerService implements Runnable{ // System.out.println(sourceCode); // System.out.println("--------------------------"); compileCheck(); - System.err.println(editor.getSketch().getName()+ "2 MCO " + mainClassOffset); + System.out.println(editor.getSketch().getName() + "2 MCO " + + mainClassOffset); } - updateErrorTable(); editor.updateErrorBar(problemsList); updateEditorStatus(); @@ -734,7 +735,7 @@ public class ErrorCheckerService implements Runnable{ * @param offset * - offset from the start of the 'line' * @return int[0] - tab number, int[1] - line number in the int[0] tab, int[2] - * - line start offset, int[3] - offset from line start int[2] and + * - line start offset, int[3] - offset from line start. int[2] and * int[3] are on TODO */ public int[] JavaToPdeOffsets(int line, int offset){ @@ -1019,7 +1020,9 @@ public class ErrorCheckerService implements Runnable{ mainClassOffset++; } } - if(staticMode) mainClassOffset++; + if(staticMode) { + mainClassOffset++; + } //mainClassOffset += 2; // Handle unicode characters sourceAlt = substituteUnicode(sourceAlt);