Clazz.declarePackage ("JS"); Clazz.load (["J.thread.JmolThread"], "JS.ScriptDelayThread", null, function () { c$ = Clazz.decorateAsClass (function () { this.millis = 0; this.seconds = 0; this.doPopPush = false; this.isPauseDelay = false; Clazz.instantialize (this, arguments); }, JS, "ScriptDelayThread", J.thread.JmolThread); Clazz.makeConstructor (c$, function (eval, vwr, millis) { Clazz.superConstructor (this, JS.ScriptDelayThread, []); this.setViewer (vwr, "ScriptDelayThread"); this.millis = millis; this.setEval (eval); }, "J.api.JmolScriptEvaluator,JV.Viewer,~N"); Clazz.overrideMethod (c$, "run1", function (mode) { while (true) switch (mode) { case -1: var delayMax; this.doPopPush = (this.millis > 0); this.isPauseDelay = (this.millis == -100); if (!this.doPopPush) this.millis = -this.millis; else if ((delayMax = this.vwr.getDelayMaximumMs ()) > 0 && this.millis > delayMax) this.millis = delayMax; this.millis -= System.currentTimeMillis () - this.startTime; if (this.isJS) { this.seconds = 0; } else { this.seconds = Clazz.doubleToInt (this.millis / 1000); this.millis -= this.seconds * 1000; if (this.millis <= 0) this.millis = 1; }if (this.doPopPush) this.vwr.popHoldRepaint ("scriptDelayThread INIT"); mode = 0; break; case 0: if (this.stopped || this.eval.isStopped ()) { mode = -2; break; }if (!this.runSleep (this.seconds-- > 0 ? 1000 : this.millis, -2)) return; if (this.seconds < 0) this.millis = 0; mode = (this.seconds > 0 || this.millis > 0 ? 0 : -2); break; case -2: if (this.doPopPush) this.vwr.pushHoldRepaintWhy ("delay FINISH"); if (this.isPauseDelay) this.eval.notifyResumeStatus (); this.resumeEval (); return; } }, "~N"); Clazz.defineStatics (c$, "PAUSE_DELAY", -100); });