import net.sf.openrocket.unit.Unit;
import net.sf.openrocket.util.GUIUtil;
import net.sf.openrocket.util.Icons;
+import net.sf.openrocket.util.Utils;
/**
* Panel that displays the simulation plot options to the user.
FlightDataBranch branch = simulation.getSimulatedData().getBranch(0);
types = branch.getTypes();
- // TODO: LOW: Revert to custom if data type is not available.
- configuration = defaultConfiguration.clone();
+ setConfiguration(defaultConfiguration);
-
//// Configuration selector
// Setup the combo box
configurationSelector.setSelectedItem(config);
}
}
+
+ // FIXME: Bugs when expected branch is not present
+
configurationSelector.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
if (conf == CUSTOM_CONFIGURATION)
return;
modifying++;
- configuration = conf.clone().resetUnits();
+ setConfiguration(conf.clone().resetUnits());
updatePlots();
modifying--;
}
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
+ if (configuration.getTypeCount() == 0) {
+ JOptionPane.showMessageDialog(SimulationPlotPanel.this,
+ trans.get("error.noPlotSelected"),
+ trans.get("error.noPlotSelected.title"),
+ JOptionPane.ERROR_MESSAGE);
+ return;
+ }
defaultConfiguration = configuration.clone();
SimulationPlotDialog.showPlot(SwingUtilities.getWindowAncestor(SimulationPlotPanel.this),
simulation, configuration);
}
+ private void setConfiguration(PlotConfiguration conf) {
+
+ boolean modified = false;
+
+ configuration = conf.clone();
+ if (!Utils.contains(types, configuration.getDomainAxisType())) {
+ configuration.setDomainAxisType(types[0]);
+ modified = true;
+ }
+
+ for (int i = 0; i < configuration.getTypeCount(); i++) {
+ if (!Utils.contains(types, configuration.getType(i))) {
+ configuration.removePlotDataType(i);
+ i--;
+ modified = true;
+ }
+ }
+
+ if (modified) {
+ configuration.setName(CUSTOM);
+ }
+
+ }
+
+
private void setToCustom() {
modifying++;
configuration.setName(CUSTOM);