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}. *

* 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 { /** * Inputs don't do much; set state to hover when mouse enters. */ private static EventHandler mouseEnteredHandler = new EventHandler() { @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 mouseExitedHandler = new EventHandler() { @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); } }