[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.ComboBoxModel;
|
||||||
import javax.swing.SwingUtilities;
|
import javax.swing.SwingUtilities;
|
||||||
|
|
||||||
|
import net.sf.openrocket.database.ComponentPresetDatabase;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
@ -75,6 +76,7 @@ public class PresetModel extends AbstractListModel implements ComboBoxModel, Com
|
|||||||
SwingUtilities.invokeLater(new Runnable() {
|
SwingUtilities.invokeLater(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
|
((ComponentPresetDatabase) Application.getComponentPresetDao()).addDatabaseListener(PresetModel.this);
|
||||||
ComponentPresetChooserDialog dialog =
|
ComponentPresetChooserDialog dialog =
|
||||||
new ComponentPresetChooserDialog(SwingUtilities.getWindowAncestor(parent), component);
|
new ComponentPresetChooserDialog(SwingUtilities.getWindowAncestor(parent), component);
|
||||||
dialog.setVisible(true);
|
dialog.setVisible(true);
|
||||||
@ -82,6 +84,7 @@ public class PresetModel extends AbstractListModel implements ComboBoxModel, Com
|
|||||||
if (preset != null) {
|
if (preset != null) {
|
||||||
setSelectedItem(preset);
|
setSelectedItem(preset);
|
||||||
}
|
}
|
||||||
|
((ComponentPresetDatabase) Application.getComponentPresetDao()).removeChangeListener(PresetModel.this);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@ -22,7 +22,6 @@ import javax.swing.JTextArea;
|
|||||||
import javax.swing.JTextField;
|
import javax.swing.JTextField;
|
||||||
|
|
||||||
import net.miginfocom.swing.MigLayout;
|
import net.miginfocom.swing.MigLayout;
|
||||||
import net.sf.openrocket.database.ComponentPresetDatabase;
|
|
||||||
import net.sf.openrocket.document.OpenRocketDocument;
|
import net.sf.openrocket.document.OpenRocketDocument;
|
||||||
import net.sf.openrocket.gui.SpinnerEditor;
|
import net.sf.openrocket.gui.SpinnerEditor;
|
||||||
import net.sf.openrocket.gui.adaptors.BooleanModel;
|
import net.sf.openrocket.gui.adaptors.BooleanModel;
|
||||||
@ -94,7 +93,6 @@ public class RocketComponentConfig extends JPanel {
|
|||||||
if (component.getPresetType() != null) {
|
if (component.getPresetType() != null) {
|
||||||
// If the component supports a preset, show the preset selection box.
|
// If the component supports a preset, show the preset selection box.
|
||||||
presetModel = new PresetModel(this, document, component);
|
presetModel = new PresetModel(this, document, component);
|
||||||
((ComponentPresetDatabase) Application.getComponentPresetDao()).addDatabaseListener(presetModel);
|
|
||||||
presetComboBox = new JComboBox(presetModel);
|
presetComboBox = new JComboBox(presetModel);
|
||||||
presetComboBox.setEditable(false);
|
presetComboBox.setEditable(false);
|
||||||
this.add(presetComboBox, "");
|
this.add(presetComboBox, "");
|
||||||
@ -623,7 +621,6 @@ public class RocketComponentConfig extends JPanel {
|
|||||||
for (Invalidatable i : invalidatables) {
|
for (Invalidatable i : invalidatables) {
|
||||||
i.invalidate();
|
i.invalidate();
|
||||||
}
|
}
|
||||||
((ComponentPresetDatabase) Application.getComponentPresetDao()).removeChangeListener(presetModel);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user