From f68189c3e2b4fbe4f018b1ab297238659e169405 Mon Sep 17 00:00:00 2001 From: SiboVG Date: Mon, 14 Nov 2022 14:12:58 +0100 Subject: [PATCH 1/2] Delete unused import --- swing/src/net/sf/openrocket/gui/plot/SimulationPlot.java | 1 - 1 file changed, 1 deletion(-) diff --git a/swing/src/net/sf/openrocket/gui/plot/SimulationPlot.java b/swing/src/net/sf/openrocket/gui/plot/SimulationPlot.java index e80cd4735..1714fbd6f 100644 --- a/swing/src/net/sf/openrocket/gui/plot/SimulationPlot.java +++ b/swing/src/net/sf/openrocket/gui/plot/SimulationPlot.java @@ -25,7 +25,6 @@ import net.sf.openrocket.simulation.FlightDataType; import net.sf.openrocket.simulation.FlightEvent; import net.sf.openrocket.unit.Unit; import net.sf.openrocket.unit.UnitGroup; -import net.sf.openrocket.util.Coordinate; import net.sf.openrocket.util.LinearInterpolator; import net.sf.openrocket.utils.DecimalFormatter; From baed200d27de6028f9e7e1bd8f182c30eaf09b25 Mon Sep 17 00:00:00 2001 From: SiboVG Date: Mon, 14 Nov 2022 16:42:06 +0100 Subject: [PATCH 2/2] [#1820] Don't switch to simulation plot if "Simulate & Plot" resulted in faulty simulation --- .../gui/simulation/SimulationEditDialog.java | 8 +++----- .../gui/simulation/SimulationRunDialog.java | 19 +++++++++++++++++-- .../gui/simulation/SimulationWorker.java | 11 +++++++++++ 3 files changed, 31 insertions(+), 7 deletions(-) diff --git a/swing/src/net/sf/openrocket/gui/simulation/SimulationEditDialog.java b/swing/src/net/sf/openrocket/gui/simulation/SimulationEditDialog.java index 7955bdae3..287182c92 100644 --- a/swing/src/net/sf/openrocket/gui/simulation/SimulationEditDialog.java +++ b/swing/src/net/sf/openrocket/gui/simulation/SimulationEditDialog.java @@ -209,12 +209,10 @@ public class SimulationEditDialog extends JDialog { @Override public void actionPerformed(ActionEvent e) { copyChangesToAllSims(); - SimulationRunDialog.runSimulations(parentWindow, SimulationEditDialog.this.document, simulationList); - refreshView(); - if (allowsPlotMode()) { + SimulationRunDialog dialog = SimulationRunDialog.runSimulations(parentWindow, SimulationEditDialog.this.document, simulationList); + if (allowsPlotMode() && dialog.isAllSimulationsSuccessful()) { + refreshView(); setPlotMode(); - } else { - setVisible(false); } } }); diff --git a/swing/src/net/sf/openrocket/gui/simulation/SimulationRunDialog.java b/swing/src/net/sf/openrocket/gui/simulation/SimulationRunDialog.java index 44416bf24..22b4cb2c3 100644 --- a/swing/src/net/sf/openrocket/gui/simulation/SimulationRunDialog.java +++ b/swing/src/net/sf/openrocket/gui/simulation/SimulationRunDialog.java @@ -207,9 +207,12 @@ public class SimulationRunDialog extends JDialog { * the parent Window of the dialog to use. * @param simulations * the simulations to run. + * @return the simulation run dialog instance. */ - public static void runSimulations(Window parent, OpenRocketDocument document, Simulation... simulations) { - new SimulationRunDialog(parent, document, simulations).setVisible(true); + public static SimulationRunDialog runSimulations(Window parent, OpenRocketDocument document, Simulation... simulations) { + SimulationRunDialog dialog = new SimulationRunDialog(parent, document, simulations); + dialog.setVisible(true); + return dialog; } private void updateProgress() { @@ -257,6 +260,18 @@ public class SimulationRunDialog extends JDialog { + u.toStringUnit(simulationMaxVelocity[index]) + ")"); } + /** + * Returns true if all the simulations ran successfully. Returns false if the simulations encountered + * an exception, or were cancelled. + */ + public boolean isAllSimulationsSuccessful() { + for (SimulationWorker w : simulationWorkers) { + if (w.getThrowable() != null) + return false; + } + return true; + } + /** * A SwingWorker that performs a flight simulation. It periodically updates * the simulation statuses of the parent class and calls updateProgress(). diff --git a/swing/src/net/sf/openrocket/gui/simulation/SimulationWorker.java b/swing/src/net/sf/openrocket/gui/simulation/SimulationWorker.java index 201b4f22e..1fb6b682b 100644 --- a/swing/src/net/sf/openrocket/gui/simulation/SimulationWorker.java +++ b/swing/src/net/sf/openrocket/gui/simulation/SimulationWorker.java @@ -70,6 +70,17 @@ public abstract class SimulationWorker extends SwingWorker