From 049f600d8c03b9ed9361c48c4aeb832d814f0cc4 Mon Sep 17 00:00:00 2001 From: Bryce Howard Date: Wed, 5 Feb 2020 20:40:21 -0800 Subject: [PATCH] Add Point Menu with X, Y, and Rotation --- .../frcteam2910/pathviewer/Application.java | 3 + .../frcteam2910/pathviewer/FieldDisplay.java | 2 +- .../pathviewer/PointEditorController.java | 61 +++++++++++++++++++ .../frcteam2910/pathviewer/Application.fxml | 3 + .../frcteam2910/pathviewer/PointEditor.fxml | 33 ++++++++++ 5 files changed, 101 insertions(+), 1 deletion(-) create mode 100644 src/main/java/org/frcteam2910/pathviewer/PointEditorController.java create mode 100644 src/main/resources/org/frcteam2910/pathviewer/PointEditor.fxml diff --git a/src/main/java/org/frcteam2910/pathviewer/Application.java b/src/main/java/org/frcteam2910/pathviewer/Application.java index c68fc6c..71c444d 100644 --- a/src/main/java/org/frcteam2910/pathviewer/Application.java +++ b/src/main/java/org/frcteam2910/pathviewer/Application.java @@ -24,6 +24,8 @@ public class Application { private BorderPane root; @FXML private FieldDisplay fieldDisplay; + @FXML + private PointEditorController pointEditorController; /** * The path file that is currently being edited. @@ -33,6 +35,7 @@ public class Application { @FXML private void initialize() { + pointEditorController.fieldPointProperty().bind(fieldDisplay.selectedPointProperty()); } @CheckForNull diff --git a/src/main/java/org/frcteam2910/pathviewer/FieldDisplay.java b/src/main/java/org/frcteam2910/pathviewer/FieldDisplay.java index 136a1c2..b28e5cb 100644 --- a/src/main/java/org/frcteam2910/pathviewer/FieldDisplay.java +++ b/src/main/java/org/frcteam2910/pathviewer/FieldDisplay.java @@ -64,7 +64,7 @@ public FieldDisplay() { @FXML private void initialize() { - field = new Field(new Image("org/frcteam2910/pathviewer/2020-field.png"), new Vector2(54.0 * 12.0, 27.0 * 12.0), new Vector2(76, 64), new Vector2(2696 - 76, 1688 - 64)); + field = new Field(new Image("org/frcteam2910/pathviewer/2020-field.png"), new Vector2(54.0 * 12.0, 27.0 * 12.0), new Vector2(76, 64), new Vector2(2696 - 76, 1386 - 64)); Image image = field.getImage(); backgroundImage.setImage(image); Scale scale = new Scale(); diff --git a/src/main/java/org/frcteam2910/pathviewer/PointEditorController.java b/src/main/java/org/frcteam2910/pathviewer/PointEditorController.java new file mode 100644 index 0000000..8366caf --- /dev/null +++ b/src/main/java/org/frcteam2910/pathviewer/PointEditorController.java @@ -0,0 +1,61 @@ +package org.frcteam2910.pathviewer; + + +import javafx.beans.property.ObjectProperty; +import javafx.beans.property.SimpleObjectProperty; +import javafx.event.ActionEvent; +import javafx.fxml.FXML; +import javafx.scene.control.Button; +import javafx.scene.control.TextField; +import javafx.scene.control.TextFormatter; +import javafx.util.converter.DoubleStringConverter; + +public class PointEditorController { + @FXML + private TextField txtX; + @FXML + private TextField txtY; + @FXML + private TextField txtRotationField; + @FXML + private Button btnUpdate; + + @FXML + private void initialize() { + txtX.setTextFormatter(new TextFormatter<>(new DoubleStringConverter())); + txtY.setTextFormatter(new TextFormatter<>(new DoubleStringConverter())); + txtRotationField.setTextFormatter(new TextFormatter<>(new DoubleStringConverter())); + + fieldPointProperty().addListener((observable, oldValue, newValue) -> { + if(newValue != null) { + txtX.setText(String.valueOf(newValue.getCenterX())); + txtY.setText(String.valueOf(newValue.getCenterY())); + txtRotationField.setText(String.valueOf(newValue.getRotate())); + } + }); + } + + @FXML + private void updateValues(ActionEvent actionEvent) { + if(getFieldPoint() == null) { + return; + } + + getFieldPoint().setCenter(Double.parseDouble(txtX.getText()), Double.parseDouble(txtY.getText())); + getFieldPoint().setRotate(Double.parseDouble(txtRotationField.getText())); + } + + private final SimpleObjectProperty fieldPoint = new SimpleObjectProperty<>(); + + public ObjectProperty fieldPointProperty() { + return fieldPoint; + } + + public FieldPoint getFieldPoint() { + return fieldPoint.get(); + } + + public void setFieldPoint(FieldPoint fieldPoint) { + fieldPointProperty().set(fieldPoint); + } +} diff --git a/src/main/resources/org/frcteam2910/pathviewer/Application.fxml b/src/main/resources/org/frcteam2910/pathviewer/Application.fxml index aeb8b04..bac003b 100644 --- a/src/main/resources/org/frcteam2910/pathviewer/Application.fxml +++ b/src/main/resources/org/frcteam2910/pathviewer/Application.fxml @@ -22,4 +22,7 @@
+ + + diff --git a/src/main/resources/org/frcteam2910/pathviewer/PointEditor.fxml b/src/main/resources/org/frcteam2910/pathviewer/PointEditor.fxml new file mode 100644 index 0000000..114e990 --- /dev/null +++ b/src/main/resources/org/frcteam2910/pathviewer/PointEditor.fxml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + +