aboutsummaryrefslogtreecommitdiffstats
path: root/src/jcgp/gui/handlers/InputHandlers.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/jcgp/gui/handlers/InputHandlers.java')
-rw-r--r--src/jcgp/gui/handlers/InputHandlers.java56
1 files changed, 56 insertions, 0 deletions
diff --git a/src/jcgp/gui/handlers/InputHandlers.java b/src/jcgp/gui/handlers/InputHandlers.java
new file mode 100644
index 0000000..cc677eb
--- /dev/null
+++ b/src/jcgp/gui/handlers/InputHandlers.java
@@ -0,0 +1,56 @@
+package jcgp.gui.handlers;
+
+import javafx.event.EventHandler;
+import javafx.scene.input.MouseEvent;
+import jcgp.gui.population.GUIGene.GUIGeneState;
+import jcgp.gui.population.GUIInput;
+
+/**
+ * Holds the handlers that define the behaviour of {@code GUIInput}.
+ * <br><br>
+ * The handlers are instantiated here statically and added to {@code GUIInput}
+ * instances using {@code InputHandlers.addHandlers(...)}. This guarantees that
+ * all inputs behave the same way without instantiating a new set of handlers for
+ * each input instance.
+ *
+ * @author Eduardo Pedroni
+ *
+ */
+public final class InputHandlers {
+
+ /**
+ * Private constructor to prevent instantiation.
+ */
+ private InputHandlers() {}
+
+ /**
+ * Inputs don't do much; set state to hover when mouse enters.
+ */
+ private static EventHandler<MouseEvent> mouseEnteredHandler = new EventHandler<MouseEvent>() {
+ @Override
+ public void handle(MouseEvent event) {
+ ((GUIInput) event.getSource()).setState(GUIGeneState.HOVER);
+ }
+ };
+
+ /**
+ * Inputs don't do much; set state to neutral when mouse exits.
+ */
+ private static EventHandler<MouseEvent> mouseExitedHandler = new EventHandler<MouseEvent>() {
+ @Override
+ public void handle(MouseEvent event) {
+ ((GUIInput) event.getSource()).setState(GUIGeneState.NEUTRAL);
+ }
+ };
+
+ /**
+ * Adds all handlers to the specified input.
+ *
+ * @param input the {@code GUIInput} to which the handlers will be added.
+ */
+ public static void addHandlers(GUIInput input) {
+ input.addEventHandler(MouseEvent.MOUSE_ENTERED, mouseEnteredHandler);
+ input.addEventHandler(MouseEvent.MOUSE_EXITED, mouseExitedHandler);
+ }
+
+}