Skip to content

Commit ad7aacf

Browse files
committed
Remove nodes by right click menu
1 parent b25838e commit ad7aacf

1 file changed

Lines changed: 24 additions & 3 deletions

File tree

src/main/java/com/easternedgerobotics/rov/fx/DistanceCalculatorViewController.java

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -177,10 +177,17 @@ public void setImageFromPath(final Path path) {
177177
}
178178
final Observable<Boolean> calcPress = JavaFxObservable.valuesOf(view.calculateButton.pressedProperty());
179179
currentDistanceSubscriptions.add(calcPress.filter(x -> !x).skip(1).subscribe(x -> {
180+
final String scalarString = view.xAxisLength.getText();
181+
final float scalar;
182+
try {
183+
scalar = Float.parseFloat(scalarString);
184+
} catch (final NumberFormatException e) {
185+
return;
186+
}
180187
final AxisValue axis = view.axisNode.get().getAxis();
181188
final List<PointValue> pixelPoints = view.imagePoints
182189
.stream().map(TextNode::getPoint).collect(Collectors.toList());
183-
distanceCalculator.calculate(axis, pixelPoints, cameraName).ifPresent(objectPoints -> {
190+
distanceCalculator.calculate(axis, pixelPoints, cameraName, scalar).ifPresent(objectPoints -> {
184191
for (int i = 0; i < objectPoints.size(); i++) {
185192
view.imagePoints.get(i).setText(String.format("(%.2f, %.2f)",
186193
objectPoints.get(i).getX(), objectPoints.get(i).getY()));
@@ -214,17 +221,31 @@ public void setImageFromPath(final Path path) {
214221
.share();
215222

216223
currentDistanceSubscriptions.add(JavaFxObservable.actionEventsOf(axis).withLatestFrom(events, (a, e) -> e)
217-
.subscribe(event -> {
224+
.take(1).subscribe(event -> {
218225
final AxisNode axisNode = new AxisNode();
219226
view.axisNode.set(axisNode);
220227
shapeScene.add(axisNode, event.getX(), event.getY());
228+
contextMenu.getItems().remove(axis);
221229
}));
222230

223231
currentDistanceSubscriptions.add(JavaFxObservable.actionEventsOf(point).withLatestFrom(events, (a, e) -> e)
224232
.subscribe(event -> {
225-
final TextNode imagePoint = new TextNode(new Circle(7, Color.CHARTREUSE));
233+
final TextNode imagePoint = new TextNode(new Circle(7, Color.DEEPPINK));
226234
view.imagePoints.add(imagePoint);
227235
shapeScene.add(imagePoint, event.getX(), event.getY());
236+
final ContextMenu pointMenu = new ContextMenu();
237+
final MenuItem delete = new MenuItem("Delete");
238+
pointMenu.getItems().addAll(delete);
239+
currentDistanceSubscriptions.add(JavaFxObservable
240+
.eventsOf(imagePoint.getHandleShape(), EventType.ROOT)
241+
.filter(e -> e.getEventType().equals(MouseEvent.MOUSE_CLICKED))
242+
.cast(MouseEvent.class)
243+
.filter(e -> e.getButton().equals(MouseButton.SECONDARY))
244+
.subscribe(e -> pointMenu.show(imagePoint.getHandleShape(), e.getScreenX(), e.getScreenY())));
245+
currentDistanceSubscriptions.add(JavaFxObservable.actionEventsOf(delete).take(1).subscribe(e -> {
246+
view.imagePoints.remove(imagePoint);
247+
shapeScene.remove(imagePoint);
248+
}));
228249
}));
229250

230251
} catch (final IOException e) {

0 commit comments

Comments
 (0)