From 1f6df48d97a54f1219de0946735fe0905080b4d3 Mon Sep 17 00:00:00 2001 From: SiboVG Date: Mon, 12 Aug 2024 17:20:06 +0200 Subject: [PATCH] Ensure new model uses the selected item from the old model --- .../swing/gui/simulation/SimulationPlotPanel.java | 5 +++-- .../gui/widgets/GroupableAndSearchableComboBox.java | 13 +++++++++---- 2 files changed, 12 insertions(+), 6 deletions(-) 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 396d2d901..c9dab7191 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 @@ -35,6 +35,7 @@ import info.openrocket.core.preferences.ApplicationPreferences; import info.openrocket.core.unit.Unit; import info.openrocket.core.util.Utils; +import info.openrocket.swing.gui.widgets.GroupableAndSearchableComboBox; import net.miginfocom.swing.MigLayout; import info.openrocket.swing.gui.components.DescriptionArea; import info.openrocket.swing.gui.components.UnitSelector; @@ -101,7 +102,7 @@ public class SimulationPlotPanel extends JPanel { private JComboBox configurationSelector; - private JComboBox domainTypeSelector; + private GroupableAndSearchableComboBox domainTypeSelector; private UnitSelector domainUnitSelector; private JPanel typeSelectorPanel; @@ -487,7 +488,7 @@ public class SimulationPlotPanel extends JPanel { private final String[] POSITIONS = { AUTO_NAME, LEFT_NAME, RIGHT_NAME }; private final int index; - private final JComboBox typeSelector; + private final GroupableAndSearchableComboBox typeSelector; private UnitSelector unitSelector; private JComboBox axisSelector; diff --git a/swing/src/main/java/info/openrocket/swing/gui/widgets/GroupableAndSearchableComboBox.java b/swing/src/main/java/info/openrocket/swing/gui/widgets/GroupableAndSearchableComboBox.java index 889057329..f8118a9d6 100644 --- a/swing/src/main/java/info/openrocket/swing/gui/widgets/GroupableAndSearchableComboBox.java +++ b/swing/src/main/java/info/openrocket/swing/gui/widgets/GroupableAndSearchableComboBox.java @@ -152,6 +152,9 @@ public class GroupableAndSearchableComboBox(itemGroupMap); // Create a copy to avoid external modifications this.allItems = extractItemsFromMap(itemGroupMap); - // Update the existing model instead of creating a new one + // Update the model if (getModel() instanceof DefaultComboBoxModel) { + T selectedItem = (T) getModel().getSelectedItem(); ComboBoxModel model = new DefaultComboBoxModel<>(new Vector<>(allItems)); + model.setSelectedItem(selectedItem); setModel(model); setupModelListener(model); } @@ -364,7 +369,7 @@ public class GroupableAndSearchableComboBox model) { - if (model == null) { + /*if (model == null) { return; } model.addListDataListener(this); @@ -447,7 +452,7 @@ public class GroupableAndSearchableComboBox