[fixes #1076] Move PresetModel database listener internally

setComponent() of ComponentConfigDialog called pack(), which triggered invalidate() in RocketComponentConfig, thus removing presetModel from the database listeners before the Component Preset window could even be called
This commit is contained in:
Sibo Van Gool 2022-02-01 00:39:22 +01:00
parent 1ae589d864
commit 3541899b0f
2 changed files with 3 additions and 3 deletions

View File

@ -7,6 +7,7 @@ import javax.swing.AbstractListModel;
import javax.swing.ComboBoxModel;
import javax.swing.SwingUtilities;
import net.sf.openrocket.database.ComponentPresetDatabase;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -75,6 +76,7 @@ public class PresetModel extends AbstractListModel implements ComboBoxModel, Com
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
((ComponentPresetDatabase) Application.getComponentPresetDao()).addDatabaseListener(PresetModel.this);
ComponentPresetChooserDialog dialog =
new ComponentPresetChooserDialog(SwingUtilities.getWindowAncestor(parent), component);
dialog.setVisible(true);
@ -82,6 +84,7 @@ public class PresetModel extends AbstractListModel implements ComboBoxModel, Com
if (preset != null) {
setSelectedItem(preset);
}
((ComponentPresetDatabase) Application.getComponentPresetDao()).removeChangeListener(PresetModel.this);
}
});
} else {

View File

@ -22,7 +22,6 @@ import javax.swing.JTextArea;
import javax.swing.JTextField;
import net.miginfocom.swing.MigLayout;
import net.sf.openrocket.database.ComponentPresetDatabase;
import net.sf.openrocket.document.OpenRocketDocument;
import net.sf.openrocket.gui.SpinnerEditor;
import net.sf.openrocket.gui.adaptors.BooleanModel;
@ -94,7 +93,6 @@ public class RocketComponentConfig extends JPanel {
if (component.getPresetType() != null) {
// If the component supports a preset, show the preset selection box.
presetModel = new PresetModel(this, document, component);
((ComponentPresetDatabase) Application.getComponentPresetDao()).addDatabaseListener(presetModel);
presetComboBox = new JComboBox(presetModel);
presetComboBox.setEditable(false);
this.add(presetComboBox, "");
@ -623,7 +621,6 @@ public class RocketComponentConfig extends JPanel {
for (Invalidatable i : invalidatables) {
i.invalidate();
}
((ComponentPresetDatabase) Application.getComponentPresetDao()).removeChangeListener(presetModel);
}