From 0fd1a93f5f22d7f8fdc2a23cd1dabbd52818850e Mon Sep 17 00:00:00 2001 From: SiboVG Date: Tue, 20 Aug 2024 18:33:38 +0200 Subject: [PATCH] Use template class for plot configuration --- .../openrocket/swing/gui/plot/PlotPanel.java | 29 +++++++++---------- .../gui/simulation/SimulationPlotPanel.java | 13 ++++----- 2 files changed, 20 insertions(+), 22 deletions(-) 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 fb8453115..0ffd440f3 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 @@ -29,33 +29,33 @@ import java.awt.event.ItemListener; import java.util.Arrays; public class PlotPanel, B extends DataBranch, G extends Group, - S extends PlotTypeSelector> extends JPanel { + C extends PlotConfiguration, S extends PlotTypeSelector> extends JPanel { private static final Translator trans = Application.getTranslator(); //// Custom protected static final String CUSTOM = trans.get("simplotpanel.CUSTOM"); /** The "Custom" configuration - not to be used for anything other than the title. */ - private final PlotConfiguration customConfiguration; + private final C customConfiguration; /** The array of presets for the combo box. */ - private final PlotConfiguration[] presetArray; + private final C[] presetArray; - private PlotConfiguration defaultConfiguration; + private C defaultConfiguration; // Data types for the x and y axis + plot configuration private final T[] typesX; private final T[] typesY; - protected PlotConfiguration configuration; + protected C configuration; - private final JComboBox> configurationSelector; + private final JComboBox configurationSelector; protected JComboBox domainTypeSelector; private UnitSelector domainUnitSelector; private final JPanel typeSelectorPanel; protected int modifying = 0; - public PlotPanel(T[] typesX, T[] typesY, PlotConfiguration customConfiguration, PlotConfiguration[] presets, - PlotConfiguration defaultConfiguration, Component[] extraWidgetsX, Component[] extraWidgetsY) { + public PlotPanel(T[] typesX, T[] typesY, C customConfiguration, C[] presets, + C defaultConfiguration, Component[] extraWidgetsX, Component[] extraWidgetsY) { super(new MigLayout("fill")); this.customConfiguration = customConfiguration; @@ -70,7 +70,7 @@ public class PlotPanel, B extends DataBranch(presetArray); - for (PlotConfiguration config : presetArray) { + for (C config : presetArray) { if (config.getName().equals(configuration.getName())) { configurationSelector.setSelectedItem(config); } @@ -88,7 +88,7 @@ public class PlotPanel, B extends DataBranch 0) return; - PlotConfiguration conf = (PlotConfiguration) configurationSelector.getSelectedItem(); + C conf = (C) configurationSelector.getSelectedItem(); if (conf == null || conf == customConfiguration) return; modifying++; @@ -238,14 +238,14 @@ public class PlotPanel, B extends DataBranch getConfiguration() { + protected C getConfiguration() { return configuration; } - protected void setConfiguration(PlotConfiguration conf) { + protected void setConfiguration(C conf) { boolean modified = false; - configuration = conf.clone(); + configuration = (C) conf.clone(); if (!Utils.contains(typesX, configuration.getDomainAxisType())) { configuration.setDomainAxisType(typesX[0]); modified = true; @@ -264,11 +264,10 @@ public class PlotPanel, B extends DataBranch newConfiguration) { + protected void setDefaultConfiguration(C newConfiguration) { defaultConfiguration = newConfiguration; } - protected void setToCustom() { modifying++; configuration.setName(CUSTOM); diff --git a/swing/src/main/java/info/openrocket/swing/gui/simulation/SimulationPlotPanel.java b/swing/src/main/java/info/openrocket/swing/gui/simulation/SimulationPlotPanel.java index a3af788bb..cc91db4bd 100644 --- a/swing/src/main/java/info/openrocket/swing/gui/simulation/SimulationPlotPanel.java +++ b/swing/src/main/java/info/openrocket/swing/gui/simulation/SimulationPlotPanel.java @@ -33,7 +33,6 @@ import info.openrocket.core.simulation.FlightEvent; import info.openrocket.core.startup.Application; import info.openrocket.core.preferences.ApplicationPreferences; -import info.openrocket.swing.gui.plot.PlotConfiguration; import info.openrocket.swing.gui.plot.PlotPanel; import info.openrocket.swing.gui.plot.PlotTypeSelector; import info.openrocket.swing.gui.plot.SimulationPlotConfiguration; @@ -50,7 +49,7 @@ import info.openrocket.swing.gui.theme.UITheme; * @author Sampo Niskanen */ public class SimulationPlotPanel extends PlotPanel> { + SimulationPlotConfiguration, PlotTypeSelector> { @Serial private static final long serialVersionUID = -2227129713185477998L; @@ -154,9 +153,9 @@ public class SimulationPlotPanel extends PlotPanel newConfiguration) { + protected void setDefaultConfiguration(SimulationPlotConfiguration newConfiguration) { super.setDefaultConfiguration(newConfiguration); - DEFAULT_CONFIGURATION = (SimulationPlotConfiguration) newConfiguration; + DEFAULT_CONFIGURATION = newConfiguration; } private void addFlightEventsSelectorWidgets(JPanel selectorPanel) { @@ -184,7 +183,7 @@ public class SimulationPlotPanel extends PlotPanel ((SimulationPlotConfiguration) configuration).isEventActive(eventTypes[row]); + case 0 -> configuration.isEventActive(eventTypes[row]); case 1 -> eventTypes[row].toString(); default -> throw new IndexOutOfBoundsException("column=" + column); };