Added CaseInfo enum and compatible case information to
MotorInformationPanl.
This commit is contained in:
parent
17540d160c
commit
4c56c53135
@ -1185,6 +1185,7 @@ TCMotorSelPan.lbl.Launchmass = Launch mass:
|
||||
TCMotorSelPan.lbl.Emptymass = Empty mass:
|
||||
TCMotorSelPan.lbl.Caseinfo = Case info:
|
||||
TCMotorSelPan.lbl.Propinfo = Propellant:
|
||||
TCMotorSelPan.lbl.CompatibleCases = Compatible Cases
|
||||
TCMotorSelPan.lbl.Datapoints = Data points:
|
||||
TCMotorSelPan.lbl.Digest = Digest:
|
||||
TCMotorSelPan.title.Thrustcurve = Thrust curve:
|
||||
|
94
core/src/net/sf/openrocket/motor/CaseInfo.java
Normal file
94
core/src/net/sf/openrocket/motor/CaseInfo.java
Normal file
@ -0,0 +1,94 @@
|
||||
package net.sf.openrocket.motor;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Enumeration of reloadable hardware which OpenRocket supports for substitution.
|
||||
*
|
||||
*/
|
||||
public enum CaseInfo {
|
||||
|
||||
RMS29_100("RMS-29/100"), RMS29_120("RMS-29/120"), RMS29_180("RMS-29/180"), RMS29_240("RMS-29/240"), RMS29_360("RMS-29/360"),
|
||||
|
||||
RMS38_120("RMS-38/120"), RMS38_240("RMS-38/240"), RMS38_360("RMS-38/360"), RMS38_480("RMS-38/480"), RMS38_600("RMS-38/600"), RMS38_720("RMS-38/720"),
|
||||
|
||||
RMS54_426("RMS-54/426"), RMS54_852("RMS-54/852"), RMS54_1280("RMS-54/1280"), RMS54_1706("RMS-54/1706"), RMS54_2560("RMS-54/2560"), RMS54_2800("RMS-54/2800"),
|
||||
|
||||
PRO29_1("Pro29-1G"), PRO29_2("Pro29-2G"), PRO29_3("Pro29-3G"), PRO29_4("Pro29-4G"), PRO29_5("Pro29-5G"), PRO29_6("Pro29-6G"), PRO29_6XL("Pro29-6GXL"),
|
||||
|
||||
PRO38_1("Pro38-1G"), PRO38_2("Pro38-2G"), PRO38_3("Pro38-4G"), PRO38_4("Pro38-4G"), PRO38_5("Pro38-5G"), PRO38_6("Pro38-6G"), PRO38_6XL("Pro38-6GXL"),
|
||||
|
||||
PRO54_1("Pro54-1G"), PRO54_2("Pro54-2G"), PRO54_3("Pro54-3G"), PRO54_4("Pro54-4G"), PRO54_5("Pro54-5G"), PRO54_6("Pro54-6G"), PRO54_6XL("Pro54-6GXL");
|
||||
|
||||
private String label;
|
||||
|
||||
private CaseInfo(String label) {
|
||||
this.label = label;
|
||||
}
|
||||
|
||||
public static CaseInfo parse(String label) {
|
||||
return labelMapping.get(label);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return label;
|
||||
}
|
||||
|
||||
public CaseInfo[] getCompatibleCases() {
|
||||
return compatibleCases.get(this);
|
||||
}
|
||||
|
||||
private static Map<String, CaseInfo> labelMapping;
|
||||
private static Map<CaseInfo, CaseInfo[]> compatibleCases;
|
||||
|
||||
static {
|
||||
labelMapping = new HashMap<>();
|
||||
for (CaseInfo ci : CaseInfo.values()) {
|
||||
labelMapping.put(ci.label, ci);
|
||||
}
|
||||
|
||||
compatibleCases = new HashMap<>();
|
||||
|
||||
compatibleCases.put(RMS29_100, new CaseInfo[] { RMS29_100, RMS29_120, RMS29_180 });
|
||||
compatibleCases.put(RMS29_120, new CaseInfo[] { RMS29_120, RMS29_180, RMS29_240 });
|
||||
compatibleCases.put(RMS29_180, new CaseInfo[] { RMS29_180, RMS29_240, RMS29_360 });
|
||||
compatibleCases.put(RMS29_240, new CaseInfo[] { RMS29_240, RMS29_360 });
|
||||
compatibleCases.put(RMS29_360, new CaseInfo[] { RMS29_360 });
|
||||
compatibleCases.put(RMS38_120, new CaseInfo[] { RMS38_120, RMS38_240, RMS38_360 });
|
||||
compatibleCases.put(RMS38_240, new CaseInfo[] { RMS38_240, RMS38_360, RMS38_480 });
|
||||
compatibleCases.put(RMS38_360, new CaseInfo[] { RMS38_360, RMS38_480, RMS38_600 });
|
||||
compatibleCases.put(RMS38_480, new CaseInfo[] { RMS38_480, RMS38_600, RMS38_720 });
|
||||
compatibleCases.put(RMS38_600, new CaseInfo[] { RMS38_600, RMS38_720 });
|
||||
compatibleCases.put(RMS38_720, new CaseInfo[] { RMS38_720 });
|
||||
compatibleCases.put(RMS54_426, new CaseInfo[] { RMS54_426, RMS54_852, RMS54_1280 });
|
||||
compatibleCases.put(RMS54_852, new CaseInfo[] { RMS54_852, RMS54_1280, RMS54_1706 });
|
||||
compatibleCases.put(RMS54_1280, new CaseInfo[] { RMS54_1280, RMS54_1706, RMS54_2560 });
|
||||
compatibleCases.put(RMS54_1706, new CaseInfo[] { RMS54_1706, RMS54_2560, RMS54_2800 });
|
||||
compatibleCases.put(RMS54_2560, new CaseInfo[] { RMS54_2560, RMS54_2800 });
|
||||
compatibleCases.put(RMS54_2800, new CaseInfo[] { RMS54_2800 });
|
||||
compatibleCases.put(PRO29_1, new CaseInfo[] { PRO29_1, PRO29_2, PRO29_3 });
|
||||
compatibleCases.put(PRO29_2, new CaseInfo[] { PRO29_2, PRO29_3, PRO29_4 });
|
||||
compatibleCases.put(PRO29_3, new CaseInfo[] { PRO29_3, PRO29_4, PRO29_5 });
|
||||
compatibleCases.put(PRO29_4, new CaseInfo[] { PRO29_4, PRO29_5, PRO29_6 });
|
||||
compatibleCases.put(PRO29_5, new CaseInfo[] { PRO29_5, PRO29_6, PRO29_6XL });
|
||||
compatibleCases.put(PRO29_6, new CaseInfo[] { PRO29_6, PRO29_6XL });
|
||||
compatibleCases.put(PRO29_6XL, new CaseInfo[] { PRO29_6XL });
|
||||
compatibleCases.put(PRO38_1, new CaseInfo[] { PRO38_1, PRO38_2, PRO38_3 });
|
||||
compatibleCases.put(PRO38_2, new CaseInfo[] { PRO38_2, PRO38_3, PRO38_4 });
|
||||
compatibleCases.put(PRO38_3, new CaseInfo[] { PRO38_3, PRO38_4, PRO38_5 });
|
||||
compatibleCases.put(PRO38_4, new CaseInfo[] { PRO38_4, PRO38_5, PRO38_6 });
|
||||
compatibleCases.put(PRO38_5, new CaseInfo[] { PRO38_5, PRO38_6, PRO38_6XL });
|
||||
compatibleCases.put(PRO38_6, new CaseInfo[] { PRO38_6, PRO38_6XL });
|
||||
compatibleCases.put(PRO38_6XL, new CaseInfo[] { PRO38_6XL });
|
||||
compatibleCases.put(PRO54_1, new CaseInfo[] { PRO54_1, PRO54_2, PRO54_3 });
|
||||
compatibleCases.put(PRO54_2, new CaseInfo[] { PRO54_2, PRO54_3, PRO54_4 });
|
||||
compatibleCases.put(PRO54_3, new CaseInfo[] { PRO54_3, PRO54_4, PRO54_5 });
|
||||
compatibleCases.put(PRO54_4, new CaseInfo[] { PRO54_4, PRO54_5, PRO54_6 });
|
||||
compatibleCases.put(PRO54_5, new CaseInfo[] { PRO54_5, PRO54_6, PRO54_6XL });
|
||||
compatibleCases.put(PRO54_6, new CaseInfo[] { PRO54_6, PRO54_6XL });
|
||||
compatibleCases.put(PRO54_6XL, new CaseInfo[] { PRO54_6XL });
|
||||
}
|
||||
|
||||
}
|
@ -248,6 +248,17 @@ public class ThrustCurveMotor implements Motor, Comparable<ThrustCurveMotor>, Se
|
||||
return caseInfo;
|
||||
}
|
||||
|
||||
public CaseInfo getCaseInfoEnum() {
|
||||
return CaseInfo.parse(caseInfo);
|
||||
}
|
||||
|
||||
public CaseInfo[] getCompatibleCases() {
|
||||
CaseInfo myCase = getCaseInfoEnum();
|
||||
if (myCase == null) {
|
||||
return new CaseInfo[] {};
|
||||
}
|
||||
return myCase.getCompatibleCases();
|
||||
}
|
||||
|
||||
public String getPropellantInfo() {
|
||||
return propellantInfo;
|
||||
|
@ -16,14 +16,6 @@ import javax.swing.JScrollPane;
|
||||
import javax.swing.JTextArea;
|
||||
import javax.swing.SwingUtilities;
|
||||
|
||||
import net.miginfocom.swing.MigLayout;
|
||||
import net.sf.openrocket.gui.util.GUIUtil;
|
||||
import net.sf.openrocket.gui.util.Icons;
|
||||
import net.sf.openrocket.l10n.Translator;
|
||||
import net.sf.openrocket.motor.ThrustCurveMotor;
|
||||
import net.sf.openrocket.startup.Application;
|
||||
import net.sf.openrocket.unit.UnitGroup;
|
||||
|
||||
import org.jfree.chart.ChartFactory;
|
||||
import org.jfree.chart.ChartPanel;
|
||||
import org.jfree.chart.JFreeChart;
|
||||
@ -34,6 +26,15 @@ import org.jfree.chart.title.TextTitle;
|
||||
import org.jfree.data.xy.XYSeries;
|
||||
import org.jfree.data.xy.XYSeriesCollection;
|
||||
|
||||
import net.miginfocom.swing.MigLayout;
|
||||
import net.sf.openrocket.gui.util.GUIUtil;
|
||||
import net.sf.openrocket.gui.util.Icons;
|
||||
import net.sf.openrocket.l10n.Translator;
|
||||
import net.sf.openrocket.motor.ThrustCurveMotor;
|
||||
import net.sf.openrocket.startup.Application;
|
||||
import net.sf.openrocket.unit.UnitGroup;
|
||||
import net.sf.openrocket.utils.StringUtils;
|
||||
|
||||
class MotorInformationPanel extends JPanel {
|
||||
|
||||
private static final int ZOOM_ICON_POSITION_NEGATIVE_X = 50;
|
||||
@ -56,9 +57,10 @@ class MotorInformationPanel extends JPanel {
|
||||
private final JLabel burnTimeLabel;
|
||||
private final JLabel launchMassLabel;
|
||||
private final JLabel emptyMassLabel;
|
||||
private final JLabel dataPointsLabel;
|
||||
private final JLabel caseInfoLabel;
|
||||
private final JLabel propInfoLabel;
|
||||
private final JLabel dataPointsLabel;
|
||||
private final JLabel compatibleCasesLabel;
|
||||
private final JLabel digestLabel;
|
||||
|
||||
private final JTextArea comment;
|
||||
@ -118,6 +120,11 @@ class MotorInformationPanel extends JPanel {
|
||||
propInfoLabel = new JLabel();
|
||||
this.add(propInfoLabel, "wrap");
|
||||
|
||||
//// compatible cases:
|
||||
this.add(new JLabel(trans.get("TCMotorSelPan.lbl.CompatibleCases")));
|
||||
compatibleCasesLabel = new JLabel();
|
||||
this.add(compatibleCasesLabel, "wrap");
|
||||
|
||||
//// Data points:
|
||||
this.add(new JLabel(trans.get("TCMotorSelPan.lbl.Datapoints")));
|
||||
dataPointsLabel = new JLabel();
|
||||
@ -226,6 +233,7 @@ class MotorInformationPanel extends JPanel {
|
||||
emptyMassLabel.setText("");
|
||||
caseInfoLabel.setText("");
|
||||
propInfoLabel.setText("");
|
||||
compatibleCasesLabel.setText("");
|
||||
dataPointsLabel.setText("");
|
||||
if (digestLabel != null) {
|
||||
digestLabel.setText("");
|
||||
@ -264,6 +272,7 @@ class MotorInformationPanel extends JPanel {
|
||||
selectedMotor.getEmptyCG().weight));
|
||||
caseInfoLabel.setText(selectedMotor.getCaseInfo());
|
||||
propInfoLabel.setText(selectedMotor.getPropellantInfo());
|
||||
compatibleCasesLabel.setText( StringUtils.join(",",selectedMotor.getCompatibleCases()));
|
||||
dataPointsLabel.setText("" + (selectedMotor.getTimePoints().length - 1));
|
||||
if (digestLabel != null) {
|
||||
digestLabel.setText(selectedMotor.getDigest());
|
||||
|
19
swing/src/net/sf/openrocket/utils/StringUtils.java
Normal file
19
swing/src/net/sf/openrocket/utils/StringUtils.java
Normal file
@ -0,0 +1,19 @@
|
||||
package net.sf.openrocket.utils;
|
||||
|
||||
public class StringUtils {
|
||||
|
||||
public static String join(String sep, Object[] values) {
|
||||
if ( values == null || values.length == 0 ) {
|
||||
return "";
|
||||
}
|
||||
StringBuilder value = new StringBuilder();
|
||||
for( Object v : values ) {
|
||||
if( value.length() > 0 ) {
|
||||
value.append(sep);
|
||||
}
|
||||
value.append(String.valueOf(v));
|
||||
}
|
||||
return value.toString();
|
||||
}
|
||||
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user