Skip to content
Snippets Groups Projects
Commit 54245285 authored by Hallvard Trætteberg's avatar Hallvard Trætteberg
Browse files

Simplified a bit, removed use of Optional.

parent 1ed65524
No related branches found
No related tags found
No related merge requests found
package simpleex.ui;
import java.util.Optional;
import javafx.event.EventHandler;
import javafx.geometry.Point2D;
import javafx.scene.Node;
......@@ -8,16 +7,14 @@ import javafx.scene.input.MouseEvent;
public class DraggableNodeController {
public DraggableNodeController() {}
private final NodeDraggedHandler nodeDraggedHandler;
public DraggableNodeController(final Optional<NodeDraggedHandler> nodeDraggedHandler) {
setNodeDraggedHandler(nodeDraggedHandler);
public DraggableNodeController() {
this(null);
}
private Optional<NodeDraggedHandler> nodeDraggedHandler = Optional.empty();
public final void setNodeDraggedHandler(final Optional<NodeDraggedHandler> nodeDraggedHandler) {
this.nodeDraggedHandler = nodeDraggedHandler;
public DraggableNodeController(final NodeDraggedHandler nodeDraggedHandler) {
this.nodeDraggedHandler = (nodeDraggedHandler != null ? nodeDraggedHandler : (node, x, y) -> {});
}
private boolean immediate = false;
......@@ -26,7 +23,7 @@ public class DraggableNodeController {
this.immediate = immediate;
}
private Optional<Node> currentNode = Optional.empty();
private Node currentNode = null;
private Point2D startPoint = null;
private Point2D startTranslate = null;
......@@ -47,17 +44,16 @@ public class DraggableNodeController {
}
private void mousePressed(final MouseEvent mouseEvent) {
if (currentNode.isEmpty() && mouseEvent.getSource() instanceof Node) {
currentNode = Optional.of((Node) mouseEvent.getSource());
if (currentNode == null && mouseEvent.getSource() instanceof Node) {
currentNode = (Node) mouseEvent.getSource();
startPoint = new Point2D(mouseEvent.getSceneX(), mouseEvent.getSceneY());
startTranslate =
new Point2D(currentNode.get().getTranslateX(), currentNode.get().getTranslateY());
startTranslate = new Point2D(currentNode.getTranslateX(), currentNode.getTranslateY());
mouseEvent.consume();
}
}
private void mouseDragged(final MouseEvent mouseEvent) {
if (currentNode.isPresent() && currentNode.get() == mouseEvent.getSource()) {
if (currentNode != null && currentNode == mouseEvent.getSource()) {
final double dx = mouseEvent.getSceneX() - startPoint.getX();
final double dy = mouseEvent.getSceneY() - startPoint.getY();
updateNode(dx, dy);
......@@ -65,28 +61,26 @@ public class DraggableNodeController {
}
protected void updateNode(final double dx, final double dy) {
if (immediate && nodeDraggedHandler.isPresent()) {
nodeDraggedHandler.get().nodeDragged(currentNode.get(), dx, dy);
if (immediate) {
nodeDraggedHandler.nodeDragged(currentNode, dx, dy);
startPoint = startPoint.add(dx, dy);
} else if (currentNode.isPresent()) {
currentNode.get().setTranslateX(startTranslate.getX() + dx);
currentNode.get().setTranslateY(startTranslate.getY() + dy);
} else if (currentNode != null) {
currentNode.setTranslateX(startTranslate.getX() + dx);
currentNode.setTranslateY(startTranslate.getY() + dy);
}
}
private void mouseReleased(final MouseEvent mouseEvent) {
if (currentNode.isPresent() && currentNode.get() == mouseEvent.getSource()) {
if (currentNode != null && currentNode == mouseEvent.getSource()) {
final double dx = mouseEvent.getSceneX() - startPoint.getX();
final double dy = mouseEvent.getSceneY() - startPoint.getY();
if (!immediate) {
currentNode.get().setTranslateX(startTranslate.getX());
currentNode.get().setTranslateY(startTranslate.getY());
}
final Node node = currentNode.get();
currentNode = Optional.empty();
if (nodeDraggedHandler.isPresent()) {
nodeDraggedHandler.get().nodeDragged(node, dx, dy);
currentNode.setTranslateX(startTranslate.getX());
currentNode.setTranslateY(startTranslate.getY());
}
final Node node = currentNode;
currentNode = null;
nodeDraggedHandler.nodeDragged(node, dx, dy);
}
}
......
......@@ -89,10 +89,10 @@ public class FxAppController {
zoomSlider.setValue(8);
markersParent = new MapItemsControl<MapNode>();
mapView.getChildren().add(markersParent);
draggableMapController = new DraggableNodeController(Optional.of(this::handleMapDragged));
draggableMapController = new DraggableNodeController(this::handleMapDragged);
draggableMapController.setImmediate(true);
draggableMapController.attach(mapView);
draggableMarkerController = new DraggableNodeController(Optional.of(this::handleMarkerDragged));
draggableMarkerController = new DraggableNodeController(this::handleMarkerDragged);
// the location list
locationListView.getSelectionModel().selectedIndexProperty()
.addListener((prop, oldValue, newValue) -> updateMapMarker(true));
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment