diff --git a/pdex/src/processing/mode/experimental/ASTGenerator.java b/pdex/src/processing/mode/experimental/ASTGenerator.java index d48b04fe7..8e51afa59 100644 --- a/pdex/src/processing/mode/experimental/ASTGenerator.java +++ b/pdex/src/processing/mode/experimental/ASTGenerator.java @@ -257,9 +257,9 @@ public class ASTGenerator { return; jtree.setModel(new DefaultTreeModel(codeTree)); ((DefaultTreeModel) jtree.getModel()).reload(); - if (!frame2.isVisible()) { - frame2.setVisible(true); - } +// if (!frame2.isVisible()) { +// frame2.setVisible(true); +// } // if (!frameAutoComp.isVisible()) { // // frameAutoComp.setVisible(true); diff --git a/pdex/src/processing/mode/experimental/DebugEditor.java b/pdex/src/processing/mode/experimental/DebugEditor.java index 055108067..7b9be9916 100755 --- a/pdex/src/processing/mode/experimental/DebugEditor.java +++ b/pdex/src/processing/mode/experimental/DebugEditor.java @@ -27,8 +27,11 @@ import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; +import java.io.ByteArrayInputStream; import java.io.File; import java.io.IOException; +import java.io.StringReader; +import java.nio.charset.Charset; import java.util.ArrayList; import java.util.List; import java.util.logging.Level; @@ -44,6 +47,9 @@ import javax.swing.JScrollPane; import javax.swing.border.EtchedBorder; import javax.swing.table.TableModel; import javax.swing.text.Document; + +import org.eclipse.jdt.core.compiler.IProblem; + import processing.app.*; import processing.app.syntax.JEditTextArea; import processing.app.syntax.PdeTextAreaDefaults; @@ -286,9 +292,53 @@ public class DebugEditor extends JavaEditor implements ActionListener { dbg.stopDebug(); // remove var.inspector vi.dispose(); + // original dispose super.dispose(); } + + // Added temporarily to dump error log. TODO: Remove this later + public void internalCloseRunner(){ + writeErrorsToFile(); + super.internalCloseRunner(); + } + + private void writeErrorsToFile(){ + if (errorCheckerService.tempErrorLog.size() == 0) + return; + try { + System.out.println("Writing errors"); + StringBuffer sbuff = new StringBuffer(); + sbuff.append("Sketch: " + getSketch().getFolder() + ", " + + new java.sql.Timestamp(new java.util.Date().getTime())+"\n\n"); + sbuff.append("ERROR ID, ERROR ARGS, ERROR MSG\n"); + for (String errMsg : errorCheckerService.tempErrorLog.keySet()) { + IProblem ip = errorCheckerService.tempErrorLog.get(errMsg); + if(ip != null){ + sbuff.append(errorCheckerService.errorMsgSimplifier.getIDName(ip.getID())); + sbuff.append(','); + sbuff.append("{"); + for (int i = 0; i < ip.getArguments().length; i++) { + sbuff.append(ip.getArguments()[i]); + if(i < ip.getArguments().length - 1) + sbuff.append('|'); + } + sbuff.append("}"); + sbuff.append(','); + sbuff.append(ip.getMessage().replace(',', ' ')); + sbuff.append("\n"); + } + } + System.out.println(sbuff); + File opFile = new File(getSketch().getFolder(), "ErrorLogs" + + File.separator + "ErrorLog_" + System.currentTimeMillis() + ".csv"); + PApplet.saveStream(opFile, new ByteArrayInputStream(sbuff.toString() + .getBytes(Charset.defaultCharset()))); + } catch (Exception e) { + System.err.println("Failed to save log file for sketch " + getSketch().getName()); + e.printStackTrace(); + } + } /** * Overrides sketch menu creation to change keyboard shortcuts from "Run". diff --git a/pdex/src/processing/mode/experimental/ErrorCheckerService.java b/pdex/src/processing/mode/experimental/ErrorCheckerService.java index e1dd641dc..0401ed974 100644 --- a/pdex/src/processing/mode/experimental/ErrorCheckerService.java +++ b/pdex/src/processing/mode/experimental/ErrorCheckerService.java @@ -10,6 +10,7 @@ import java.net.URLClassLoader; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; +import java.util.TreeMap; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; import java.util.regex.Matcher; @@ -177,7 +178,7 @@ public class ErrorCheckerService implements Runnable{ + "(void|int|float|double|String|char|byte)" + "(\\s*\\[\\s*\\])?\\s+[a-zA-Z0-9]+\\s*\\(", Pattern.MULTILINE); - private ErrorMessageSimplifier errorMsgSimplifier; + protected ErrorMessageSimplifier errorMsgSimplifier; public ErrorCheckerService(DebugEditor debugEditor) { this.editor = debugEditor; @@ -190,6 +191,7 @@ public class ErrorCheckerService implements Runnable{ astGenerator = new ASTGenerator(this); syntaxErrors = new AtomicBoolean(true); errorMsgSimplifier = new ErrorMessageSimplifier(); + tempErrorLog = new TreeMap(); } /** @@ -346,6 +348,8 @@ public class ErrorCheckerService implements Runnable{ public boolean hasSyntaxErrors(){ return syntaxErrors.get(); } + + protected TreeMap tempErrorLog; private void syntaxCheck() { syntaxErrors.set(true); @@ -705,8 +709,12 @@ public class ErrorCheckerService implements Runnable{ errorData[i][1] = editor.getSketch() .getCode(problemsList.get(i).tabIndex).getPrettyName(); errorData[i][2] = problemsList.get(i).lineNumber + ""; + + //TODO: This is temporary + if(tempErrorLog.size() < 200) + tempErrorLog.put(problemsList.get(i).message,problemsList.get(i).getIProblem()); } - + if (errorWindow != null) { DefaultTableModel tm = new DefaultTableModel(errorData, XQErrorTable.columnNames);