示例#1
0
 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;
 }
示例#2
0
 /** 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;
 }
示例#3
0
 public boolean handleExportApplication(Sketch sketch) throws SketchException, IOException {
   JavaBuild build = new JavaBuild(sketch);
   return build.exportApplication();
 }
示例#4
0
  /** 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;
  }