@@ -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