Skip to content

Commit 157136e

Browse files
committed
added simple pause feature
1 parent df54d1c commit 157136e

File tree

4 files changed

+113
-75
lines changed

4 files changed

+113
-75
lines changed

.idea/workspace.xml

Lines changed: 64 additions & 70 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/main/java/kds/PauseListener.java

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package kds;
2+
3+
import java.awt.event.KeyEvent;
4+
import java.awt.event.KeyListener;
5+
6+
/**
7+
* Created by cvium on 04-01-2016.
8+
*/
9+
public class PauseListener implements KeyListener {
10+
11+
Simulator s;
12+
13+
public PauseListener(Simulator s) {
14+
this.s = s;
15+
}
16+
@Override
17+
public void keyTyped(KeyEvent e) {
18+
19+
}
20+
21+
@Override
22+
public void keyPressed(KeyEvent e) {
23+
if (e.getKeyCode() == KeyEvent.VK_P) {
24+
s.pause();
25+
}
26+
}
27+
28+
@Override
29+
public void keyReleased(KeyEvent e) {
30+
31+
}
32+
}

src/main/java/kds/Simulator.java

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import ProGAL.geom2d.viewer.J2DScene;
44

5+
import java.awt.event.KeyEvent;
6+
import java.awt.event.KeyListener;
57
import java.io.Console;
68
import java.io.IOException;
79
import java.util.ArrayList;
@@ -25,6 +27,7 @@ public class Simulator<PointType extends KDSPoint, EventType extends Event<Point
2527
double endtime;
2628
Level loggerLevel;
2729
J2DScene scene;
30+
boolean paused;
2831

2932
public Level getLoggerLevel() {
3033
return loggerLevel;
@@ -44,6 +47,7 @@ public Simulator(KDS<PointType, EventType> kds, double starttime, double timeste
4447
LOGGER.setLevel(this.loggerLevel);
4548
Logger topLogger = java.util.logging.Logger.getLogger("");
4649
topLogger.getHandlers()[0].setLevel( this.loggerLevel );
50+
paused = false;
4751
}
4852

4953
public double getTimestep() {
@@ -64,8 +68,11 @@ public void setVisualization(boolean visualize) {
6468
}
6569
public int run(boolean visualize) throws IOException {
6670
LOGGER.log(Level.INFO, "Starting simulation");
67-
68-
if (visualize) scene = J2DScene.createJ2DSceneInFrame();
71+
PauseListener pl = new PauseListener(this);
72+
if (visualize) {
73+
scene = J2DScene.createJ2DSceneInFrame();
74+
scene.addKeyListener(pl);
75+
}
6976
/*
7077
Color[] c = {Color.BLUE, Color.RED, Color.BLACK, Color.MAGENTA, Color.GREEN, Color.CYAN, Color.GRAY,
7178
Color.ORANGE, Color.PINK, Color.YELLOW};
@@ -88,6 +95,7 @@ public int run(boolean visualize) throws IOException {
8895
int errors = 0;
8996
while (t <= endtime) {
9097
LOGGER.log(Level.FINER, "Time: {0}", t);
98+
if (paused) continue;
9199
ArrayList<EventType> es;
92100
try {
93101
while (kds.getEventQueue().firstKey() <= t) {
@@ -124,4 +132,8 @@ public int run(boolean visualize) throws IOException {
124132
//System.exit(0);
125133
return errors;
126134
}
135+
136+
public void pause() {
137+
paused = !paused;
138+
}
127139
}

src/main/java/sortedList/run.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,17 @@ class run {
1212

1313
public static void main(String[] args) throws Exception {
1414
final int N = 50;
15-
final int M = 3;
15+
final int M = 2;
1616
final int T = 10;
17-
final int NUMRUNS = 100;
17+
final int NUMRUNS = 1;
1818
final double STARTTIME = 0.1;
1919
final double TIMESTEP = 0.1;
2020
final Level loggerLevel = Level.SEVERE;
2121
int failedRuns = 0;
2222
for (int i = 0; i < NUMRUNS; ++i) {
2323
SortedList kds = new SortedList(STARTTIME, N, M);
2424
Simulator<KDSPoint, SortedEvent> sim = new Simulator<>(kds, STARTTIME, TIMESTEP, T, loggerLevel);
25-
if (sim.run(false) != 0) {
25+
if (sim.run(true) != 0) {
2626
++failedRuns;
2727
}
2828
}

0 commit comments

Comments
 (0)