meh. broke something again

This commit is contained in:
Manindra Moharana
2014-06-11 00:06:46 +05:30
parent 225642a9a4
commit a838e8cbf3
3 changed files with 58 additions and 15 deletions

View File

@@ -715,6 +715,7 @@ public class ErrorCheckerService implements Runnable{
}
problemsList.add(p);
}
calcPDEOffsetsForProbList();
}
} catch (ClassNotFoundException e) {
System.err.println("Compiltation Checker files couldn't be found! "
@@ -742,15 +743,37 @@ public class ErrorCheckerService implements Runnable{
// log("Compilecheck, Done.");
}
/**
* Calculates PDE Offsets from Java Offsets for Problems
*/
private void calcPDEOffsetsForProbList() {
PlainDocument javaSource = new PlainDocument();
try {
// Code in pde tabs stored as PlainDocument
PlainDocument pdeTabs[] = new PlainDocument[editor.getSketch()
.getCodeCount()];
try {
javaSource.insertString(0, sourceCode, null);
for (int i = 0; i < pdeTabs.length; i++) {
SketchCode sc = editor.getSketch().getCode(i);
pdeTabs[i] = new PlainDocument();
if (editor.getSketch().getCurrentCode().equals(sc)) {
pdeTabs[i].insertString(0,
sc.getDocument().getText(0,
sc.getDocument()
.getLength()),
null);
} else {
pdeTabs[i].insertString(0,
sc.getProgram(),
null);
}
}
int pkgNameOffset = ("package " + className + ";\n").length();
for (Problem p : problemsList) {
int javaLineNumber = p.getIProblem().getSourceLineNumber();
Element lineElement = javaSource.getDefaultRootElement()
.getElement(javaLineNumber - 1);
.getElement(javaLineNumber - 2);
if (lineElement == null) {
log("calcPDEOffsetsForProbList(): Couldn't fetch javalinenum "
+ javaLineNumber);
@@ -761,11 +784,19 @@ public class ErrorCheckerService implements Runnable{
- lineElement.getStartOffset());
int prbStart = p.getIProblem().getSourceStart() - pkgNameOffset, prbEnd = p
.getIProblem().getSourceEnd() - pkgNameOffset;
OffsetMatcher ofm = new OffsetMatcher(
astGenerator
.getPDESourceCodeLine(javaLineNumber),
javaLine);
Element pdeLineElement = pdeTabs[p.getTabIndex()]
.getDefaultRootElement().getElement(p.getLineNumber()-1);
if (pdeLineElement == null) {
log("calcPDEOffsetsForProbList(): Couldn't fetch pdelinenum "
+ javaLineNumber);
continue;
}
String pdeLine = pdeTabs[p.getTabIndex()]
.getText(pdeLineElement.getStartOffset(), pdeLineElement.getEndOffset()
- pdeLineElement.getStartOffset());
log("calcPDEOffsetsForProbList(): P " + pdeLine);
log("calcPDEOffsetsForProbList(): J " + javaLine);
OffsetMatcher ofm = new OffsetMatcher(pdeLine, javaLine);
//log("");
int pdeOffset = ofm.getPdeOffForJavaOff(prbStart
- lineElement.getStartOffset(), (prbEnd - p

View File

@@ -89,10 +89,19 @@ public class Problem {
lineStartOffset = startOffset;
lineStopOffset = stopOffset;
}
public int getPDELineStartOffset(){
return lineStartOffset;
}
public int getPDELineStopOffset(){
return lineStopOffset;
}
public String toString() {
return new String("TAB " + tabIndex + ",LN " + lineNumber + ",PROB: "
+ message);
return new String("TAB " + tabIndex + ",LN " + lineNumber + "LN START OFF: "
+ lineStartOffset + ",LN STOP OFF: " + lineStopOffset + ",PROB: "
+ message);
}
public boolean isError(){

View File

@@ -314,7 +314,8 @@ public class TextAreaPainter extends processing.app.syntax.TextAreaPainter {
boolean notFound = true;
boolean isWarning = false;
Problem problem = null;
// Check if current line contains an error. If it does, find if it's an
// error or warning
for (ErrorMarker emarker : errorCheckerService.getEditor().errorBar.errorPoints) {
@@ -323,6 +324,8 @@ public class TextAreaPainter extends processing.app.syntax.TextAreaPainter {
if (emarker.getType() == ErrorMarker.Warning) {
isWarning = true;
}
problem = emarker.getProblem();
log(problem.toString());
break;
}
}
@@ -337,15 +340,15 @@ public class TextAreaPainter extends processing.app.syntax.TextAreaPainter {
int y = ta.lineToY(line);
y += fm.getLeading() + fm.getMaxDescent();
int height = fm.getHeight();
int start = ta.getLineStartOffset(line);
int start = ta.getLineStartOffset(line) + problem.getPDELineStartOffset();
int pLength = problem.getPDELineStopOffset() + 1
- problem.getPDELineStartOffset();
try {
String linetext = null;
try {
linetext = ta.getDocument().getText(start,
ta.getLineStopOffset(line) - start
- 1);
linetext = ta.getDocument().getText(start, pLength);
log("paintErrorLine() LineText: " + linetext);
} catch (BadLocationException bl) {
// Error in the import statements or end of code.
// System.out.print("BL caught. " + ta.getLineCount() + " ,"