ShapeButtonHandler.java 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package drawing;
  2. import javafx.event.ActionEvent;
  3. import javafx.event.Event;
  4. import javafx.event.EventHandler;
  5. import javafx.scene.input.MouseEvent;
  6. import javafx.scene.shape.Shape;
  7. /**
  8. * Created by lewandowski on 20/12/2020.
  9. */
  10. public abstract class ShapeButtonHandler implements EventHandler<Event> {
  11. private DrawingPane drawingPane;
  12. protected double originX;
  13. protected double originY;
  14. protected double destinationX;
  15. protected double destinationY;
  16. protected Shape shape;
  17. public ShapeButtonHandler(DrawingPane drawingPane) {
  18. this.drawingPane = drawingPane;
  19. }
  20. @Override
  21. public void handle(Event event) {
  22. if (event instanceof ActionEvent) {
  23. drawingPane.addEventHandler(MouseEvent.MOUSE_PRESSED, this);
  24. }
  25. if (event instanceof MouseEvent) {
  26. if (event.getEventType().equals(MouseEvent.MOUSE_PRESSED)) {
  27. drawingPane.addEventHandler(MouseEvent.MOUSE_RELEASED, this);
  28. originX = ((MouseEvent) event).getX();
  29. originY = ((MouseEvent) event).getY();
  30. }
  31. if (event.getEventType().equals(MouseEvent.MOUSE_RELEASED)) {
  32. destinationX = ((MouseEvent) event).getX();
  33. destinationY = ((MouseEvent) event).getY();
  34. shape = createShape();
  35. drawingPane.addShape(shape);
  36. drawingPane.removeEventHandler(MouseEvent.MOUSE_PRESSED, this);
  37. drawingPane.removeEventHandler(MouseEvent.MOUSE_RELEASED, this);
  38. }
  39. }
  40. }
  41. protected abstract Shape createShape();
  42. }