aboutsummaryrefslogtreecommitdiff
path: root/Week14 Route 66/src/com/camilstaps/route66/KeyHandler.java
diff options
context:
space:
mode:
Diffstat (limited to 'Week14 Route 66/src/com/camilstaps/route66/KeyHandler.java')
-rw-r--r--Week14 Route 66/src/com/camilstaps/route66/KeyHandler.java39
1 files changed, 39 insertions, 0 deletions
diff --git a/Week14 Route 66/src/com/camilstaps/route66/KeyHandler.java b/Week14 Route 66/src/com/camilstaps/route66/KeyHandler.java
new file mode 100644
index 0000000..eb84b6f
--- /dev/null
+++ b/Week14 Route 66/src/com/camilstaps/route66/KeyHandler.java
@@ -0,0 +1,39 @@
+package com.camilstaps.route66;
+
+import java.awt.event.KeyAdapter;
+import java.awt.event.KeyEvent;
+
+/**
+ * Keyboard handler of views for controller.
+ *
+ * Pressing keys changes the controller.
+ *
+ * @author Pieter Koopman, Camil Staps
+ */
+public class KeyHandler extends KeyAdapter {
+
+ private final Controller controller;
+
+ public KeyHandler (Controller c) {
+ controller = c;
+ }
+
+ /**
+ * on key down 'q' stop program
+ * on key down 's' stop the cars
+ * on key down '<' decrease delay
+ * on key down '>' increase delay
+ * on any other key activate the cars
+ * @param e the key event
+ */
+ @Override
+ public void keyPressed(KeyEvent e) {
+ switch (e.getKeyChar()) {
+ case 'q': System.exit(0);
+ case 's': controller.stopCars(); break;
+ case '<': controller.setDelay(controller.getDelay() - 50); break;
+ case '>': controller.setDelay(controller.getDelay() + 50); break;
+ default : controller.resumeCars();
+ }
+ }
+}