| 1 | package org.eclipse.tracecompass.internal.provisional.tmf.ui.views.timegraph2.swtjfx.examples; |
| 2 | |
| 3 | import org.eclipse.jdt.annotation.Nullable; |
| 4 | |
| 5 | import javafx.application.Application; |
| 6 | import javafx.event.EventHandler; |
| 7 | import javafx.scene.Cursor; |
| 8 | import javafx.scene.Group; |
| 9 | import javafx.scene.Scene; |
| 10 | import javafx.scene.input.MouseEvent; |
| 11 | import javafx.scene.paint.Color; |
| 12 | import javafx.scene.shape.Circle; |
| 13 | import javafx.stage.Stage; |
| 14 | |
| 15 | /** |
| 16 | * @web http://java-buddy.blogspot.com/ |
| 17 | */ |
| 18 | public class ExampleMouseDrag extends Application { |
| 19 | |
| 20 | private double orgSceneX, orgSceneY; |
| 21 | private double orgTranslateX, orgTranslateY; |
| 22 | |
| 23 | @Override |
| 24 | public void start(@Nullable Stage primaryStage) { |
| 25 | if (primaryStage == null) { |
| 26 | return; |
| 27 | } |
| 28 | |
| 29 | //Create Circles |
| 30 | Circle circleRed = new Circle(50.0, Color.RED); |
| 31 | circleRed.setCursor(Cursor.HAND); |
| 32 | circleRed.setOnMousePressed(circleOnMousePressedEventHandler); |
| 33 | circleRed.setOnMouseDragged(circleOnMouseDraggedEventHandler); |
| 34 | |
| 35 | Circle circleGreen = new Circle(50.0, Color.GREEN); |
| 36 | circleGreen.setCursor(Cursor.MOVE); |
| 37 | circleGreen.setCenterX(150); |
| 38 | circleGreen.setCenterY(150); |
| 39 | circleGreen.setOnMousePressed(circleOnMousePressedEventHandler); |
| 40 | circleGreen.setOnMouseDragged(circleOnMouseDraggedEventHandler); |
| 41 | |
| 42 | Circle circleBlue = new Circle(50.0, Color.BLUE); |
| 43 | circleBlue.setCursor(Cursor.CROSSHAIR); |
| 44 | circleBlue.setTranslateX(300); |
| 45 | circleBlue.setTranslateY(100); |
| 46 | circleBlue.setOnMousePressed(circleOnMousePressedEventHandler); |
| 47 | circleBlue.setOnMouseDragged(circleOnMouseDraggedEventHandler); |
| 48 | |
| 49 | Group root = new Group(); |
| 50 | root.getChildren().addAll(circleRed, circleGreen, circleBlue); |
| 51 | |
| 52 | primaryStage.setResizable(false); |
| 53 | primaryStage.setScene(new Scene(root, 400,350)); |
| 54 | |
| 55 | primaryStage.setTitle("java-buddy"); |
| 56 | primaryStage.show(); |
| 57 | } |
| 58 | |
| 59 | public static void main(String[] args) { |
| 60 | launch(args); |
| 61 | } |
| 62 | |
| 63 | private EventHandler<MouseEvent> circleOnMousePressedEventHandler = new EventHandler<MouseEvent>() { |
| 64 | @Override |
| 65 | public void handle(MouseEvent t) { |
| 66 | orgSceneX = t.getSceneX(); |
| 67 | orgSceneY = t.getSceneY(); |
| 68 | orgTranslateX = ((Circle)(t.getSource())).getTranslateX(); |
| 69 | orgTranslateY = ((Circle)(t.getSource())).getTranslateY(); |
| 70 | } |
| 71 | }; |
| 72 | |
| 73 | private EventHandler<MouseEvent> circleOnMouseDraggedEventHandler = new EventHandler<MouseEvent>() { |
| 74 | @Override |
| 75 | public void handle(MouseEvent t) { |
| 76 | double offsetX = t.getSceneX() - orgSceneX; |
| 77 | double offsetY = t.getSceneY() - orgSceneY; |
| 78 | double newTranslateX = orgTranslateX + offsetX; |
| 79 | double newTranslateY = orgTranslateY + offsetY; |
| 80 | |
| 81 | ((Circle)(t.getSource())).setTranslateX(newTranslateX); |
| 82 | ((Circle)(t.getSource())).setTranslateY(newTranslateY); |
| 83 | } |
| 84 | }; |
| 85 | } |