import net.sf.openrocket.rocketcomponent.ComponentChangeListener;
import net.sf.openrocket.rocketcomponent.RocketComponent;
import net.sf.openrocket.startup.Application;
+import net.sf.openrocket.util.BugException;
public class PresetModel extends AbstractListModel implements ComboBoxModel, ComponentChangeListener, DatabaseListener<ComponentPreset> {
-
+
private static final LogHelper log = Application.getLogger();
private static final Translator trans = Application.getTranslator();
-
- private static final String NONE_SELECTED = "";
+
+ private static final String NONE_SELECTED = trans.get("lbl.select");
private static final String SELECT_DATABASE = trans.get("lbl.database");
-
+
private final Component parent;
private final RocketComponent component;
private ComponentPreset previousPreset;
-
+
private List<ComponentPreset> presets;
-
+
public PresetModel(Component parent, RocketComponent component) {
this.parent = parent;
presets = Application.getComponentPresetDao().listForType(component.getPresetType(), true);
previousPreset = component.getPresetComponent();
component.addComponentChangeListener(this);
}
-
+
@Override
public int getSize() {
return presets.size() + 2;
}
-
+
@Override
public Object getElementAt(int index) {
if (index == 0) {
}
return presets.get(index - 1);
}
-
+
@Override
public void setSelectedItem(Object item) {
log.user("User selected preset item '" + item + "' for component " + component);
-
+
if (item == null) {
// FIXME: What to do?
+ throw new BugException("item is null");
} else if (item.equals(NONE_SELECTED)) {
component.clearPreset();
} else if (item.equals(SELECT_DATABASE)) {
- SwingUtilities.invokeLater( new Runnable() {
+ SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
- ComponentPresetChooserDialog dialog =
- new ComponentPresetChooserDialog( SwingUtilities.getWindowAncestor(PresetModel.this.parent),
- PresetModel.this.component);
+ ComponentPresetChooserDialog dialog =
+ new ComponentPresetChooserDialog(SwingUtilities.getWindowAncestor(parent), component);
dialog.setVisible(true);
ComponentPreset preset = dialog.getSelectedComponentPreset();
- setSelectedItem(preset);
-
+ if (preset != null) {
+ setSelectedItem(preset);
+ }
}
});
} else {
component.loadPreset((ComponentPreset) item);
}
}
-
+
@Override
public Object getSelectedItem() {
ComponentPreset preset = component.getPresetComponent();
return preset;
}
}
-
+
@Override
public void componentChanged(ComponentChangeEvent e) {
if (previousPreset != component.getPresetComponent()) {
fireContentsChanged(this, 0, getSize());
}
}
-
+
@Override
public void elementAdded(ComponentPreset element, Database<ComponentPreset> source) {
presets = Application.getComponentPresetDao().listForType(component.getPresetType(), true);
this.fireContentsChanged(this, 0, getSize());
}
-
+
@Override
public void elementRemoved(ComponentPreset element, Database<ComponentPreset> source) {
presets = Application.getComponentPresetDao().listForType(component.getPresetType(), true);
this.fireContentsChanged(this, 0, getSize());
}
-
+
}