1 package net.sf.openrocket.gui.adaptors;
5 import javax.swing.AbstractListModel;
6 import javax.swing.ComboBoxModel;
8 import net.sf.openrocket.preset.ComponentPreset;
9 import net.sf.openrocket.rocketcomponent.RocketComponent;
10 import net.sf.openrocket.startup.Application;
12 public class BodyTubePresetModel extends AbstractListModel implements ComboBoxModel {
14 private final RocketComponent component;
16 private List<ComponentPreset> presets;
18 public BodyTubePresetModel(RocketComponent component) {
19 presets = Application.getDaos().getBodyTubePresetDao().listAll();
20 this.component = component;
23 public static class BodyTubePresetAdapter {
24 // If the ComponentPreset bt is null, then no preset is selected.
25 private ComponentPreset bt;
26 private BodyTubePresetAdapter( ComponentPreset bt ) {
30 public String toString() {
32 return bt.getManufacturer() + " " + bt.getPartNo();
38 public int hashCode() {
41 result = prime * result + ((bt == null) ? 0 : bt.hashCode());
45 public boolean equals(Object obj) {
46 // I don't know why the default equals generated by Eclipse does not work.
47 // instead of relying on bt.equals(other.bt), we have to compare the hashcodes of those objects.
52 if (getClass() != obj.getClass())
54 BodyTubePresetAdapter other = (BodyTubePresetAdapter) obj;
58 } else if (other.bt == null)
60 return bt.hashCode() == other.bt.hashCode();
65 public int getSize() {
66 return presets.size();
70 public Object getElementAt(int index) {
74 return new BodyTubePresetAdapter(presets.get(index));
78 public void setSelectedItem(Object anItem) {
79 BodyTubePresetAdapter selected = (BodyTubePresetAdapter) anItem;
80 if ( selected == null ) {
81 component.loadPreset(null);
83 component.loadPreset(selected.bt);
88 public Object getSelectedItem() {
89 ComponentPreset preset = (ComponentPreset) component.getPresetComponent();
90 if ( preset == null ) {
93 return new BodyTubePresetAdapter(preset);