From 89b6a6951696587c9f066eea7b1cf32807f34f43 Mon Sep 17 00:00:00 2001 From: 7u83 <7u83@maiol.ru> Date: Sun, 5 Feb 2017 10:24:18 +0100 Subject: [PATCH] Pause button works now --- src/main/java/gui/NewMDIApplication.java | 3 ++- src/main/java/sesim/Scheduler.java | 22 +++++++++++++++++++--- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/main/java/gui/NewMDIApplication.java b/src/main/java/gui/NewMDIApplication.java index eca0f79..7093fe3 100644 --- a/src/main/java/gui/NewMDIApplication.java +++ b/src/main/java/gui/NewMDIApplication.java @@ -460,13 +460,14 @@ public class NewMDIApplication extends javax.swing.JFrame { void pauseSim(){ - + Globals.se.timer.pause(); } void startSim(){ resetSim(); this.startTraders(); Globals.se.timer.setAcceleration((Double)this.accelSpinner.getValue()); + Globals.se.timer.setPause(false); Globals.se.timer.start(); } diff --git a/src/main/java/sesim/Scheduler.java b/src/main/java/sesim/Scheduler.java index 895ec86..d0c984d 100644 --- a/src/main/java/sesim/Scheduler.java +++ b/src/main/java/sesim/Scheduler.java @@ -53,6 +53,7 @@ public class Scheduler extends Thread { } public double getAcceleration() { + return this.acceleration; } @@ -108,9 +109,14 @@ public class Scheduler extends Thread { public long currentTimeMillis1() { long diff = System.currentTimeMillis() - last_time_millis; - + // diff = 12199999L; last_time_millis += diff; + + if (pause) { + return (long) this.current_time_millis; + } + this.current_time_millis += diff * this.acceleration; //System.out.printf("Current TM: %f\n", this.current_time_millis); return (long) this.current_time_millis; @@ -151,12 +157,21 @@ public class Scheduler extends Thread { private boolean pause = false; public void pause() { - pause = !pause; + setPause(!pause); + + } + + public void setPause(boolean val){ + pause=val; synchronized (this) { this.notify(); } } + + public boolean getPause(){ + return pause; + } public long fireEvent(TimerTask e) { return e.timerTask(); @@ -190,8 +205,9 @@ public class Scheduler extends Thread { while (it.hasNext()) { TimerTask e = it.next(); long next_t = this.fireEvent(e); - if (next_t == 0 ) + if (next_t == 0) { next_t++; + } this.addEvent(e, next_t + t); }