Loading GUI/src/main/java/cz/fidentis/analyst/distance/DistanceAction.java +1 −1 Original line number Diff line number Diff line Loading @@ -91,7 +91,7 @@ public class DistanceAction extends ControlPanelAction { this.hausdorffDistance = null; // recompute only priorities calculateHausdorffDistance(); break; case DistancePanel.ACTION_COMMAND_WEIGHTED_DIST_RECOMPUTE: case DistancePanel.ACTION_COMMAND_DISTANCE_RECOMPUTE: this.visitor = null; // recompute calculateHausdorffDistance(); break; Loading GUI/src/main/java/cz/fidentis/analyst/distance/DistancePanel.java +8 −48 Original line number Diff line number Diff line Loading @@ -6,15 +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.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.swing.BorderFactory; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JLabel; import javax.swing.JPanel; Loading Loading @@ -43,7 +40,7 @@ public class DistancePanel extends ControlPanel { public static final String ACTION_COMMAND_WEIGHTED_DISTANCE = "switch weighted distance on/off"; public static final String ACTION_COMMAND_FEATURE_POINT_HIGHLIGHT = "highlight feature point with color"; public static final String ACTION_COMMAND_FEATURE_POINT_RESIZE = "set size of feature point"; public static final String ACTION_COMMAND_WEIGHTED_DIST_RECOMPUTE = "recompute weighted distance"; public static final String ACTION_COMMAND_DISTANCE_RECOMPUTE = "recompute the Hausdorff distance"; /* * Configuration of panel-specific GUI elements Loading Loading @@ -82,7 +79,7 @@ public class DistancePanel extends ControlPanel { builder.addGap(); builder.addLine(); final JCheckBox weightedDistChBx = builder.addCheckBoxOptionLine( builder.addCheckBoxOptionLine( null, "Weighted Hausdorff distance", false, Loading @@ -92,28 +89,22 @@ public class DistancePanel extends ControlPanel { final JPanel featurePointsPanel = new JPanel(); final ControlPanelBuilder fpBuilder = new ControlPanelBuilder(featurePointsPanel); final List<JCheckBox> fpCheckBoxes = new ArrayList<>(featurePoints.size()); final List<JTextField> fpSliderInputs = new ArrayList<>(featurePoints.size()); featurePointStats = new HashMap<>(featurePoints.size()); for (int i = 0; i < featurePoints.size(); i++) { final FeaturePoint featurePoint = featurePoints.get(i); final JCheckBox checkBox = fpBuilder.addCheckBox( false, createListener(action, ACTION_COMMAND_FEATURE_POINT_HIGHLIGHT, i) createListener(action, ACTION_COMMAND_DISTANCE_RECOMPUTE) ); checkBox.setText(featurePoint.getFeaturePointType().getName()); fpCheckBoxes.add(checkBox); checkBox.addActionListener(createListener(action, ACTION_COMMAND_FEATURE_POINT_HIGHLIGHT, i)); final JTextField sliderInput = fpBuilder.addSliderOptionLine( null, null, 100, createListener(action, ACTION_COMMAND_FEATURE_POINT_RESIZE, i) ); final JTextField sliderInput = fpBuilder.addSliderOptionLine(null, null, 100, null); sliderInput.setText(ControlPanelBuilder.doubleToStringLocale(DrawableFeaturePoints.DEFAULT_SIZE)); sliderInput.postActionEvent(); fpSliderInputs.add(sliderInput); sliderInput.postActionEvent(); // Set correct position of slider sliderInput.addActionListener(createListener(action, ACTION_COMMAND_DISTANCE_RECOMPUTE)); sliderInput.addActionListener(createListener(action, ACTION_COMMAND_FEATURE_POINT_RESIZE, i)); fpBuilder.addGap(); featurePointStats.put(featurePoint.getFeaturePointType(), fpBuilder.addLabelLine(null)); Loading @@ -125,37 +116,6 @@ public class DistancePanel extends ControlPanel { .setBorder(BorderFactory.createTitledBorder("Feature points")); builder.addLine(); final JButton recomputeButton = builder.addButton( "Recompute", createListener(action, ACTION_COMMAND_WEIGHTED_DIST_RECOMPUTE) ); recomputeButton.setEnabled(false); recomputeButton.addActionListener((ActionEvent ae) -> recomputeButton.setEnabled(false) ); weightedDistChBx.addActionListener((ActionEvent ae) -> { if (!weightedDistChBx.isSelected()) { recomputeButton.setEnabled(false); } }); for (final JCheckBox checkBox: fpCheckBoxes) { checkBox.addActionListener((ActionEvent ae) -> { if (weightedDistChBx.isSelected()) { recomputeButton.setEnabled(true); } }); } for (int i = 0; i < fpSliderInputs.size(); i++) { final JTextField sliderInput = fpSliderInputs.get(i); final JCheckBox sliderCheckBox = fpCheckBoxes.get(i); sliderInput.addActionListener((ActionEvent ae) -> { if (weightedDistChBx.isSelected() && sliderCheckBox.isSelected()) { recomputeButton.setEnabled(true); } }); } builder.addLine(); builder.addCaptionLine("Visualization options:"); builder.addLine(); builder.addCheckBoxOptionLine( Loading Loading
GUI/src/main/java/cz/fidentis/analyst/distance/DistanceAction.java +1 −1 Original line number Diff line number Diff line Loading @@ -91,7 +91,7 @@ public class DistanceAction extends ControlPanelAction { this.hausdorffDistance = null; // recompute only priorities calculateHausdorffDistance(); break; case DistancePanel.ACTION_COMMAND_WEIGHTED_DIST_RECOMPUTE: case DistancePanel.ACTION_COMMAND_DISTANCE_RECOMPUTE: this.visitor = null; // recompute calculateHausdorffDistance(); break; Loading
GUI/src/main/java/cz/fidentis/analyst/distance/DistancePanel.java +8 −48 Original line number Diff line number Diff line Loading @@ -6,15 +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.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.swing.BorderFactory; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JLabel; import javax.swing.JPanel; Loading Loading @@ -43,7 +40,7 @@ public class DistancePanel extends ControlPanel { public static final String ACTION_COMMAND_WEIGHTED_DISTANCE = "switch weighted distance on/off"; public static final String ACTION_COMMAND_FEATURE_POINT_HIGHLIGHT = "highlight feature point with color"; public static final String ACTION_COMMAND_FEATURE_POINT_RESIZE = "set size of feature point"; public static final String ACTION_COMMAND_WEIGHTED_DIST_RECOMPUTE = "recompute weighted distance"; public static final String ACTION_COMMAND_DISTANCE_RECOMPUTE = "recompute the Hausdorff distance"; /* * Configuration of panel-specific GUI elements Loading Loading @@ -82,7 +79,7 @@ public class DistancePanel extends ControlPanel { builder.addGap(); builder.addLine(); final JCheckBox weightedDistChBx = builder.addCheckBoxOptionLine( builder.addCheckBoxOptionLine( null, "Weighted Hausdorff distance", false, Loading @@ -92,28 +89,22 @@ public class DistancePanel extends ControlPanel { final JPanel featurePointsPanel = new JPanel(); final ControlPanelBuilder fpBuilder = new ControlPanelBuilder(featurePointsPanel); final List<JCheckBox> fpCheckBoxes = new ArrayList<>(featurePoints.size()); final List<JTextField> fpSliderInputs = new ArrayList<>(featurePoints.size()); featurePointStats = new HashMap<>(featurePoints.size()); for (int i = 0; i < featurePoints.size(); i++) { final FeaturePoint featurePoint = featurePoints.get(i); final JCheckBox checkBox = fpBuilder.addCheckBox( false, createListener(action, ACTION_COMMAND_FEATURE_POINT_HIGHLIGHT, i) createListener(action, ACTION_COMMAND_DISTANCE_RECOMPUTE) ); checkBox.setText(featurePoint.getFeaturePointType().getName()); fpCheckBoxes.add(checkBox); checkBox.addActionListener(createListener(action, ACTION_COMMAND_FEATURE_POINT_HIGHLIGHT, i)); final JTextField sliderInput = fpBuilder.addSliderOptionLine( null, null, 100, createListener(action, ACTION_COMMAND_FEATURE_POINT_RESIZE, i) ); final JTextField sliderInput = fpBuilder.addSliderOptionLine(null, null, 100, null); sliderInput.setText(ControlPanelBuilder.doubleToStringLocale(DrawableFeaturePoints.DEFAULT_SIZE)); sliderInput.postActionEvent(); fpSliderInputs.add(sliderInput); sliderInput.postActionEvent(); // Set correct position of slider sliderInput.addActionListener(createListener(action, ACTION_COMMAND_DISTANCE_RECOMPUTE)); sliderInput.addActionListener(createListener(action, ACTION_COMMAND_FEATURE_POINT_RESIZE, i)); fpBuilder.addGap(); featurePointStats.put(featurePoint.getFeaturePointType(), fpBuilder.addLabelLine(null)); Loading @@ -125,37 +116,6 @@ public class DistancePanel extends ControlPanel { .setBorder(BorderFactory.createTitledBorder("Feature points")); builder.addLine(); final JButton recomputeButton = builder.addButton( "Recompute", createListener(action, ACTION_COMMAND_WEIGHTED_DIST_RECOMPUTE) ); recomputeButton.setEnabled(false); recomputeButton.addActionListener((ActionEvent ae) -> recomputeButton.setEnabled(false) ); weightedDistChBx.addActionListener((ActionEvent ae) -> { if (!weightedDistChBx.isSelected()) { recomputeButton.setEnabled(false); } }); for (final JCheckBox checkBox: fpCheckBoxes) { checkBox.addActionListener((ActionEvent ae) -> { if (weightedDistChBx.isSelected()) { recomputeButton.setEnabled(true); } }); } for (int i = 0; i < fpSliderInputs.size(); i++) { final JTextField sliderInput = fpSliderInputs.get(i); final JCheckBox sliderCheckBox = fpCheckBoxes.get(i); sliderInput.addActionListener((ActionEvent ae) -> { if (weightedDistChBx.isSelected() && sliderCheckBox.isSelected()) { recomputeButton.setEnabled(true); } }); } builder.addLine(); builder.addCaptionLine("Visualization options:"); builder.addLine(); builder.addCheckBoxOptionLine( Loading