From 589a13ed8d51a8938bae9d710d3ab7ef15b3a98c Mon Sep 17 00:00:00 2001
From: Daniel Schramm <xschramm@fi.muni.cz>
Date: Sun, 10 Oct 2021 16:29:58 +0200
Subject: [PATCH] Hausdorff distance recomputed when slider is released

---
 .../analyst/distance/DistancePanel.java       | 24 ++++++++++++++++++-
 1 file changed, 23 insertions(+), 1 deletion(-)

diff --git a/GUI/src/main/java/cz/fidentis/analyst/distance/DistancePanel.java b/GUI/src/main/java/cz/fidentis/analyst/distance/DistancePanel.java
index b18c02e6..34ec91ae 100644
--- a/GUI/src/main/java/cz/fidentis/analyst/distance/DistancePanel.java
+++ b/GUI/src/main/java/cz/fidentis/analyst/distance/DistancePanel.java
@@ -149,7 +149,7 @@ public class DistancePanel extends ControlPanel {
                         public void actionPerformed(ActionEvent e) {
                             originalEnterAction.actionPerformed(e);
                             if (!checkBox.isSelected()) {
-                                return;
+                                return; // Recompute only if the feature point is selected
                             }
                             
                             action.actionPerformed(new ActionEvent(
@@ -160,6 +160,28 @@ public class DistancePanel extends ControlPanel {
                         }
                     }
             );
+            // Add mouse listener of the slider
+            sliderInput.addMouseListener(new MouseAdapter() {
+                private double oldValue = DrawableFeaturePoints.DEFAULT_SIZE;
+                
+                @Override
+                public void mousePressed(MouseEvent e) {
+                    oldValue = Double.parseDouble(sliderInput.getText());
+                }
+                
+                @Override
+                public void mouseReleased(MouseEvent e) {
+                    if (!checkBox.isSelected() || oldValue == Double.parseDouble(sliderInput.getText())) {
+                        return; // Recompute only if the feature point is selected and value changed
+                    }
+                    
+                    action.actionPerformed(new ActionEvent(
+                            e.getSource(),
+                            ActionEvent.ACTION_PERFORMED,
+                            ACTION_COMMAND_DISTANCE_RECOMPUTE)
+                    );
+                }
+            });
             
             fpBuilder.addGap();
             featurePointStats.put(featurePointType, fpBuilder.addLabelLine(null));
-- 
GitLab