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 96b18a7d219a9d34cb788f2ac2543f9375231c25..b18c02e69b0d3f655b03c13869045a0e575672dd 100644 --- a/GUI/src/main/java/cz/fidentis/analyst/distance/DistancePanel.java +++ b/GUI/src/main/java/cz/fidentis/analyst/distance/DistancePanel.java @@ -9,6 +9,7 @@ import cz.fidentis.analyst.scene.DrawableFeaturePoints; import cz.fidentis.analyst.symmetry.SymmetryPanel; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.awt.event.KeyEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.DoubleSummaryStatistics; @@ -17,12 +18,14 @@ import java.util.List; import java.util.Map; import java.util.Set; import javax.swing.AbstractAction; +import javax.swing.Action; import javax.swing.BorderFactory; import javax.swing.ImageIcon; import javax.swing.JCheckBox; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; +import javax.swing.KeyStroke; /** * Control panel for Hausdorff distance. @@ -133,18 +136,30 @@ 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(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)); + // Modify listener of the ENTER key press + final Object enterKeyAction = sliderInput.getInputMap() + .get(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0)); + final Action originalEnterAction = sliderInput.getActionMap() + .get(enterKeyAction); + sliderInput.getActionMap().put( + enterKeyAction, + new AbstractAction() { + @Override + public void actionPerformed(ActionEvent e) { + originalEnterAction.actionPerformed(e); + if (!checkBox.isSelected()) { + return; + } + + action.actionPerformed(new ActionEvent( + e.getSource(), + ActionEvent.ACTION_PERFORMED, + ACTION_COMMAND_DISTANCE_RECOMPUTE + )); + } + } + ); fpBuilder.addGap(); featurePointStats.put(featurePointType, fpBuilder.addLabelLine(null));