X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=core%2Fsrc%2Fnet%2Fsf%2Fopenrocket%2Fgui%2Fadaptors%2FPresetModel.java;h=881c195ffb00237e0d64528a48394351b1108368;hb=00fab975b3bea3b01f51d5bb119de0dae980f108;hp=3a111d92a1c4f5622d4ba09da05ff35dbeaabb5d;hpb=2c8e8e6cf8cb3108e34dd562b5746d0c09f9897c;p=debian%2Fopenrocket diff --git a/core/src/net/sf/openrocket/gui/adaptors/PresetModel.java b/core/src/net/sf/openrocket/gui/adaptors/PresetModel.java index 3a111d92..881c195f 100644 --- a/core/src/net/sf/openrocket/gui/adaptors/PresetModel.java +++ b/core/src/net/sf/openrocket/gui/adaptors/PresetModel.java @@ -1,12 +1,15 @@ package net.sf.openrocket.gui.adaptors; +import java.awt.Component; import java.util.List; import javax.swing.AbstractListModel; import javax.swing.ComboBoxModel; +import javax.swing.SwingUtilities; import net.sf.openrocket.database.Database; import net.sf.openrocket.database.DatabaseListener; +import net.sf.openrocket.gui.dialogs.preset.ComponentPresetChooserDialog; import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.logging.LogHelper; import net.sf.openrocket.preset.ComponentPreset; @@ -20,16 +23,17 @@ public class PresetModel extends AbstractListModel implements ComboBoxModel, Com private static final LogHelper log = Application.getLogger(); private static final Translator trans = Application.getTranslator(); - private static final String SELECT_PRESET = trans.get("lbl.select"); + private static final String NONE_SELECTED = ""; private static final String SELECT_DATABASE = trans.get("lbl.database"); - + private final Component parent; private final RocketComponent component; private ComponentPreset previousPreset; private List presets; - public PresetModel(RocketComponent component) { + public PresetModel(Component parent, RocketComponent component) { + this.parent = parent; presets = Application.getComponentPresetDao().listForType(component.getPresetType(), true); this.component = component; previousPreset = component.getPresetComponent(); @@ -44,7 +48,7 @@ public class PresetModel extends AbstractListModel implements ComboBoxModel, Com @Override public Object getElementAt(int index) { if (index == 0) { - return SELECT_PRESET; + return NONE_SELECTED; } if (index == getSize() - 1) { return SELECT_DATABASE; @@ -58,10 +62,17 @@ public class PresetModel extends AbstractListModel implements ComboBoxModel, Com if (item == null) { // FIXME: What to do? - } else if (item.equals(SELECT_PRESET)) { + } else if (item.equals(NONE_SELECTED)) { component.clearPreset(); } else if (item.equals(SELECT_DATABASE)) { - // FIXME: Open database dialog + // FIXME - when the dialog first appears, the preset drop down still is open and has focus. + // we need to force focus to the new dialog. + ComponentPresetChooserDialog dialog = + new ComponentPresetChooserDialog( SwingUtilities.getWindowAncestor(PresetModel.this.parent), + PresetModel.this.component); + dialog.setVisible(true); + ComponentPreset preset = dialog.getSelectedComponentPreset(); + setSelectedItem(preset); } else { // FIXME: Add undo point here component.loadPreset((ComponentPreset) item); @@ -72,7 +83,7 @@ public class PresetModel extends AbstractListModel implements ComboBoxModel, Com public Object getSelectedItem() { ComponentPreset preset = component.getPresetComponent(); if (preset == null) { - return SELECT_PRESET; + return NONE_SELECTED; } else { return preset; }