[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:
parent
1ae589d864
commit
3541899b0f
@ -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 {
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user