public Runner handleRun(Sketch sketch, RunnerListener listener) throws SketchException { 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; }
/** Handles the standard Java "Run" or "Present" */ public Runner handleLaunch(Sketch sketch, RunnerListener listener, final boolean present) throws SketchException { JavaBuild build = new JavaBuild(sketch); // String appletClassName = build.build(false); String appletClassName = build.build(true); if (appletClassName != null) { final Runner runtime = new Runner(build, listener); new Thread( new Runnable() { public void run() { // these block until finished if (present) { runtime.present(null); } else { runtime.launch(null); } } }) .start(); return runtime; } return null; }
public boolean handleExportApplication(Sketch sketch) throws SketchException, IOException { JavaBuild build = new JavaBuild(sketch); return build.exportApplication(); }
/** Start a sketch in tweak mode */ public Runner handleTweak(Sketch sketch, RunnerListener listener, final boolean present) throws SketchException { final JavaEditor editor = (JavaEditor) listener; if (isSketchModified(sketch)) { editor.deactivateRun(); Messages.showMessage( Language.text("menu.file.save"), Language.text("tweak_mode.save_before_tweak")); return null; } // first try to build the unmodified code JavaBuild build = new JavaBuild(sketch); // String appletClassName = build.build(false); String appletClassName = build.build(true); 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); // add our code to the sketch final boolean launchInteractive = editor.automateSketch(sketch, parser); 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() { // these block until finished if (present) { runtime.present(null); } else { runtime.launch(null); } // next lines are executed when the sketch quits if (launchInteractive) { editor.initEditorCode(parser.allHandles, false); editor.stopTweakMode(parser.allHandles); } } }) .start(); if (launchInteractive) { // replace editor code with baseCode editor.initEditorCode(parser.allHandles, false); editor.updateInterface(parser.allHandles, parser.colorBoxes); editor.startTweakMode(); } return runtime; } return null; }