From 26eb438989191de72da9ac714ca09653f6528b93 Mon Sep 17 00:00:00 2001 From: Ben Fry Date: Tue, 20 Jan 2015 17:57:56 -0500 Subject: [PATCH] actually running, with lots of errors --- app/src/processing/app/Base.java | 21 +- .../app/contrib/ModeContribution.java | 1 + build/build.xml | 6 +- java/src/processing/mode/java/Commander.java | 2 +- java/src/processing/mode/java/JavaMode.java | 4 +- .../mode/java/pdex/ExperimentalMode.java | 262 +++++++++--------- 6 files changed, 158 insertions(+), 138 deletions(-) diff --git a/app/src/processing/app/Base.java b/app/src/processing/app/Base.java index fe109f18a..1f8d1a8d2 100644 --- a/app/src/processing/app/Base.java +++ b/app/src/processing/app/Base.java @@ -53,8 +53,8 @@ public class Base { // static private boolean RELEASE = false; /** True if heavy debugging error/log messages are enabled */ - static public boolean DEBUG = false; -// static public boolean DEBUG = true; +// static public boolean DEBUG = false; + static public boolean DEBUG = true; static HashMap platformNames = new HashMap(); @@ -168,7 +168,7 @@ public class Base { // because the platform has to be inited properly first. // Make sure a full JDK is installed - initRequirements(); + //initRequirements(); // Load the languages Language.init(); @@ -249,6 +249,7 @@ public class Base { } + /* public static void initRequirements() { try { Class.forName("com.sun.jdi.VirtualMachine"); //$NON-NLS-1$ @@ -271,6 +272,13 @@ public class Base { "More information can be found on the Wiki.", cnfe); } } + */ + + + private String getDefaultModeIdentifier() { + return "processing.mode.java.pdex.ExperimentalMode"; + //return "processing.mode.java.JavaMode"; + } private void buildCoreModes() { @@ -281,6 +289,7 @@ public class Base { // PDE X calls getModeList() while it's loading, so coreModes must be set coreModes = new Mode[] { javaMode }; + /* Mode pdexMode = ModeContribution.load(this, getContentFile("modes/ExperimentalMode"), //$NON-NLS-1$ "processing.mode.experimental.ExperimentalMode").getMode(); //$NON-NLS-1$ @@ -288,6 +297,7 @@ public class Base { // Safe to remove the old Java mode here? //coreModes = new Mode[] { pdexMode }; coreModes = new Mode[] { pdexMode, javaMode }; + */ } @@ -620,11 +630,6 @@ public class Base { } - private String getDefaultModeIdentifier() { - return "processing.mode.java.JavaMode"; - } - - public Mode getDefaultMode() { return coreModes[0]; } diff --git a/app/src/processing/app/contrib/ModeContribution.java b/app/src/processing/app/contrib/ModeContribution.java index 2598ffaee..6852e8bb0 100644 --- a/app/src/processing/app/contrib/ModeContribution.java +++ b/app/src/processing/app/contrib/ModeContribution.java @@ -77,6 +77,7 @@ public class ModeContribution extends LocalContribution { className = initLoader(className); if (className != null) { Class modeClass = loader.loadClass(className); + Base.log("Got mode class " + modeClass); Constructor con = modeClass.getConstructor(Base.class, File.class); mode = (Mode) con.newInstance(base, folder); mode.setClassLoader(loader); diff --git a/build/build.xml b/build/build.xml index 5ffc4d507..bccb96f4d 100644 --- a/build/build.xml +++ b/build/build.xml @@ -257,7 +257,7 @@ - + @@ -271,7 +271,7 @@ - + @@ -317,9 +317,11 @@ + diff --git a/java/src/processing/mode/java/Commander.java b/java/src/processing/mode/java/Commander.java index a6405eee3..e6dec9276 100644 --- a/java/src/processing/mode/java/Commander.java +++ b/java/src/processing/mode/java/Commander.java @@ -73,7 +73,7 @@ public class Commander implements RunnerListener { // init the platform so that prefs and other native code is ready to go Base.initPlatform(); // make sure a full JDK is installed - Base.initRequirements(); + //Base.initRequirements(); // launch command line handler new Commander(args); diff --git a/java/src/processing/mode/java/JavaMode.java b/java/src/processing/mode/java/JavaMode.java index 4515d46d7..5bfeeae83 100644 --- a/java/src/processing/mode/java/JavaMode.java +++ b/java/src/processing/mode/java/JavaMode.java @@ -62,8 +62,8 @@ public class JavaMode extends Mode { // public Editor createEditor(Base ibase, String path, int[] location) { // } - - + + // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . diff --git a/java/src/processing/mode/java/pdex/ExperimentalMode.java b/java/src/processing/mode/java/pdex/ExperimentalMode.java index e5c73e1ea..13b13e49f 100644 --- a/java/src/processing/mode/java/pdex/ExperimentalMode.java +++ b/java/src/processing/mode/java/pdex/ExperimentalMode.java @@ -57,24 +57,26 @@ public class ExperimentalMode extends JavaMode { public static final int LOG_SIZE = 512 * 1024; // max log file size (in bytes) public static boolean DEBUG = !true; + public ExperimentalMode(Base base, File folder) { super(base, folder); - // use libraries folder from javamode. will make sketches using core libraries work, as well as import libraries and examples menus - for (Mode m : base.getModeList()) { - if (m.getClass() == JavaMode.class) { - JavaMode jMode = (JavaMode) m; - librariesFolder = jMode.getLibrariesFolder(); - rebuildLibraryList(); - break; - } - } - - // Fetch examples and reference from java mode - // thx to Manindra (https://github.com/martinleopold/DebugMode/issues/4) - examplesFolder = Base.getContentFile("modes/java/examples"); - // https://github.com/martinleopold/DebugMode/issues/6 - referenceFolder = Base.getContentFile("modes/java/reference"); + // [removed by fry 150120] +// // use libraries folder from javamode. will make sketches using core libraries work, as well as import libraries and examples menus +// for (Mode m : base.getModeList()) { +// if (m.getClass() == JavaMode.class) { +// JavaMode jMode = (JavaMode) m; +// librariesFolder = jMode.getLibrariesFolder(); +// rebuildLibraryList(); +// break; +// } +// } +// +// // Fetch examples and reference from java mode +// // thx to Manindra (https://github.com/martinleopold/DebugMode/issues/4) +// examplesFolder = Base.getContentFile("modes/java/examples"); +// // https://github.com/martinleopold/DebugMode/issues/6 +// referenceFolder = Base.getContentFile("modes/java/reference"); // set logging level Logger globalLogger = Logger.getLogger(""); @@ -126,6 +128,7 @@ public class ExperimentalMode extends JavaMode { }; } + public File getContentFile(String path) { File file = new File(folder, path); if (!file.exists()) { @@ -135,6 +138,7 @@ public class ExperimentalMode extends JavaMode { return file; } + volatile public static boolean errorCheckEnabled = true, warningsEnabled = true, codeCompletionsEnabled = true, debugOutputEnabled = false, errorLogsEnabled = false, @@ -143,6 +147,7 @@ public class ExperimentalMode extends JavaMode { ccTriggerEnabled = false, importSuggestEnabled = true; public static int autoSaveInterval = 3; //in minutes + /** * After how many typed characters, code completion is triggered */ @@ -162,6 +167,7 @@ public class ExperimentalMode extends JavaMode { static volatile public boolean enableTweak = false; + public void loadPreferences() { log("Load PDEX prefs"); ensurePrefsExist(); @@ -179,6 +185,7 @@ public class ExperimentalMode extends JavaMode { importSuggestEnabled = Preferences.getBoolean(prefImportSuggestEnabled); } + public void savePreferences() { log("Saving PDEX prefs"); Preferences.setBoolean(prefErrorCheck, errorCheckEnabled); @@ -195,6 +202,7 @@ public class ExperimentalMode extends JavaMode { Preferences.setBoolean(prefImportSuggestEnabled, importSuggestEnabled); } + public void ensurePrefsExist() { //TODO: Need to do a better job of managing prefs. Think lists. if (Preferences.get(prefErrorCheck) == null) @@ -221,7 +229,6 @@ public class ExperimentalMode extends JavaMode { Preferences.setBoolean(prefCCTriggerEnabled, ccTriggerEnabled); if (Preferences.get(prefImportSuggestEnabled) == null) Preferences.setBoolean(prefImportSuggestEnabled, importSuggestEnabled); - } @@ -270,7 +277,9 @@ public class ExperimentalMode extends JavaMode { return defaultValue; } + protected ImageIcon classIcon, fieldIcon, methodIcon, localVarIcon; + protected void loadIcons(){ String iconPath = getContentFile("data") .getAbsolutePath() @@ -297,6 +306,7 @@ public class ExperimentalMode extends JavaMode { return null; } + /** * System.out.println() */ @@ -305,6 +315,7 @@ public class ExperimentalMode extends JavaMode { System.out.println(message); } + /** * System.err.println() */ @@ -313,6 +324,7 @@ public class ExperimentalMode extends JavaMode { System.err.println(message); } + /** * System.out.print */ @@ -321,6 +333,7 @@ public class ExperimentalMode extends JavaMode { System.out.print(message); } + public String[] getIgnorable() { return new String[] { "applet", @@ -331,129 +344,128 @@ public class ExperimentalMode extends JavaMode { }; } + // TweakMode code - @Override - public Runner handleRun(Sketch sketch, RunnerListener listener) throws SketchException - { - final DebugEditor editor = (DebugEditor)listener; - editor.errorCheckerService.quickErrorCheck(); - if (enableTweak) { - enableTweak = false; - return handleTweakPresentOrRun(sketch, listener, false); - } - else { - /* Do the usual (JavaMode style) */ - JavaBuild build = new JavaBuild(sketch); - String appletClassName = build.build(false); - if (appletClassName != null) { - final Runner runtime = new Runner(build, listener); - new Thread(new Runnable() { - public void run() { - runtime.launch(false); // this blocks until finished - } - }).start(); - return runtime; - } - return null; - } - } + @Override + public Runner handleRun(Sketch sketch, + RunnerListener listener) throws SketchException { + final DebugEditor editor = (DebugEditor)listener; + editor.errorCheckerService.quickErrorCheck(); + if (enableTweak) { + enableTweak = false; + return handleTweakPresentOrRun(sketch, listener, false); + } else { + // Do the usual (JavaMode style) + JavaBuild build = new JavaBuild(sketch); + String appletClassName = build.build(false); + if (appletClassName != null) { + final Runner runtime = new Runner(build, listener); + new Thread(new Runnable() { + public void run() { + runtime.launch(false); // this blocks until finished + } + }).start(); + return runtime; + } + return null; + } + } - @Override - public Runner handlePresent(Sketch sketch, RunnerListener listener) throws SketchException - { - final DebugEditor editor = (DebugEditor)listener; - editor.errorCheckerService.quickErrorCheck(); - if (enableTweak) { - enableTweak = false; - return handleTweakPresentOrRun(sketch, listener, true); - } - else { - /* Do the usual (JavaMode style) */ - JavaBuild build = new JavaBuild(sketch); - String appletClassName = build.build(false); - if (appletClassName != null) { - final Runner runtime = new Runner(build, listener); - new Thread(new Runnable() { - public void run() { - runtime.launch(true); - } - }).start(); - return runtime; - } - return null; - } - } + @Override + public Runner handlePresent(Sketch sketch, + RunnerListener listener) throws SketchException { + final DebugEditor editor = (DebugEditor)listener; + editor.errorCheckerService.quickErrorCheck(); + if (enableTweak) { + enableTweak = false; + return handleTweakPresentOrRun(sketch, listener, true); + } else { + /* Do the usual (JavaMode style) */ + JavaBuild build = new JavaBuild(sketch); + String appletClassName = build.build(false); + if (appletClassName != null) { + final Runner runtime = new Runner(build, listener); + new Thread(new Runnable() { + public void run() { + runtime.launch(true); + } + }).start(); + return runtime; + } + return null; + } + } - public Runner handleTweakPresentOrRun(Sketch sketch, RunnerListener listener, boolean present) throws SketchException - { - final DebugEditor editor = (DebugEditor)listener; - final boolean toPresent = present; - boolean launchInteractive = false; + public Runner handleTweakPresentOrRun(Sketch sketch, + RunnerListener listener, + boolean present) throws SketchException { + final DebugEditor editor = (DebugEditor)listener; + final boolean toPresent = present; + boolean launchInteractive = false; - if (isSketchModified(sketch)) { - editor.deactivateRun(); - Base.showMessage("Save", "Please save the sketch before running in Tweak Mode."); - return null; - } + if (isSketchModified(sketch)) { + editor.deactivateRun(); + Base.showMessage("Save", "Please save the sketch before running in Tweak Mode."); + return null; + } - /* first try to build the unmodified code */ - JavaBuild build = new JavaBuild(sketch); - String appletClassName = build.build(false); - if (appletClassName == null) { - // unmodified build failed, so fail - return null; - } + // first try to build the unmodified code + JavaBuild build = new JavaBuild(sketch); + String appletClassName = build.build(false); + if (appletClassName == null) { + // unmodified build failed, so fail + return null; + } - /* if compilation passed, modify the code and build again */ - // save the original sketch code of the user - editor.initBaseCode(); - // check for "// tweak" comment in the sketch - boolean requiresTweak = SketchParser.containsTweakComment(editor.baseCode); - // parse the saved sketch to get all (or only with "//tweak" comment) numbers - final SketchParser parser = new SketchParser(editor.baseCode, requiresTweak); + // if compilation passed, modify the code and build again + // save the original sketch code of the user + editor.initBaseCode(); + // check for "// tweak" comment in the sketch + boolean requiresTweak = SketchParser.containsTweakComment(editor.baseCode); + // parse the saved sketch to get all (or only with "//tweak" comment) numbers + final SketchParser parser = new SketchParser(editor.baseCode, requiresTweak); - // add our code to the sketch - launchInteractive = editor.automateSketch(sketch, parser.allHandles); + // add our code to the sketch + launchInteractive = editor.automateSketch(sketch, parser.allHandles); - build = new JavaBuild(sketch); - appletClassName = build.build(false); - - if (appletClassName != null) { - final Runner runtime = new Runner(build, listener); - new Thread(new Runnable() { - public void run() { - runtime.launch(toPresent); // this blocks until finished + build = new JavaBuild(sketch); + appletClassName = build.build(false); + if (appletClassName != null) { + final Runner runtime = new Runner(build, listener); + new Thread(new Runnable() { + public void run() { + runtime.launch(toPresent); // this blocks until finished // executed when the sketch quits - editor.initEditorCode(parser.allHandles, false); - editor.stopInteractiveMode(parser.allHandles); - } + editor.initEditorCode(parser.allHandles, false); + editor.stopInteractiveMode(parser.allHandles); + } + }).start(); - }).start(); + if (launchInteractive) { + // replace editor code with baseCode + editor.initEditorCode(parser.allHandles, false); + editor.updateInterface(parser.allHandles, parser.colorBoxes); + editor.startInteractiveMode(); + } + return runtime; + } + return null; + } - if (launchInteractive) { - // replace editor code with baseCode - editor.initEditorCode(parser.allHandles, false); - editor.updateInterface(parser.allHandles, parser.colorBoxes); - editor.startInteractiveMode(); - } + private boolean isSketchModified(Sketch sketch) { + for (SketchCode sc : sketch.getCode()) { + if (sc.isModified()) { + return true; + } + } + return false; + } - return runtime; - } - - return null; - } - - private boolean isSketchModified(Sketch sketch) - { - for (SketchCode sc : sketch.getCode()) { - if (sc.isModified()) { - return true; - } - } - return false; - } + static public void main(String[] args) { + processing.app.Base.main(args); + } }