Commit af7464a1 authored by Daniel Schramm's avatar Daniel Schramm
Browse files

Do not recompute Hausdorff distance if not necessary (feature point is not selected)

parent f890f4d0
Loading
Loading
Loading
Loading
+13 −1
Original line number Diff line number Diff line
@@ -6,10 +6,12 @@ import cz.fidentis.analyst.feature.FeaturePoint;
import cz.fidentis.analyst.feature.FeaturePointType;
import cz.fidentis.analyst.scene.DrawableFeaturePoints;
import cz.fidentis.analyst.symmetry.SymmetryPanel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.swing.AbstractAction;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JCheckBox;
@@ -103,7 +105,17 @@ public class DistancePanel extends ControlPanel {
            final JTextField sliderInput = fpBuilder.addSliderOptionLine(null, null, 100, null);
            sliderInput.setText(ControlPanelBuilder.doubleToStringLocale(DrawableFeaturePoints.DEFAULT_SIZE));
            sliderInput.postActionEvent(); // Set correct position of slider
            sliderInput.addActionListener(createListener(action, ACTION_COMMAND_DISTANCE_RECOMPUTE));
            sliderInput.addActionListener(new AbstractAction() {
                private final ActionListener listener = createListener(action, ACTION_COMMAND_DISTANCE_RECOMPUTE);
                
                @Override
                public void actionPerformed(ActionEvent ae) {
                    if (!checkBox.isSelected()) {
                        return;
                    }
                    listener.actionPerformed(ae); // Recompute only if the feature point is selected
                }
            });
            sliderInput.addActionListener(createListener(action, ACTION_COMMAND_FEATURE_POINT_RESIZE, i));
            
            fpBuilder.addGap();