From f392760c0efb485e5b8890c9ea45e83f9bce313f Mon Sep 17 00:00:00 2001 From: SiboVG Date: Tue, 27 Aug 2024 00:33:59 +0200 Subject: [PATCH] Update domain type on configuration change --- .../ComponentAnalysisPlotExportPanel.java | 9 ++++++++- .../openrocket/swing/gui/plot/PlotPanel.java | 17 ++++++++++++++++- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/swing/src/main/java/info/openrocket/swing/gui/dialogs/componentanalysis/ComponentAnalysisPlotExportPanel.java b/swing/src/main/java/info/openrocket/swing/gui/dialogs/componentanalysis/ComponentAnalysisPlotExportPanel.java index 0938929a4..21371a65c 100644 --- a/swing/src/main/java/info/openrocket/swing/gui/dialogs/componentanalysis/ComponentAnalysisPlotExportPanel.java +++ b/swing/src/main/java/info/openrocket/swing/gui/dialogs/componentanalysis/ComponentAnalysisPlotExportPanel.java @@ -13,6 +13,7 @@ import info.openrocket.core.startup.Application; import info.openrocket.swing.gui.adaptors.DoubleModel; import info.openrocket.swing.gui.components.EditableSpinner; import info.openrocket.swing.gui.components.UnitSelector; +import info.openrocket.swing.gui.plot.PlotPanel; import net.miginfocom.swing.MigLayout; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -35,7 +36,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -public class ComponentAnalysisPlotExportPanel extends JPanel { +public class ComponentAnalysisPlotExportPanel extends JPanel implements PlotPanel.PlotConfigurationListener { private static final Translator trans = Application.getTranslator(); private static final Logger log = LoggerFactory.getLogger(ComponentAnalysisPlotExportPanel.class); @@ -83,6 +84,7 @@ public class ComponentAnalysisPlotExportPanel extends JPanel { //// Plot data this.plotTab = CAPlotPanel.create(this, types); this.tabbedPane.addTab(trans.get("CAPlotExportDialog.tab.Plot"), null, this.plotTab); + this.plotTab.addPlotConfigurationListener(this); //// Export data this.exportTab = CAExportPanel.create(this, types); @@ -322,4 +324,9 @@ public class ComponentAnalysisPlotExportPanel extends JPanel { } } + @Override + public void onPlotConfigurationChanged(CAPlotConfiguration newConfiguration) { + CADomainDataType type = (CADomainDataType) newConfiguration.getDomainAxisType(); + this.parameterSelector.setSelectedItem(type); + } } diff --git a/swing/src/main/java/info/openrocket/swing/gui/plot/PlotPanel.java b/swing/src/main/java/info/openrocket/swing/gui/plot/PlotPanel.java index f4d299be3..db19478f3 100644 --- a/swing/src/main/java/info/openrocket/swing/gui/plot/PlotPanel.java +++ b/swing/src/main/java/info/openrocket/swing/gui/plot/PlotPanel.java @@ -26,7 +26,9 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; +import java.util.ArrayList; import java.util.Arrays; +import java.util.List; public class PlotPanel, B extends DataBranch, @@ -44,13 +46,14 @@ public class PlotPanel, private final C[] presetArray; private C defaultConfiguration; + private final List> configurationListeners = new ArrayList<>(); // Data types for the x and y axis + plot configuration protected final T[] typesX; protected final T[] typesY; protected C configuration; - private final JComboBox configurationSelector; + protected final JComboBox configurationSelector; protected JComboBox domainTypeSelector; private UnitSelector domainUnitSelector; private final JPanel typeSelectorPanel; @@ -265,6 +268,10 @@ public class PlotPanel, if (modified) { configuration.setName(CUSTOM); } + + for (PlotConfigurationListener listener : configurationListeners) { + listener.onPlotConfigurationChanged(configuration); + } } protected void setDefaultConfiguration(C newConfiguration) { @@ -341,4 +348,12 @@ public class PlotPanel, updatePlots(); }); } + + public void addPlotConfigurationListener(PlotConfigurationListener listener) { + this.configurationListeners.add(listener); + } + + public interface PlotConfigurationListener> { + void onPlotConfigurationChanged(C newConfiguration); + } }