MouseMoveHandler.java 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. package drawing;
  2. import javafx.event.EventHandler;
  3. import javafx.scene.input.MouseEvent;
  4. import javafx.scene.shape.Shape;
  5. /**
  6. * Created by lewandowski on 20/12/2020.
  7. */
  8. public class MouseMoveHandler implements EventHandler<MouseEvent> {
  9. private DrawingPane drawingPane;
  10. private double orgSceneX;
  11. private double orgSceneY;
  12. private double orgTranslateX;
  13. private double orgTranslateY;
  14. private Shape selectedShape;
  15. public MouseMoveHandler(DrawingPane drawingPane) {
  16. this.drawingPane = drawingPane;
  17. drawingPane.addEventHandler(MouseEvent.MOUSE_PRESSED, this);
  18. drawingPane.addEventHandler(MouseEvent.MOUSE_DRAGGED, this);
  19. drawingPane.addEventHandler(MouseEvent.MOUSE_RELEASED, this);
  20. }
  21. @Override
  22. public void handle(MouseEvent event) {
  23. if (event.getEventType().equals(MouseEvent.MOUSE_PRESSED)) {
  24. orgSceneX = event.getSceneX();
  25. orgSceneY = event.getSceneY();
  26. for (Shape shape : drawingPane.getShapes()) {
  27. if (shape.getBoundsInParent().contains(event.getX(), event.getY())) {
  28. selectedShape = shape;
  29. break;
  30. }
  31. }
  32. orgTranslateX = selectedShape == null ? 0 : selectedShape.getTranslateX();
  33. orgTranslateY = selectedShape == null ? 0 : selectedShape.getTranslateY();
  34. }
  35. if (event.getEventType().equals(MouseEvent.MOUSE_DRAGGED)) {
  36. if (selectedShape == null)
  37. return;
  38. double offsetX = event.getSceneX() - orgSceneX;
  39. double offsetY = event.getSceneY() - orgSceneY;
  40. double newTranslateX = orgTranslateX + offsetX;
  41. double newTranslateY = orgTranslateY + offsetY;
  42. selectedShape.setTranslateX(newTranslateX);
  43. selectedShape.setTranslateY(newTranslateY);
  44. }
  45. if (event.getEventType().equals(MouseEvent.MOUSE_RELEASED)) {
  46. selectedShape = null;
  47. }
  48. }
  49. }