From 0e8adeaf1fa851e64de45c758b92a0d4b589f2b3 Mon Sep 17 00:00:00 2001 From: kruland2607 Date: Fri, 11 Oct 2013 14:40:15 -0500 Subject: [PATCH] When deleting a flight configuration, delete corresponding simulations as well. --- .../sf/openrocket/document/OpenRocketDocument.java | 14 ++++++++++++++ .../net/sf/openrocket/rocketcomponent/Rocket.java | 1 - .../FlightConfigurationPanel.java | 2 +- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/core/src/net/sf/openrocket/document/OpenRocketDocument.java b/core/src/net/sf/openrocket/document/OpenRocketDocument.java index c7e283a0b..fdf88c742 100644 --- a/core/src/net/sf/openrocket/document/OpenRocketDocument.java +++ b/core/src/net/sf/openrocket/document/OpenRocketDocument.java @@ -281,6 +281,20 @@ public class OpenRocketDocument implements ComponentChangeListener { return simulation; } + public void removeFlightConfigurationAndSimulations(String configId) { + if (configId == null) { + return; + } + for (Simulation s : getSimulations()) { + // Assumes modifiable collection - which it is + if (s.getConfiguration().getFlightConfigurationID().equals(configId)) { + removeSimulation(s); + } + } + rocket.removeFlightConfigurationID(configId); + } + + /** * Return a unique name suitable for the next simulation. The name begins * with {@link #SIMULATION_NAME_PREFIX} and has a unique number larger than any diff --git a/core/src/net/sf/openrocket/rocketcomponent/Rocket.java b/core/src/net/sf/openrocket/rocketcomponent/Rocket.java index 2bbe48757..295b6f452 100644 --- a/core/src/net/sf/openrocket/rocketcomponent/Rocket.java +++ b/core/src/net/sf/openrocket/rocketcomponent/Rocket.java @@ -552,7 +552,6 @@ public class Rocket extends RocketComponent { getDefaultConfiguration().setFlightConfigurationID(null); } flightConfigurationIDs.remove(id); - // FIXME - remove corresponding simulations? fireComponentChangeEvent(ComponentChangeEvent.MOTOR_CHANGE); } diff --git a/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/FlightConfigurationPanel.java b/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/FlightConfigurationPanel.java index a9f3e2119..28417a1a7 100644 --- a/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/FlightConfigurationPanel.java +++ b/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/FlightConfigurationPanel.java @@ -155,7 +155,7 @@ public class FlightConfigurationPanel extends JPanel implements StateChangeListe String currentId = rocket.getDefaultConfiguration().getFlightConfigurationID(); if (currentId == null) return; - rocket.removeFlightConfigurationID(currentId); + document.removeFlightConfigurationAndSimulations(currentId); configurationChanged(); }