From 7d30bcb67b50f93f4ba99e7793f1829488da70c3 Mon Sep 17 00:00:00 2001 From: kruland2607 Date: Wed, 5 Jun 2013 21:20:50 -0500 Subject: [PATCH] I like it better when the close button copies the SimulationOptions. Only SimulationOptions needs to be a little bit smarter about when to fire the change event. --- .../gui/simulation/SimulationEditDialog.java | 1 + .../simulation/SimulationOptions.java | 84 ++++++++++++++----- 2 files changed, 66 insertions(+), 19 deletions(-) diff --git a/core/src/net/sf/openrocket/gui/simulation/SimulationEditDialog.java b/core/src/net/sf/openrocket/gui/simulation/SimulationEditDialog.java index 0e57dd01c..6cc07b573 100644 --- a/core/src/net/sf/openrocket/gui/simulation/SimulationEditDialog.java +++ b/core/src/net/sf/openrocket/gui/simulation/SimulationEditDialog.java @@ -213,6 +213,7 @@ public class SimulationEditDialog extends JDialog { close.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { + copyChangesToAllSims(); SimulationEditDialog.this.dispose(); } }); diff --git a/core/src/net/sf/openrocket/simulation/SimulationOptions.java b/core/src/net/sf/openrocket/simulation/SimulationOptions.java index dbbfbd19c..f32c01407 100644 --- a/core/src/net/sf/openrocket/simulation/SimulationOptions.java +++ b/core/src/net/sf/openrocket/simulation/SimulationOptions.java @@ -452,25 +452,71 @@ public class SimulationOptions implements ChangeSource, Cloneable { fireChangeEvent(); } - public void copyConditionsFrom(SimulationOptions src) { - - this.launchAltitude = src.launchAltitude; - this.launchLatitude = src.launchLatitude; - this.launchLongitude = src.launchLongitude; - this.launchPressure = src.launchPressure; - this.launchRodAngle = src.launchRodAngle; - this.launchRodDirection = src.launchRodDirection; - this.launchRodLength = src.launchRodLength; - this.launchTemperature = src.launchTemperature; - this.maximumAngle = src.maximumAngle; - this.timeStep = src.timeStep; - this.windAverage = src.windAverage; - this.windTurbulence = src.windTurbulence; - this.calculateExtras = src.calculateExtras; - this.randomSeed = src.randomSeed; - - fireChangeEvent(); - } + public void copyConditionsFrom(SimulationOptions src) { + // Be a little smart about triggering the change event. + // only do it if one of the "important" (user specified) parameters has really changed. + boolean isChanged = false; + if (this.launchAltitude != src.launchAltitude) { + isChanged = true; + this.launchAltitude = src.launchAltitude; + } + if (this.launchLatitude != src.launchLatitude) { + isChanged = true; + this.launchLatitude = src.launchLatitude; + } + if (this.launchLongitude != src.launchLongitude) { + isChanged = true; + this.launchLongitude = src.launchLongitude; + } + if (this.launchPressure != src.launchPressure) { + isChanged = true; + this.launchPressure = src.launchPressure; + } + if (this.launchRodAngle != src.launchRodAngle) { + isChanged = true; + this.launchRodAngle = src.launchRodAngle; + } + if (this.launchRodDirection != src.launchRodDirection) { + isChanged = true; + this.launchRodDirection = src.launchRodDirection; + } + if (this.launchRodLength != src.launchRodLength) { + isChanged = true; + this.launchRodLength = src.launchRodLength; + } + if (this.launchTemperature != src.launchTemperature) { + isChanged = true; + this.launchTemperature = src.launchTemperature; + } + if (this.maximumAngle != src.maximumAngle) { + isChanged = true; + this.maximumAngle = src.maximumAngle; + } + this.maximumAngle = src.maximumAngle; + if (this.timeStep != src.timeStep) { + isChanged = true; + this.timeStep = src.timeStep; + } + if (this.windAverage != src.windAverage) { + isChanged = true; + this.windAverage = src.windAverage; + } + if (this.windTurbulence != src.windTurbulence) { + isChanged = true; + this.windTurbulence = src.windTurbulence; + } + if (this.calculateExtras != src.calculateExtras) { + isChanged = true; + this.calculateExtras = src.calculateExtras; + } + + if (isChanged) { + // Only copy the randomSeed if something else has changed. + // Honestly, I don't really see a need for that. + this.randomSeed = src.randomSeed; + fireChangeEvent(); + } + } /**