From af7d84b95b8b185365d8a9d0d09dbab9239f2712 Mon Sep 17 00:00:00 2001 From: Manindra Moharana Date: Tue, 10 Jun 2014 02:12:07 +0530 Subject: [PATCH] moar utility methods --- .../mode/experimental/ASTGenerator.java | 13 +++++++++++-- .../mode/experimental/ASTNodeWrapper.java | 19 ++++++++++++++++++- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/pdex/src/processing/mode/experimental/ASTGenerator.java b/pdex/src/processing/mode/experimental/ASTGenerator.java index fd0e04770..f97057525 100644 --- a/pdex/src/processing/mode/experimental/ASTGenerator.java +++ b/pdex/src/processing/mode/experimental/ASTGenerator.java @@ -1189,12 +1189,21 @@ public class ASTGenerator { return candidates; } + public String getPDESourceCodeLine(int javaLineNumber) { + int res[] = errorCheckerService + .calculateTabIndexAndLineNumber(javaLineNumber); + if (res != null) { + return errorCheckerService.getPDECodeAtLine(res[0], res[1]); + } + return null; + } + /** * Returns the java source code line at the given line number * @param javaLineNumber * @return */ - public String getJavaSourceCodeline(int javaLineNumber) { + public String getJavaSourceCodeLine(int javaLineNumber) { try { PlainDocument javaSource = new PlainDocument(); javaSource.insertString(0, errorCheckerService.sourceCode, null); @@ -1638,7 +1647,7 @@ public class ASTGenerator { if (lineNode != null) { String pdeCodeLine = errorCheckerService.getPDECodeAtLine(editor .getSketch().getCurrentCodeIndex(), lineNumber); - String javaCodeLine = getJavaSourceCodeline(pdeLineNumber); + String javaCodeLine = getJavaSourceCodeLine(pdeLineNumber); log(lineNumber + " Original Line num.\nPDE :" + pdeCodeLine); log("JAVA:" + javaCodeLine); diff --git a/pdex/src/processing/mode/experimental/ASTNodeWrapper.java b/pdex/src/processing/mode/experimental/ASTNodeWrapper.java index 734da04d9..450dfb667 100644 --- a/pdex/src/processing/mode/experimental/ASTNodeWrapper.java +++ b/pdex/src/processing/mode/experimental/ASTNodeWrapper.java @@ -392,7 +392,7 @@ public class ASTNodeWrapper { // Instead of converting pde into java, how can I simply extract the same source // from the java code? Think. TODO String sourceAlt = new String(source); - String sourceJava = ecs.astGenerator.getJavaSourceCodeline(lineNumber); + String sourceJava = ecs.astGenerator.getJavaSourceCodeLine(lineNumber); TreeMap offsetmap = new TreeMap(); if(sourceJava.trim().startsWith("public") && !source.startsWith("public")){ @@ -650,6 +650,23 @@ public class ASTNodeWrapper { public int[] getPDECodeOffsets(ErrorCheckerService ecs) { return ecs.JavaToPdeOffsets(lineNumber + 1, Node.getStartPosition()); } + + public int getPDECodeOffsetForSN(ASTGenerator astGen){ + if (Node instanceof SimpleName) { + Element lineElement = astGen.getJavaSourceCodeElement(lineNumber); + + OffsetMatcher ofm = new OffsetMatcher( + astGen + .getPDESourceCodeLine(lineNumber), + astGen + .getJavaSourceCodeLine(lineNumber)); + //log(""); + int pdeOffset = ofm.getPdeOffForJavaOff(Node.getStartPosition() + - lineElement.getStartOffset(), Node.toString().length()); + return pdeOffset; + } + return -1; + } public String toString() { return label;