From e364c10026a5043d6794280ec51be61bad744f7b Mon Sep 17 00:00:00 2001 From: kruland2607 Date: Wed, 17 Oct 2012 12:31:31 -0500 Subject: [PATCH] Added SupportsFlightConfiguration interface and implemented it by RecoveryDevice. --- .../RecoveryConfigurationPanel.java | 6 ++-- .../SelectDeploymentConfigDialog.java | 6 ++-- .../rocketcomponent/RecoveryDevice.java | 30 +++++++++++++------ .../SupportsFlightConfiguration.java | 15 ++++++++++ .../BasicEventSimulationEngine.java | 4 +-- 5 files changed, 44 insertions(+), 17 deletions(-) create mode 100644 core/src/net/sf/openrocket/rocketcomponent/SupportsFlightConfiguration.java diff --git a/core/src/net/sf/openrocket/gui/dialogs/flightconfiguration/RecoveryConfigurationPanel.java b/core/src/net/sf/openrocket/gui/dialogs/flightconfiguration/RecoveryConfigurationPanel.java index e758bdbcc..67cf19e10 100644 --- a/core/src/net/sf/openrocket/gui/dialogs/flightconfiguration/RecoveryConfigurationPanel.java +++ b/core/src/net/sf/openrocket/gui/dialogs/flightconfiguration/RecoveryConfigurationPanel.java @@ -95,7 +95,7 @@ public class RecoveryConfigurationPanel extends JPanel { } private void resetDeployment() { - selectedComponent.setDeploymentConfiguration(rocket.getDefaultConfiguration().getFlightConfigurationID(), null); + selectedComponent.setFlightConfiguration(rocket.getDefaultConfiguration().getFlightConfigurationID(), null); } private void updateButtonState() { @@ -144,9 +144,9 @@ public class RecoveryConfigurationPanel extends JPanel { case 0: return d.getName(); case 1: - DeploymentConfiguration deployConfig = d.getDeploymentConfiguration(rocket.getDefaultConfiguration().getFlightConfigurationID()); + DeploymentConfiguration deployConfig = d.getFlightConfiguration(rocket.getDefaultConfiguration().getFlightConfigurationID()); if ( deployConfig == null ) { - return "[" + d.getDefaultDeploymentConfiguration().toString() + "]"; + return "[" + d.getDefaultFlightConfiguration().toString() + "]"; } else { return deployConfig.toString(); } diff --git a/core/src/net/sf/openrocket/gui/dialogs/flightconfiguration/SelectDeploymentConfigDialog.java b/core/src/net/sf/openrocket/gui/dialogs/flightconfiguration/SelectDeploymentConfigDialog.java index 7d7539d66..5e58b3834 100644 --- a/core/src/net/sf/openrocket/gui/dialogs/flightconfiguration/SelectDeploymentConfigDialog.java +++ b/core/src/net/sf/openrocket/gui/dialogs/flightconfiguration/SelectDeploymentConfigDialog.java @@ -32,9 +32,9 @@ public class SelectDeploymentConfigDialog extends JDialog { super.setModal(true); final String configId = rocket.getDefaultConfiguration().getFlightConfigurationID(); - newConfiguration = component.getDeploymentConfiguration(configId); + newConfiguration = component.getFlightConfiguration(configId); if ( newConfiguration == null ) { - newConfiguration = component.getDefaultDeploymentConfiguration().clone(); + newConfiguration = component.getDefaultFlightConfiguration().clone(); } else { // Clone the existing so cancel works. When the user selects OK, this configuration // is put back in there. @@ -113,7 +113,7 @@ public class SelectDeploymentConfigDialog extends JDialog { double deployAltitude = alt.getCurrentUnit().fromUnit( alt.getValue() ); newConfiguration.setDeployAltitude(deployAltitude); - component.setDeploymentConfiguration(configId, newConfiguration); + component.setFlightConfiguration(configId, newConfiguration); SelectDeploymentConfigDialog.this.setVisible(false); } diff --git a/core/src/net/sf/openrocket/rocketcomponent/RecoveryDevice.java b/core/src/net/sf/openrocket/rocketcomponent/RecoveryDevice.java index 1a543a696..e713aaf22 100644 --- a/core/src/net/sf/openrocket/rocketcomponent/RecoveryDevice.java +++ b/core/src/net/sf/openrocket/rocketcomponent/RecoveryDevice.java @@ -23,7 +23,7 @@ import net.sf.openrocket.util.MathUtil; * * @author Sampo Niskanen */ -public abstract class RecoveryDevice extends MassObject { +public abstract class RecoveryDevice extends MassObject implements SupportsFlightConfiguration { private static final Translator trans = Application.getTranslator(); private Map deploymentConfigurations = new HashMap(); @@ -114,16 +114,14 @@ public abstract class RecoveryDevice extends MassObject { * @param configID * @return */ - public DeploymentConfiguration getDeploymentConfiguration( String configID ) { + @Override + public DeploymentConfiguration getFlightConfiguration( String configID ) { DeploymentConfiguration config = deploymentConfigurations.get(configID); return config; } - public DeploymentConfiguration getDefaultDeploymentConfiguration() { - return defaultDeploymentConfig; - } - - public void setDeploymentConfiguration( String configID, DeploymentConfiguration config ) { + @Override + public void setFlightConfiguration( String configID, DeploymentConfiguration config ) { if ( config == null ) { deploymentConfigurations.remove(configID); } else { @@ -131,6 +129,22 @@ public abstract class RecoveryDevice extends MassObject { } } + + @Override + public DeploymentConfiguration getDefaultFlightConfiguration() { + return defaultDeploymentConfig; + } + + @Override + public void setDefaultFlightConfiguration( DeploymentConfiguration config ) { + this.defaultDeploymentConfig = config; + } + + @Override + public void cloneFlightConfiguration( String oldConfigId, String newConfigId ) { + DeploymentConfiguration oldConfig = getFlightConfiguration(oldConfigId); + setFlightConfiguration( newConfigId, oldConfig.clone() ); + } public DeployEvent getDefaultDeployEvent() { return defaultDeploymentConfig.getDeployEvent(); @@ -171,8 +185,6 @@ public abstract class RecoveryDevice extends MassObject { fireComponentChangeEvent(ComponentChangeEvent.EVENT_CHANGE); } - - @Override public double getComponentMass() { return getArea() * getMaterial().getDensity(); diff --git a/core/src/net/sf/openrocket/rocketcomponent/SupportsFlightConfiguration.java b/core/src/net/sf/openrocket/rocketcomponent/SupportsFlightConfiguration.java new file mode 100644 index 000000000..104556291 --- /dev/null +++ b/core/src/net/sf/openrocket/rocketcomponent/SupportsFlightConfiguration.java @@ -0,0 +1,15 @@ +package net.sf.openrocket.rocketcomponent; + +public interface SupportsFlightConfiguration { + + public T getFlightConfiguration( String configId ); + + public void setFlightConfiguration( String configId, T config ); + + public void cloneFlightConfiguration( String oldConfigId, String newConfigId ); + + public T getDefaultFlightConfiguration(); + + public void setDefaultFlightConfiguration( T config ); + +} diff --git a/core/src/net/sf/openrocket/simulation/BasicEventSimulationEngine.java b/core/src/net/sf/openrocket/simulation/BasicEventSimulationEngine.java index ea668aa53..3a70fec9f 100644 --- a/core/src/net/sf/openrocket/simulation/BasicEventSimulationEngine.java +++ b/core/src/net/sf/openrocket/simulation/BasicEventSimulationEngine.java @@ -375,9 +375,9 @@ public class BasicEventSimulationEngine implements SimulationEngine { RocketComponent c = rci.next(); if (!(c instanceof RecoveryDevice)) continue; - DeploymentConfiguration deployConfig = ((RecoveryDevice) c).getDeploymentConfiguration(flightConfigurationId); + DeploymentConfiguration deployConfig = ((RecoveryDevice) c).getFlightConfiguration(flightConfigurationId); if ( deployConfig == null ) { - deployConfig = ((RecoveryDevice) c).getDefaultDeploymentConfiguration(); + deployConfig = ((RecoveryDevice) c).getDefaultFlightConfiguration(); } if (deployConfig.isActivationEvent(event, c)) { // Delay event by at least 1ms to allow stage separation to occur first