diff options
Diffstat (limited to 'src/jcgp/gui/handlers/InputHandlers.java')
-rw-r--r-- | src/jcgp/gui/handlers/InputHandlers.java | 56 |
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); + } + +} |