50eb75d6c4be4b087ad0a791fdc45f0ba7e1e35e
[debian/openrocket] / src / net / sf / openrocket / gui / dialogs / motor / thrustcurve / ThrustCurveMotorColumns.java
1 package net.sf.openrocket.gui.dialogs.motor.thrustcurve;
2
3 import java.text.Collator;
4 import java.util.Comparator;
5
6 import net.sf.openrocket.database.ThrustCurveMotorSet;
7 import net.sf.openrocket.l10n.Translator;
8 import net.sf.openrocket.motor.DesignationComparator;
9 import net.sf.openrocket.motor.ThrustCurveMotor;
10 import net.sf.openrocket.startup.Application;
11 import net.sf.openrocket.unit.UnitGroup;
12 import net.sf.openrocket.unit.Value;
13 import net.sf.openrocket.unit.ValueComparator;
14
15
16 /**
17  * Enum defining the table columns.
18  */
19
20 enum ThrustCurveMotorColumns {
21         MANUFACTURER("Manufacturer", 100) {
22                 @Override
23                 public String getValue(ThrustCurveMotorSet m) {
24                         return m.getManufacturer().getDisplayName();
25                 }
26                 
27                 @Override
28                 public Comparator<?> getComparator() {
29                         return Collator.getInstance();
30                 }
31         },
32         DESIGNATION("Designation") {
33                 @Override
34                 public String getValue(ThrustCurveMotorSet m) {
35                         return m.getDesignation();
36                 }
37                 
38                 @Override
39                 public Comparator<?> getComparator() {
40                         return new DesignationComparator();
41                 }
42         },
43         TYPE("Type") {
44                 @Override
45                 public String getValue(ThrustCurveMotorSet m) {
46                         return m.getType().getName();
47                 }
48                 
49                 @Override
50                 public Comparator<?> getComparator() {
51                         return Collator.getInstance();
52                 }
53         },
54         DIAMETER("Diameter") {
55                 @Override
56                 public Object getValue(ThrustCurveMotorSet m) {
57                         return new Value(m.getDiameter(), UnitGroup.UNITS_MOTOR_DIMENSIONS);
58                 }
59                 
60                 @Override
61                 public Comparator<?> getComparator() {
62                         return ValueComparator.INSTANCE;
63                 }
64         },
65         LENGTH("Length") {
66                 @Override
67                 public Object getValue(ThrustCurveMotorSet m) {
68                         return new Value(m.getLength(), UnitGroup.UNITS_MOTOR_DIMENSIONS);
69                 }
70                 
71                 @Override
72                 public Comparator<?> getComparator() {
73                         return ValueComparator.INSTANCE;
74                 }
75         };
76         
77
78         private final String title;
79         private final int width;
80         private static final Translator trans = Application.getTranslator();
81         
82         ThrustCurveMotorColumns(String title) {
83                 this(title, 50);
84         }
85         
86         ThrustCurveMotorColumns(String title, int width) {
87                 this.title = title;
88                 this.width = width;
89         }
90         
91         
92         public abstract Object getValue(ThrustCurveMotorSet m);
93         
94         public abstract Comparator<?> getComparator();
95         
96         public String getTitle() {
97                 return title;
98         }
99         
100         public int getWidth() {
101                 return width;
102         }
103         
104         public String getToolTipText(ThrustCurveMotor m) {
105                 String tip = "<html>";
106                 tip += "<b>" + m.toString() + "</b>";
107                 tip += " (" + m.getMotorType().getDescription() + ")<br><hr>";
108                 
109                 String desc = m.getDescription().trim();
110                 if (desc.length() > 0) {
111                         tip += "<i>" + desc.replace("\n", "<br>") + "</i><br><hr>";
112                 }
113                 
114                 tip += ("Diameter: " +
115                                 UnitGroup.UNITS_MOTOR_DIMENSIONS.getDefaultUnit().toStringUnit(m.getDiameter()) +
116                                 "<br>");
117                 tip += ("Length: " +
118                                 UnitGroup.UNITS_MOTOR_DIMENSIONS.getDefaultUnit().toStringUnit(m.getLength()) +
119                                 "<br>");
120                 tip += ("Maximum thrust: " +
121                                 UnitGroup.UNITS_FORCE.getDefaultUnit().toStringUnit(m.getMaxThrustEstimate()) +
122                                 "<br>");
123                 tip += ("Average thrust: " +
124                                 UnitGroup.UNITS_FORCE.getDefaultUnit().toStringUnit(m.getAverageThrustEstimate()) +
125                                 "<br>");
126                 tip += ("Burn time: " +
127                                 UnitGroup.UNITS_SHORT_TIME.getDefaultUnit()
128                                                 .toStringUnit(m.getBurnTimeEstimate()) + "<br>");
129                 tip += ("Total impulse: " +
130                                 UnitGroup.UNITS_IMPULSE.getDefaultUnit()
131                                                 .toStringUnit(m.getTotalImpulseEstimate()) + "<br>");
132                 tip += ("Launch mass: " +
133                                 UnitGroup.UNITS_MASS.getDefaultUnit().toStringUnit(m.getLaunchCG().weight) +
134                                 "<br>");
135                 tip += ("Empty mass: " +
136                                 UnitGroup.UNITS_MASS.getDefaultUnit()
137                                                 .toStringUnit(m.getEmptyCG().weight));
138                 return tip;
139         }
140         
141 }