diff --git a/core/resources/l10n/messages.properties b/core/resources/l10n/messages.properties
index ee8b5f166..764ef721c 100644
--- a/core/resources/l10n/messages.properties
+++ b/core/resources/l10n/messages.properties
@@ -405,6 +405,7 @@ simpanel.dlg.lbl.DeleteSim2 = This operation cannot be undone.
simpanel.dlg.lbl.DeleteSim3 = Delete simulations
simpanel.col.Name = Name
simpanel.col.Motors = Motors
+simpanel.col.Configuration = Configuration
simpanel.col.Velocityoffrod = Velocity off rod
simpanel.col.Velocityatdeploy = Velocity at deployment
simpanel.col.Apogee = Apogee
@@ -1313,7 +1314,8 @@ Streamer.Streamer = Streamer
Sleeve.Sleeve = Sleeve
!Rocket
-Rocket.motorCount.Nomotor = [No motors]
+Rocket.motorCount.Nomotor = No motors
+Rocket.motorCount.noStageMotors = None
Rocket.compname.Rocket = Rocket
!MotorMount
@@ -1856,3 +1858,4 @@ SeparationSelectionDialog.opt.override = Override for the {0} flight configurati
MotorConfigurationPanel.description = Select the motors and motor ignition events of your rocket.
Motor mounts: Select which components function as motor mounts.
Motor configurations: Select the motor and ignition event for each motor mount.
+MotorDescriptionSubstitutor.description = Motors in the configuration
diff --git a/core/resources/l10n/messages_cs.properties b/core/resources/l10n/messages_cs.properties
index 45bd31b98..96751cf89 100644
--- a/core/resources/l10n/messages_cs.properties
+++ b/core/resources/l10n/messages_cs.properties
@@ -1159,7 +1159,7 @@ ShockCord.ShockCord = Poutac
Bulkhead.Bulkhead = Prepá\u017Eka
!Rocket
-Rocket.motorCount.Nomotor = [\u017Dádné motory]
+Rocket.motorCount.Nomotor = \u017Dádné motory
Rocket.compname.Rocket = Raketa
!MotorMount
diff --git a/core/resources/l10n/messages_de.properties b/core/resources/l10n/messages_de.properties
index ace5b8c43..753563197 100644
--- a/core/resources/l10n/messages_de.properties
+++ b/core/resources/l10n/messages_de.properties
@@ -1216,7 +1216,7 @@ ShockCord.ShockCord = Gummiband
Bulkhead.Bulkhead = Schott
!Rocket
-Rocket.motorCount.Nomotor = [Keine Motoren]
+Rocket.motorCount.Nomotor = Keine Motoren
Rocket.compname.Rocket = Rakete
!MotorMount
diff --git a/core/resources/l10n/messages_es.properties b/core/resources/l10n/messages_es.properties
index d1d5ade52..4e22d9dd0 100644
--- a/core/resources/l10n/messages_es.properties
+++ b/core/resources/l10n/messages_es.properties
@@ -1227,7 +1227,7 @@ ShockCord.ShockCord = Tirante de suspensi
Bulkhead.Bulkhead = Disco de enganche
!Rocket
-Rocket.motorCount.Nomotor = [Sin motores]
+Rocket.motorCount.Nomotor = Sin motores
Rocket.compname.Rocket = Cohete
!MotorMount
diff --git a/core/resources/l10n/messages_fr.properties b/core/resources/l10n/messages_fr.properties
index 675d7971b..4fd94b400 100644
--- a/core/resources/l10n/messages_fr.properties
+++ b/core/resources/l10n/messages_fr.properties
@@ -1269,7 +1269,7 @@ Streamer.Streamer = Streamer
Sleeve.Sleeve = Sleeve
!Rocket
-Rocket.motorCount.Nomotor = [aucun moteurs]
+Rocket.motorCount.Nomotor = aucun moteurs
Rocket.compname.Rocket = Fusée
!MotorMount
diff --git a/core/resources/l10n/messages_it.properties b/core/resources/l10n/messages_it.properties
index a4ccecaad..45c49e561 100644
--- a/core/resources/l10n/messages_it.properties
+++ b/core/resources/l10n/messages_it.properties
@@ -1220,7 +1220,7 @@ ShockCord.ShockCord = Shock cord
Bulkhead.Bulkhead = Paratia
!Rocket
-Rocket.motorCount.Nomotor = [Nessun motore]
+Rocket.motorCount.Nomotor = Nessun motore
Rocket.compname.Rocket = Razzo
!MotorMount
diff --git a/core/resources/l10n/messages_pl.properties b/core/resources/l10n/messages_pl.properties
index 2c6b77364..d58ccec52 100644
--- a/core/resources/l10n/messages_pl.properties
+++ b/core/resources/l10n/messages_pl.properties
@@ -1161,7 +1161,7 @@
Bulkhead.Bulkhead = Przegroda
!Rocket
- Rocket.motorCount.Nomotor = [bez silników]
+ Rocket.motorCount.Nomotor = bez silników
Rocket.compname.Rocket = Rakieta
!MotorMount
diff --git a/core/resources/l10n/messages_ru.properties b/core/resources/l10n/messages_ru.properties
index ef1d97f37..8132f44d4 100644
--- a/core/resources/l10n/messages_ru.properties
+++ b/core/resources/l10n/messages_ru.properties
@@ -1274,7 +1274,7 @@ Streamer.Streamer = \u0422\u043e\u0440\u043c\u043e\u0437\u043d\u0430\u044f \u043
Sleeve.Sleeve = \u0412\u0442\u0443\u043b\u043a\u0430
!Rocket
-Rocket.motorCount.Nomotor = [\u0411\u0435\u0437 \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u0435\u0439]
+Rocket.motorCount.Nomotor = \u0411\u0435\u0437 \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u0435\u0439
Rocket.compname.Rocket = \u0420\u0430\u043a\u0435\u0442\u0430
!MotorMount
diff --git a/core/src/net/sf/openrocket/document/Simulation.java b/core/src/net/sf/openrocket/document/Simulation.java
index 38f8a509f..97a6ca0f9 100644
--- a/core/src/net/sf/openrocket/document/Simulation.java
+++ b/core/src/net/sf/openrocket/document/Simulation.java
@@ -7,6 +7,7 @@ import java.util.List;
import net.sf.openrocket.aerodynamics.AerodynamicCalculator;
import net.sf.openrocket.aerodynamics.BarrowmanCalculator;
import net.sf.openrocket.aerodynamics.WarningSet;
+import net.sf.openrocket.formatting.RocketDescriptor;
import net.sf.openrocket.logging.LogHelper;
import net.sf.openrocket.masscalc.BasicMassCalculator;
import net.sf.openrocket.masscalc.MassCalculator;
@@ -57,6 +58,9 @@ public class Simulation implements ChangeSource, Cloneable {
NOT_SIMULATED
}
+ private RocketDescriptor descriptor = Application.getInjector().getInstance(RocketDescriptor.class);
+
+
private SafetyMutex mutex = SafetyMutex.newInstance();
private final Rocket rocket;
@@ -83,7 +87,7 @@ public class Simulation implements ChangeSource, Cloneable {
/** The conditions actually used in the previous simulation, or null */
private SimulationOptions simulatedConditions = null;
- private String simulatedMotors = null;
+ private String simulatedConfiguration = null;
private FlightData simulatedData = null;
private int simulatedRocketID = -1;
@@ -305,7 +309,8 @@ public class Simulation implements ChangeSource, Cloneable {
// Set simulated info after simulation, will not be set in case of exception
simulatedConditions = options.clone();
final Configuration configuration = getConfiguration();
- simulatedMotors = configuration.getFlightConfigurationDescription();
+
+ simulatedConfiguration = descriptor.format(configuration.getRocket(), configuration.getFlightConfigurationID());
simulatedRocketID = rocket.getFunctionalModID();
status = Status.UPTODATE;
@@ -350,11 +355,10 @@ public class Simulation implements ChangeSource, Cloneable {
*
* @return a description of the motor configuration of the previous simulation, or
* null
.
- * @see Rocket#getFlightConfigurationNameOrDescription(String)
*/
- public String getSimulatedMotorDescription() {
+ public String getSimulatedConfigurationDescription() {
mutex.verify();
- return simulatedMotors;
+ return simulatedConfiguration;
}
/**
@@ -389,7 +393,7 @@ public class Simulation implements ChangeSource, Cloneable {
copy.simulationListeners = this.simulationListeners.clone();
copy.listeners = new ArrayList();
copy.simulatedConditions = null;
- copy.simulatedMotors = null;
+ copy.simulatedConfiguration = null;
copy.simulatedData = null;
copy.simulatedRocketID = -1;
diff --git a/core/src/net/sf/openrocket/file/openrocket/savers/RocketSaver.java b/core/src/net/sf/openrocket/file/openrocket/savers/RocketSaver.java
index 257e072c1..59af2484b 100644
--- a/core/src/net/sf/openrocket/file/openrocket/savers/RocketSaver.java
+++ b/core/src/net/sf/openrocket/file/openrocket/savers/RocketSaver.java
@@ -49,7 +49,8 @@ public class RocketSaver extends RocketComponentSaver {
if (id.equals(defId))
str += " default=\"true\"";
- if (rocket.getFlightConfigurationName(id) == "") {
+
+ if (rocket.getFlightConfigurationName(id).equals(Rocket.DEFAULT_NAME)) {
str += "/>";
} else {
str += ">" + net.sf.openrocket.util.TextUtil.escapeXML(rocket.getFlightConfigurationName(id))
diff --git a/core/src/net/sf/openrocket/formatting/MotorDescriptionSubstitutor.java b/core/src/net/sf/openrocket/formatting/MotorDescriptionSubstitutor.java
index fb38e8b1a..9963594c0 100644
--- a/core/src/net/sf/openrocket/formatting/MotorDescriptionSubstitutor.java
+++ b/core/src/net/sf/openrocket/formatting/MotorDescriptionSubstitutor.java
@@ -32,20 +32,20 @@ public class MotorDescriptionSubstitutor implements RocketSubstitutor {
@Override
public String substitute(String str, Rocket rocket, String configId) {
- String description = getFlightConfigurationDescription(rocket, configId);
+ String description = getMotorConfigurationDescription(rocket, configId);
return str.replace(SUBSTITUTION, description);
}
@Override
public Map getDescriptions() {
Map desc = new HashMap();
- desc.put(SUBSTITUTION, trans.get("description"));
+ desc.put(SUBSTITUTION, trans.get("MotorDescriptionSubstitutor.description"));
return null;
}
- private String getFlightConfigurationDescription(Rocket rocket, String id) {
+ public String getMotorConfigurationDescription(Rocket rocket, String id) {
String name;
int motorCount = 0;
@@ -82,7 +82,6 @@ public class MotorDescriptionSubstitutor implements RocketSubstitutor {
}
if (motorCount == 0) {
- //// [No motors]
return trans.get("Rocket.motorCount.Nomotor");
}
@@ -138,17 +137,16 @@ public class MotorDescriptionSubstitutor implements RocketSubstitutor {
stages.add(stageName);
}
- name = "[";
+ name = "";
for (int i = 0; i < stages.size(); i++) {
String s = stages.get(i);
if (s.equals(""))
- s = "None";
+ s = trans.get("Rocket.motorCount.noStageMotors");
if (i == 0)
name = name + s;
else
name = name + "; " + s;
}
- name += "]";
return name;
}
diff --git a/core/src/net/sf/openrocket/formatting/RocketDescriptor.java b/core/src/net/sf/openrocket/formatting/RocketDescriptor.java
new file mode 100644
index 000000000..dba2ba00d
--- /dev/null
+++ b/core/src/net/sf/openrocket/formatting/RocketDescriptor.java
@@ -0,0 +1,25 @@
+package net.sf.openrocket.formatting;
+
+import net.sf.openrocket.rocketcomponent.Rocket;
+
+/**
+ * Interface for formatting a flight configuration into a
+ * textual string.
+ */
+public interface RocketDescriptor {
+
+ /**
+ * Return a string describing a particular flight configuration
+ * of the rocket. This uses the default flight configuration name
+ * as the basis.
+ */
+ public String format(Rocket rocket, String configId);
+
+
+ /**
+ * Return a string describing a particular flight configuration
+ * of the rocket. This uses a custom-provided name as the basis.
+ */
+ public String format(String name, Rocket rocket, String configId);
+
+}
diff --git a/core/src/net/sf/openrocket/formatting/RocketFormatterImpl.java b/core/src/net/sf/openrocket/formatting/RocketDescriptorImpl.java
similarity index 72%
rename from core/src/net/sf/openrocket/formatting/RocketFormatterImpl.java
rename to core/src/net/sf/openrocket/formatting/RocketDescriptorImpl.java
index f813b5ea3..62df68e64 100644
--- a/core/src/net/sf/openrocket/formatting/RocketFormatterImpl.java
+++ b/core/src/net/sf/openrocket/formatting/RocketDescriptorImpl.java
@@ -6,7 +6,7 @@ import net.sf.openrocket.rocketcomponent.Rocket;
import com.google.inject.Inject;
-public class RocketFormatterImpl implements RocketFormatter {
+public class RocketDescriptorImpl implements RocketDescriptor {
@Inject
private Set substitutors;
@@ -14,7 +14,11 @@ public class RocketFormatterImpl implements RocketFormatter {
@Override
public String format(Rocket rocket, String configId) {
String name = rocket.getFlightConfigurationName(configId);
-
+ return format(name, rocket, configId);
+ }
+
+ @Override
+ public String format(String name, Rocket rocket, String configId) {
for (RocketSubstitutor s : substitutors) {
while (s.containsSubstitution(name)) {
name = s.substitute(name, rocket, configId);
diff --git a/core/src/net/sf/openrocket/formatting/RocketFormatter.java b/core/src/net/sf/openrocket/formatting/RocketFormatter.java
deleted file mode 100644
index b2b43a04d..000000000
--- a/core/src/net/sf/openrocket/formatting/RocketFormatter.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package net.sf.openrocket.formatting;
-
-import net.sf.openrocket.rocketcomponent.Rocket;
-
-/**
- * Interface for formatting a flight configuration into a
- * textual string.
- */
-public interface RocketFormatter {
-
- /**
- * Return a string describing a particular flight configuration
- * of the rocket.
- */
- public String format(Rocket rocket, String configId);
-
-}
diff --git a/core/src/net/sf/openrocket/gui/adaptors/FlightConfigurationModel.java b/core/src/net/sf/openrocket/gui/adaptors/FlightConfigurationModel.java
index e824dcde3..88e226db5 100644
--- a/core/src/net/sf/openrocket/gui/adaptors/FlightConfigurationModel.java
+++ b/core/src/net/sf/openrocket/gui/adaptors/FlightConfigurationModel.java
@@ -11,6 +11,7 @@ import javax.swing.event.EventListenerList;
import javax.swing.event.ListDataEvent;
import javax.swing.event.ListDataListener;
+import net.sf.openrocket.formatting.RocketDescriptor;
import net.sf.openrocket.gui.dialogs.flightconfiguration.FlightConfigurationDialog;
import net.sf.openrocket.gui.main.BasicFrame;
import net.sf.openrocket.l10n.Translator;
@@ -22,9 +23,11 @@ import net.sf.openrocket.util.StateChangeListener;
public class FlightConfigurationModel implements ComboBoxModel, StateChangeListener {
private static final Translator trans = Application.getTranslator();
-
+
private static final String EDIT = trans.get("MotorCfgModel.Editcfg");
+ private RocketDescriptor descriptor = Application.getInjector().getInstance(RocketDescriptor.class);
+
private EventListenerList listenerList = new EventListenerList();
@@ -33,7 +36,7 @@ public class FlightConfigurationModel implements ComboBoxModel, StateChangeListe
private Map map = new HashMap();
-
+
public FlightConfigurationModel(Configuration config) {
this.config = config;
this.rocket = config.getRocket();
@@ -45,7 +48,7 @@ public class FlightConfigurationModel implements ComboBoxModel, StateChangeListe
@Override
public Object getElementAt(int index) {
String[] ids = rocket.getFlightConfigurationIDs();
- if (index < 0 || index > ids.length)
+ if (index < 0 || index > ids.length)
return null;
if (index == ids.length)
@@ -53,17 +56,17 @@ public class FlightConfigurationModel implements ComboBoxModel, StateChangeListe
return get(ids[index]);
}
-
+
@Override
public int getSize() {
return rocket.getFlightConfigurationIDs().length + 1;
}
-
+
@Override
public Object getSelectedItem() {
return get(config.getFlightConfigurationID());
}
-
+
@Override
public void setSelectedItem(Object item) {
if (item == null) {
@@ -77,21 +80,21 @@ public class FlightConfigurationModel implements ComboBoxModel, StateChangeListe
@Override
public void run() {
new FlightConfigurationDialog(rocket, BasicFrame.findFrame(rocket))
- .setVisible(true);
+ .setVisible(true);
}
});
-
+
return;
}
if (!(item instanceof ID)) {
- throw new IllegalArgumentException("MotorConfigurationModel item="+item);
+ throw new IllegalArgumentException("MotorConfigurationModel item=" + item);
}
ID idObject = (ID) item;
config.setFlightConfigurationID(idObject.getID());
}
-
-
+
+
//////////////// Event/listener handling ////////////////
@@ -100,31 +103,31 @@ public class FlightConfigurationModel implements ComboBoxModel, StateChangeListe
public void addListDataListener(ListDataListener l) {
listenerList.add(ListDataListener.class, l);
}
-
+
@Override
public void removeListDataListener(ListDataListener l) {
listenerList.remove(ListDataListener.class, l);
}
-
+
protected void fireListDataEvent() {
Object[] listeners = listenerList.getListenerList();
ListDataEvent e = null;
-
- for (int i = listeners.length-2; i>=0; i-=2) {
+
+ for (int i = listeners.length - 2; i >= 0; i -= 2) {
if (listeners[i] == ListDataListener.class) {
if (e == null)
e = new ListDataEvent(this, ListDataEvent.CONTENTS_CHANGED, 0, getSize());
- ((ListDataListener) listeners[i+1]).contentsChanged(e);
+ ((ListDataListener) listeners[i + 1]).contentsChanged(e);
}
}
}
-
+
@Override
public void stateChanged(EventObject e) {
if (e instanceof ComponentChangeEvent) {
// Ignore unnecessary changes
- if (!((ComponentChangeEvent)e).isMotorChange())
+ if (!((ComponentChangeEvent) e).isMotorChange())
return;
}
fireListDataEvent();
@@ -162,9 +165,8 @@ public class FlightConfigurationModel implements ComboBoxModel, StateChangeListe
@Override
public String toString() {
- return rocket.getFlightConfigurationNameOrDescription(id);
+ return descriptor.format(rocket, id);
}
}
}
-
diff --git a/core/src/net/sf/openrocket/gui/dialogs/flightconfiguration/DeploymentSelectionDialog.java b/core/src/net/sf/openrocket/gui/dialogs/flightconfiguration/DeploymentSelectionDialog.java
index 41d03cb8b..a9dd2fbf6 100644
--- a/core/src/net/sf/openrocket/gui/dialogs/flightconfiguration/DeploymentSelectionDialog.java
+++ b/core/src/net/sf/openrocket/gui/dialogs/flightconfiguration/DeploymentSelectionDialog.java
@@ -15,6 +15,7 @@ import javax.swing.JSlider;
import javax.swing.JSpinner;
import net.miginfocom.swing.MigLayout;
+import net.sf.openrocket.formatting.RocketDescriptor;
import net.sf.openrocket.gui.SpinnerEditor;
import net.sf.openrocket.gui.adaptors.DoubleModel;
import net.sf.openrocket.gui.adaptors.EnumModel;
@@ -33,6 +34,8 @@ public class DeploymentSelectionDialog extends JDialog {
private static final Translator trans = Application.getTranslator();
+ private RocketDescriptor descriptor = Application.getInjector().getInstance(RocketDescriptor.class);
+
private final DeploymentConfiguration newConfiguration;
private final JLabel altText;
@@ -53,7 +56,7 @@ public class DeploymentSelectionDialog extends JDialog {
final JRadioButton defaultButton = new JRadioButton(trans.get("DeploymentSelectionDialog.opt.default"), true);
panel.add(defaultButton, "span, gapleft para, wrap rel");
String str = trans.get("DeploymentSelectionDialog.opt.override");
- str = str.replace("{0}", rocket.getFlightConfigurationNameOrDescription(id));
+ str = str.replace("{0}", descriptor.format(rocket, id));
final JRadioButton overrideButton = new JRadioButton(str, false);
panel.add(overrideButton, "span, gapleft para, wrap para");
@@ -134,7 +137,6 @@ public class DeploymentSelectionDialog extends JDialog {
GUIUtil.setDisposableDialogOptions(this, okButton);
}
-
private void updateState() {
boolean enabled = (newConfiguration.getDeployEvent() == DeployEvent.ALTITUDE);
altText.setEnabled(enabled);
diff --git a/core/src/net/sf/openrocket/gui/dialogs/flightconfiguration/FlightConfigurationModelRemoveMe.java b/core/src/net/sf/openrocket/gui/dialogs/flightconfiguration/FlightConfigurationModelRemoveMe.java
index 9552751fb..5322da53f 100644
--- a/core/src/net/sf/openrocket/gui/dialogs/flightconfiguration/FlightConfigurationModelRemoveMe.java
+++ b/core/src/net/sf/openrocket/gui/dialogs/flightconfiguration/FlightConfigurationModelRemoveMe.java
@@ -10,6 +10,8 @@ import net.sf.openrocket.rocketcomponent.Rocket;
public class FlightConfigurationModelRemoveMe extends DefaultComboBoxModel {
+ // FIXME Remove this class
+
private final Configuration config;
private final Rocket rocket;
@@ -90,7 +92,7 @@ public class FlightConfigurationModelRemoveMe extends DefaultComboBoxModel {
@Override
public String toString() {
- return rocket.getFlightConfigurationNameOrDescription(id);
+ return null;
}
}
diff --git a/core/src/net/sf/openrocket/gui/dialogs/flightconfiguration/IgnitionSelectionDialog.java b/core/src/net/sf/openrocket/gui/dialogs/flightconfiguration/IgnitionSelectionDialog.java
index 10572960b..b6dc0e31b 100644
--- a/core/src/net/sf/openrocket/gui/dialogs/flightconfiguration/IgnitionSelectionDialog.java
+++ b/core/src/net/sf/openrocket/gui/dialogs/flightconfiguration/IgnitionSelectionDialog.java
@@ -14,6 +14,7 @@ import javax.swing.JRadioButton;
import javax.swing.JSpinner;
import net.miginfocom.swing.MigLayout;
+import net.sf.openrocket.formatting.RocketDescriptor;
import net.sf.openrocket.gui.SpinnerEditor;
import net.sf.openrocket.gui.adaptors.DoubleModel;
import net.sf.openrocket.gui.adaptors.EnumModel;
@@ -30,6 +31,8 @@ public class IgnitionSelectionDialog extends JDialog {
private static final Translator trans = Application.getTranslator();
+ private RocketDescriptor descriptor = Application.getInjector().getInstance(RocketDescriptor.class);
+
private IgnitionConfiguration newConfiguration;
@@ -46,7 +49,7 @@ public class IgnitionSelectionDialog extends JDialog {
final JRadioButton defaultButton = new JRadioButton(trans.get("IgnitionSelectionDialog.opt.default"), isDefault);
panel.add(defaultButton, "span, gapleft para, wrap rel");
String str = trans.get("IgnitionSelectionDialog.opt.override");
- str = str.replace("{0}", rocket.getFlightConfigurationNameOrDescription(id));
+ str = str.replace("{0}", descriptor.format(rocket, id));
final JRadioButton overrideButton = new JRadioButton(str, !isDefault);
panel.add(overrideButton, "span, gapleft para, wrap para");
diff --git a/core/src/net/sf/openrocket/gui/dialogs/optimization/GeneralOptimizationDialog.java b/core/src/net/sf/openrocket/gui/dialogs/optimization/GeneralOptimizationDialog.java
index a39f2a4fc..5c33444ca 100644
--- a/core/src/net/sf/openrocket/gui/dialogs/optimization/GeneralOptimizationDialog.java
+++ b/core/src/net/sf/openrocket/gui/dialogs/optimization/GeneralOptimizationDialog.java
@@ -55,6 +55,7 @@ import javax.swing.tree.TreePath;
import net.miginfocom.swing.MigLayout;
import net.sf.openrocket.document.OpenRocketDocument;
import net.sf.openrocket.document.Simulation;
+import net.sf.openrocket.formatting.RocketDescriptor;
import net.sf.openrocket.gui.SpinnerEditor;
import net.sf.openrocket.gui.adaptors.DoubleModel;
import net.sf.openrocket.gui.components.CsvOptionPanel;
@@ -115,6 +116,9 @@ public class GeneralOptimizationDialog extends JDialog {
private static final String START_TEXT = trans.get("btn.start");
private static final String STOP_TEXT = trans.get("btn.stop");
+ private RocketDescriptor descriptor = Application.getInjector().getInstance(RocketDescriptor.class);
+
+
private final List optimizationParameters = new ArrayList();
private final Map