From 1e6786cdf8d8c4182d1f8696276c7f8212f15e8e Mon Sep 17 00:00:00 2001 From: Daniel Schramm <xschramm@fi.muni.cz> Date: Tue, 14 Sep 2021 13:59:04 +0200 Subject: [PATCH] Display list of feature points --- .../analyst/core/ControlPanelBuilder.java | 18 +++++++++++- .../analyst/distance/DistanceAction.java | 3 +- .../analyst/distance/DistancePanel.java | 28 ++++++++++++++++--- 3 files changed, 43 insertions(+), 6 deletions(-) diff --git a/GUI/src/main/java/cz/fidentis/analyst/core/ControlPanelBuilder.java b/GUI/src/main/java/cz/fidentis/analyst/core/ControlPanelBuilder.java index cb424ebb..f49e9acb 100644 --- a/GUI/src/main/java/cz/fidentis/analyst/core/ControlPanelBuilder.java +++ b/GUI/src/main/java/cz/fidentis/analyst/core/ControlPanelBuilder.java @@ -22,6 +22,7 @@ import javax.swing.JComboBox; import javax.swing.JFormattedTextField; import javax.swing.JLabel; import javax.swing.JPanel; +import javax.swing.JScrollPane; import javax.swing.JSlider; import javax.swing.JTextField; import javax.swing.event.ChangeEvent; @@ -428,5 +429,20 @@ public class ControlPanelBuilder { return slider; } - + + public JScrollPane addScrollPane(JPanel content) { + JScrollPane scrollPane = new JScrollPane(content); + + GridBagConstraints c = new GridBagConstraints(); + c.weighty = 1.0; + c.gridwidth = GridBagConstraints.REMAINDER; + c.gridy = row; + c.gridx = col; + c.anchor = GridBagConstraints.CENTER; + c.fill = GridBagConstraints.BOTH; + controlPanel.add(scrollPane, c); + + return scrollPane; + } + } diff --git a/GUI/src/main/java/cz/fidentis/analyst/distance/DistanceAction.java b/GUI/src/main/java/cz/fidentis/analyst/distance/DistanceAction.java index 93db8065..c05b2f58 100644 --- a/GUI/src/main/java/cz/fidentis/analyst/distance/DistanceAction.java +++ b/GUI/src/main/java/cz/fidentis/analyst/distance/DistanceAction.java @@ -34,7 +34,7 @@ public class DistanceAction extends ControlPanelAction { */ public DistanceAction(Canvas canvas, JTabbedPane topControlPanel) { super(canvas, topControlPanel); - this.controlPanel = new DistancePanel(this); + this.controlPanel = new DistancePanel(this, getSecondaryFeaturePoints().getFeaturePoints()); } @Override @@ -93,4 +93,5 @@ public class DistanceAction extends ControlPanelAction { getSecondaryDrawableFace().setHeatMap(visitor.getDistances()); } + } 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 fe8f5da8..517d5adc 100644 --- a/GUI/src/main/java/cz/fidentis/analyst/distance/DistancePanel.java +++ b/GUI/src/main/java/cz/fidentis/analyst/distance/DistancePanel.java @@ -2,15 +2,19 @@ package cz.fidentis.analyst.distance; import cz.fidentis.analyst.core.ControlPanel; import cz.fidentis.analyst.core.ControlPanelBuilder; +import cz.fidentis.analyst.feature.FeaturePoint; import cz.fidentis.analyst.symmetry.SymmetryPanel; import java.awt.event.ActionListener; import java.util.List; import javax.swing.ImageIcon; +import javax.swing.JCheckBox; +import javax.swing.JPanel; /** * Control panel for Hausdorff distance. * * @author Radek Oslejsek + * @author Daniel Schramm */ public class DistancePanel extends ControlPanel { @@ -30,17 +34,17 @@ public class DistancePanel extends ControlPanel { /* * Configuration of panel-specific GUI elements */ - public static final String STRATEGY_POINT_TO_POINT= "Point to point"; - public static final String STRATEGY_POINT_TO_TRIANGLE= "Point to triangle"; + public static final String STRATEGY_POINT_TO_POINT = "Point to point"; + public static final String STRATEGY_POINT_TO_TRIANGLE = "Point to triangle"; /** * Constructor. * @param action Action listener */ - public DistancePanel(ActionListener action) { + public DistancePanel(ActionListener action, List<FeaturePoint> featurePoints) { this.setName(NAME); - ControlPanelBuilder builder = new ControlPanelBuilder(this); + final ControlPanelBuilder builder = new ControlPanelBuilder(this); builder.addCaptionLine("Computation options:"); builder.addLine(); @@ -61,6 +65,22 @@ public class DistancePanel extends ControlPanel { builder.addGap(); builder.addLine(); + final JPanel featurePointsPanel = new JPanel(); + final ControlPanelBuilder fpBuilder = new ControlPanelBuilder(featurePointsPanel); + for (int i = 0; i < featurePoints.size(); i++) { + final FeaturePoint featurePoint = featurePoints.get(i); + + final JCheckBox checkBox = fpBuilder.addCheckBox( + false, + null // TODO implement action + ); + checkBox.setText(featurePoint.getFeaturePointType().getName()); + + fpBuilder.addLine(); + } + builder.addScrollPane(featurePointsPanel); + builder.addLine(); + builder.addCaptionLine("Visualization options:"); builder.addLine(); builder.addCheckBoxOptionLine( -- GitLab