Use template class for plot configuration
This commit is contained in:
parent
627abcd87e
commit
0fd1a93f5f
@ -29,33 +29,33 @@ import java.awt.event.ItemListener;
|
||||
import java.util.Arrays;
|
||||
|
||||
public class PlotPanel<T extends DataType & Groupable<G>, B extends DataBranch<T>, G extends Group,
|
||||
S extends PlotTypeSelector<G, T>> extends JPanel {
|
||||
C extends PlotConfiguration<T, B>, S extends PlotTypeSelector<G, T>> 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<T, B> customConfiguration;
|
||||
private final C customConfiguration;
|
||||
|
||||
/** The array of presets for the combo box. */
|
||||
private final PlotConfiguration<T, B>[] presetArray;
|
||||
private final C[] presetArray;
|
||||
|
||||
private PlotConfiguration<T, B> defaultConfiguration;
|
||||
private C defaultConfiguration;
|
||||
|
||||
// Data types for the x and y axis + plot configuration
|
||||
private final T[] typesX;
|
||||
private final T[] typesY;
|
||||
protected PlotConfiguration<T, B> configuration;
|
||||
protected C configuration;
|
||||
|
||||
private final JComboBox<PlotConfiguration<T, B>> configurationSelector;
|
||||
private final JComboBox<C> configurationSelector;
|
||||
protected JComboBox<T> domainTypeSelector;
|
||||
private UnitSelector domainUnitSelector;
|
||||
private final JPanel typeSelectorPanel;
|
||||
|
||||
protected int modifying = 0;
|
||||
|
||||
public PlotPanel(T[] typesX, T[] typesY, PlotConfiguration<T, B> customConfiguration, PlotConfiguration<T, B>[] presets,
|
||||
PlotConfiguration<T, B> 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<T extends DataType & Groupable<G>, B extends DataBranch<T
|
||||
|
||||
// Setup the combo box
|
||||
configurationSelector = new JComboBox<>(presetArray);
|
||||
for (PlotConfiguration<T, B> config : presetArray) {
|
||||
for (C config : presetArray) {
|
||||
if (config.getName().equals(configuration.getName())) {
|
||||
configurationSelector.setSelectedItem(config);
|
||||
}
|
||||
@ -88,7 +88,7 @@ public class PlotPanel<T extends DataType & Groupable<G>, B extends DataBranch<T
|
||||
}
|
||||
if (modifying > 0)
|
||||
return;
|
||||
PlotConfiguration<T, B> conf = (PlotConfiguration<T, B>) configurationSelector.getSelectedItem();
|
||||
C conf = (C) configurationSelector.getSelectedItem();
|
||||
if (conf == null || conf == customConfiguration)
|
||||
return;
|
||||
modifying++;
|
||||
@ -238,14 +238,14 @@ public class PlotPanel<T extends DataType & Groupable<G>, B extends DataBranch<T
|
||||
return typeSelectorPanel;
|
||||
}
|
||||
|
||||
protected PlotConfiguration<T, B> getConfiguration() {
|
||||
protected C getConfiguration() {
|
||||
return configuration;
|
||||
}
|
||||
|
||||
protected void setConfiguration(PlotConfiguration<T, B> 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<T extends DataType & Groupable<G>, B extends DataBranch<T
|
||||
}
|
||||
}
|
||||
|
||||
protected void setDefaultConfiguration(PlotConfiguration<T, B> newConfiguration) {
|
||||
protected void setDefaultConfiguration(C newConfiguration) {
|
||||
defaultConfiguration = newConfiguration;
|
||||
}
|
||||
|
||||
|
||||
protected void setToCustom() {
|
||||
modifying++;
|
||||
configuration.setName(CUSTOM);
|
||||
|
@ -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 <sampo.niskanen@iki.fi>
|
||||
*/
|
||||
public class SimulationPlotPanel extends PlotPanel<FlightDataType, FlightDataBranch, FlightDataTypeGroup,
|
||||
PlotTypeSelector<FlightDataTypeGroup, FlightDataType>> {
|
||||
SimulationPlotConfiguration, PlotTypeSelector<FlightDataTypeGroup, FlightDataType>> {
|
||||
@Serial
|
||||
private static final long serialVersionUID = -2227129713185477998L;
|
||||
|
||||
@ -154,9 +153,9 @@ public class SimulationPlotPanel extends PlotPanel<FlightDataType, FlightDataBra
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setDefaultConfiguration(PlotConfiguration<FlightDataType, FlightDataBranch> 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<FlightDataType, FlightDataBra
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
for (FlightEvent.Type t : FlightEvent.Type.values()) {
|
||||
SimulationPlotConfiguration configuration = (SimulationPlotConfiguration) getConfiguration();
|
||||
SimulationPlotConfiguration configuration = getConfiguration();
|
||||
if (configuration != null) {
|
||||
configuration.setEvent(t, true);
|
||||
}
|
||||
@ -271,7 +270,7 @@ public class SimulationPlotPanel extends PlotPanel<FlightDataType, FlightDataBra
|
||||
return null;
|
||||
}
|
||||
setDefaultConfiguration(configuration.clone());
|
||||
return SimulationPlotDialog.getPlot(parent, simulation, (SimulationPlotConfiguration) configuration);
|
||||
return SimulationPlotDialog.getPlot(parent, simulation, configuration);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -326,7 +325,7 @@ public class SimulationPlotPanel extends PlotPanel<FlightDataType, FlightDataBra
|
||||
@Override
|
||||
public Object getValueAt(int row, int column) {
|
||||
return switch (column) {
|
||||
case 0 -> ((SimulationPlotConfiguration) configuration).isEventActive(eventTypes[row]);
|
||||
case 0 -> configuration.isEventActive(eventTypes[row]);
|
||||
case 1 -> eventTypes[row].toString();
|
||||
default -> throw new IndexOutOfBoundsException("column=" + column);
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user