aboutsummaryrefslogtreecommitdiffstats
path: root/src/jcgp/gui/handlers/NodeHandlers.java
diff options
context:
space:
mode:
authorEduardo Pedroni <e.pedroni91@gmail.com>2015-03-09 16:40:17 -0300
committerEduardo Pedroni <e.pedroni91@gmail.com>2015-03-09 16:40:17 -0300
commitff5248437491f1829c0168b271e85cb358516577 (patch)
tree1c41e92769d8186b2d6e05efe8bdb6d205b01156 /src/jcgp/gui/handlers/NodeHandlers.java
parentdb2bc6e935ff1632d78ea8a03606b396944ef21e (diff)
Moved GUI to its own repositoryHEADmaster
Diffstat (limited to 'src/jcgp/gui/handlers/NodeHandlers.java')
-rw-r--r--src/jcgp/gui/handlers/NodeHandlers.java164
1 files changed, 0 insertions, 164 deletions
diff --git a/src/jcgp/gui/handlers/NodeHandlers.java b/src/jcgp/gui/handlers/NodeHandlers.java
deleted file mode 100644
index b413a62..0000000
--- a/src/jcgp/gui/handlers/NodeHandlers.java
+++ /dev/null
@@ -1,164 +0,0 @@
-package jcgp.gui.handlers;
-
-import javafx.event.EventHandler;
-import javafx.scene.input.MouseDragEvent;
-import javafx.scene.input.MouseEvent;
-import javafx.scene.shape.Circle;
-import javafx.scene.shape.Line;
-import jcgp.backend.population.Gene;
-import jcgp.gui.GUI;
-import jcgp.gui.constants.Position;
-import jcgp.gui.population.ChromosomePane;
-import jcgp.gui.population.GUIConnection;
-import jcgp.gui.population.GUIGene;
-import jcgp.gui.population.GUIGene.GUIGeneState;
-import jcgp.gui.population.GUINode;
-
-/**
- * Holds the handlers that define the behaviour of {@code GUINode}.
- * <br><br>
- * The handlers are instantiated here statically and added to {@code GUINode}
- * instances using {@code NodeHandlers.addHandlers(...)}. This guarantees that
- * all nodes behave the same way without instantiating a new set of handlers for
- * each node instance.
- *
- * @author Eduardo Pedroni
- *
- */
-public final class NodeHandlers {
-
- /**
- * Private constructor to prevent instantiation.
- */
- private NodeHandlers() {}
-
- /**
- * Set the node to {@code GUIGeneState.HOVER} state, and set its immediate connections to {@code GUIGeneState.EXTENDED_HOVER}.
- */
- private static EventHandler<MouseEvent> mouseEnteredHandler = new EventHandler<MouseEvent>() {
- @Override
- public void handle(MouseEvent event) {
- // acquire the source, we can safely cast it to GUINode
- GUINode source = (GUINode) event.getSource();
-
- source.setState(GUIGeneState.HOVER);
- for (int i = 0; i < GUI.resources.arity(); i++) {
- ((GUIGene) ((Gene) source.getNode().getConnection(i)).getGUIObject()).setState(GUIGeneState.EXTENDED_HOVER);
- }
- }
- };
-
- /**
- * Set the node and its immediate connections to {@code GUIGeneState.NEUTRAL} state.
- */
- private static EventHandler<MouseEvent> mouseExitedHandler = new EventHandler<MouseEvent>() {
- @Override
- public void handle(MouseEvent event) {
- // acquire the source, we can safely cast it to GUINode
- GUINode source = (GUINode) event.getSource();
-
- if (Target.getSourceMutable() != source) {
- source.setState(GUIGeneState.NEUTRAL);
- for (int i = 0; i < GUI.resources.arity(); i++) {
- ((GUIGene) ((Gene) source.getNode().getConnection(i)).getGUIObject()).setState(GUIGeneState.NEUTRAL);
- }
- }
- }
- };
-
- private static EventHandler<MouseEvent> socketDragDetected = new EventHandler<MouseEvent>() {
- @Override
- public void handle(MouseEvent event) {
- // it's safe to assume that the source is the socket
- ((GUINode) ((Circle) event.getSource()).getParent()).startFullDrag();
- }
- };
-
- private static EventHandler<MouseEvent> socketMousePressedHandler = new EventHandler<MouseEvent>() {
- @Override
- public void handle(MouseEvent event) {
- // it's safe to assume that the source is the socket
- Target.start((Circle) event.getSource());
- }
- };
-
- private static EventHandler<MouseEvent> socketMouseDraggedHandler = new EventHandler<MouseEvent>() {
- @Override
- public void handle(MouseEvent event) {
- // this can only happen after a press, so we know Target is up-to-date
- if (!Target.isProspecting()) {
- GUINode node = (GUINode) Target.getSourceMutable();
- Line line = Target.getConnectionLine();
- line.setEndX(event.getX() + node.getLayoutX());
- line.setEndY(event.getY() + node.getLayoutY());
- }
-
- }
- };
-
- private static EventHandler<MouseEvent> socketMouseReleasedHandler = new EventHandler<MouseEvent>() {
- @Override
- public void handle(MouseEvent event) {
-
- GUINode node = (GUINode) ((Circle) event.getSource()).getParent();
- int connectionId = Integer.valueOf(((Circle) event.getSource()).getId());
-
- Position.connect(node.getLines()[connectionId], (GUIGene) ((Gene) node.getNode().getConnection(connectionId)).getGUIObject());
- }
- };
-
- private static EventHandler<MouseDragEvent> dragEnteredHandler = new EventHandler<MouseDragEvent>() {
- @Override
- public void handle(MouseDragEvent event) {
- // acquire the source, we can safely cast it to GUINode
- GUINode source = (GUINode) event.getSource();
- if (Target.getCurrentConnection() == source) {
- source.setState(GUIGeneState.NEUTRAL_TARGET);
- // we are now prospecting
- Target.setProspecting(true);
- Position.connect(Target.getConnectionLine(), source);
- } else if (ChromosomePane.isAllowed(Target.getSourceMutable(), (GUIConnection) source)) {
- source.setState(GUIGeneState.GOOD_TARGET);
- // we are now prospecting
- Target.setProspecting(true);
- Position.connect(Target.getConnectionLine(), source);
- } else {
- source.setState(GUIGeneState.BAD_TARGET);
- }
- }
- };
-
- private static EventHandler<MouseDragEvent> dragExitedHandler = new EventHandler<MouseDragEvent>() {
- @Override
- public void handle(MouseDragEvent event) {
- // acquire the source, we can safely cast it to GUINode
- GUINode source = (GUINode) event.getSource();
- source.setState(GUIGeneState.NEUTRAL);
-
- // no longer prospecting
- Target.setProspecting(false);
- }
- };
-
- /**
- * Adds all handlers to the specified node.
- *
- * @param node the {@code GUINode} to which the handlers will be added.
- */
- public static void addHandlers(GUINode node) {
- node.addEventHandler(MouseEvent.MOUSE_ENTERED, mouseEnteredHandler);
- node.addEventHandler(MouseEvent.MOUSE_EXITED, mouseExitedHandler);
-
- node.addEventHandler(MouseDragEvent.MOUSE_DRAG_ENTERED, dragEnteredHandler);
- node.addEventHandler(MouseDragEvent.MOUSE_DRAG_EXITED, dragExitedHandler);
-
- Circle[] sockets = node.getSockets();
- for (int s = 0; s < sockets.length; s++) {
-
- sockets[s].addEventFilter(MouseEvent.DRAG_DETECTED, socketDragDetected);
- sockets[s].addEventHandler(MouseEvent.MOUSE_PRESSED, socketMousePressedHandler);
- sockets[s].addEventHandler(MouseEvent.MOUSE_DRAGGED, socketMouseDraggedHandler);
- sockets[s].addEventHandler(MouseEvent.MOUSE_RELEASED, socketMouseReleasedHandler);
- }
- }
-}