Initial work on BodyTube ComponentPresets.
[debian/openrocket] / core / src / net / sf / openrocket / gui / adaptors / BodyTubePresetModel.java
1 package net.sf.openrocket.gui.adaptors;
2
3 import java.util.List;
4
5 import javax.swing.AbstractListModel;
6 import javax.swing.ComboBoxModel;
7 import javax.swing.event.ListDataListener;
8
9 import net.sf.openrocket.preset.ComponentPreset;
10 import net.sf.openrocket.rocketcomponent.ComponentChangeEvent;
11 import net.sf.openrocket.rocketcomponent.ComponentChangeListener;
12 import net.sf.openrocket.rocketcomponent.RocketComponent;
13 import net.sf.openrocket.startup.Application;
14
15 public class BodyTubePresetModel extends AbstractListModel implements
16                 ComboBoxModel, ComponentChangeListener {
17
18         private final RocketComponent component;
19
20         private List<ComponentPreset> presets;
21         
22         public BodyTubePresetModel(RocketComponent component) {
23                 presets = Application.getDaos().getBodyTubePresetDao().listAll();
24                 this.component = component;
25         }
26         
27         public static class BodyTubePresetAdapter {
28                 private ComponentPreset bt;
29                 private BodyTubePresetAdapter( ComponentPreset bt ) {
30                         this.bt = bt;
31                 }
32                 @Override
33                 public String toString() {
34                         return bt.getManufacturer() + " " + bt.getPartNo();
35                 }
36                 @Override
37                 public int hashCode() {
38                         final int prime = 31;
39                         int result = 1;
40                         result = prime * result + ((bt == null) ? 0 : bt.hashCode());
41                         return result;
42                 }
43                 @Override
44                 public boolean equals(Object obj) {
45                         if (this == obj)
46                                 return true;
47                         if (obj == null)
48                                 return false;
49                         if (getClass() != obj.getClass())
50                                 return false;
51                         BodyTubePresetAdapter other = (BodyTubePresetAdapter) obj;
52                         if (bt == null) {
53                                 if (other.bt != null)
54                                         return false;
55                         } else if (!bt.equals(other.bt))
56                                 return false;
57                         return true;
58                 }
59         }
60         
61         @Override
62         public int getSize() {
63                 return presets.size();
64         }
65
66         @Override
67         public Object getElementAt(int index) {
68                 return new BodyTubePresetAdapter(presets.get(index));
69         }
70
71         @Override
72         public void addListDataListener(ListDataListener l) {
73                 // TODO Auto-generated method stub
74
75         }
76
77         @Override
78         public void removeListDataListener(ListDataListener l) {
79                 // TODO Auto-generated method stub
80
81         }
82
83         @Override
84         public void componentChanged(ComponentChangeEvent e) {
85                 // TODO Auto-generated method stub
86
87         }
88
89         @Override
90         public void setSelectedItem(Object anItem) {
91                 BodyTubePresetAdapter selected = (BodyTubePresetAdapter) anItem;
92                 component.loadPreset(selected.bt);
93         }
94
95         @Override
96         public Object getSelectedItem() {
97                 ComponentPreset preset = (ComponentPreset) component.getPresetComponent();
98                 if ( preset == null ) {
99                         return null;
100                 } else {
101                         return new BodyTubePresetAdapter(preset);
102                 }
103         }
104
105 }