diff --git a/core/src/net/sf/openrocket/file/openrocket/importt/MotorConfigurationHandler.java b/core/src/net/sf/openrocket/file/openrocket/importt/MotorConfigurationHandler.java index 6e6127e15..d8415cdf3 100644 --- a/core/src/net/sf/openrocket/file/openrocket/importt/MotorConfigurationHandler.java +++ b/core/src/net/sf/openrocket/file/openrocket/importt/MotorConfigurationHandler.java @@ -10,7 +10,9 @@ import net.sf.openrocket.file.DocumentLoadingContext; import net.sf.openrocket.file.simplesax.AbstractElementHandler; import net.sf.openrocket.file.simplesax.ElementHandler; import net.sf.openrocket.file.simplesax.PlainTextHandler; +import net.sf.openrocket.rocketcomponent.FlightConfiguration; import net.sf.openrocket.rocketcomponent.FlightConfigurationID; +import net.sf.openrocket.rocketcomponent.FlightConfigurationSet; import net.sf.openrocket.rocketcomponent.Rocket; class MotorConfigurationHandler extends AbstractElementHandler { @@ -61,7 +63,10 @@ class MotorConfigurationHandler extends AbstractElementHandler { } if ("true".equals(attributes.remove("default"))) { - rocket.getConfigurationSet().reset(fcid); + // associate this configuration with both this FCID and the default. + FlightConfigurationSet fcs = rocket.getConfigurationSet(); + FlightConfiguration fc = fcs.get(fcid); + fcs.setDefault(fc); } super.closeElement(element, attributes, content, warnings); diff --git a/core/src/net/sf/openrocket/file/openrocket/savers/RecoveryDeviceSaver.java b/core/src/net/sf/openrocket/file/openrocket/savers/RecoveryDeviceSaver.java index c6effb9ad..fb865164d 100644 --- a/core/src/net/sf/openrocket/file/openrocket/savers/RecoveryDeviceSaver.java +++ b/core/src/net/sf/openrocket/file/openrocket/savers/RecoveryDeviceSaver.java @@ -31,21 +31,22 @@ public class RecoveryDeviceSaver extends MassObjectSaver { elements.addAll(deploymentConfiguration(defaultConfig, false)); Rocket rocket = c.getRocket(); - // Note - getFlightConfigurationIDs returns at least one element. The first element - // is null and means "default". - FlightConfigurationSet configList = rocket.getConfigurationSet(); - if (configList.size() > 1) { + // DEBUG + //System.err.println("printing deployment info for: "+dev.getName()); + //dev.getDeploymentConfigurations().printDebug(); + // DEBUG + + FlightConfigurationSet configList = rocket.getConfigurationSet(); + for (FlightConfigurationID fcid : configList.getSortedConfigurationIDs()) { + //System.err.println("checking FlightConfiguration:"+fcid.getShortKey()+ " save?"); - for (FlightConfiguration config : configList) { - FlightConfigurationID fcid = config.getFlightConfigurationID(); - if (fcid == null) { - continue; - } - if (dev.getDeploymentConfigurations().isDefault(fcid)) { - continue; - } - + if (dev.getDeploymentConfigurations().isDefault(fcid)) { + //System.err.println(" >> skipping: fcid="+fcid.getShortKey()); + continue; + }else if( dev.getDeploymentConfigurations().containsKey(fcid)){ + // only print configurations which override the default. + //System.err.println(" >> printing data."); DeploymentConfiguration deployConfig = dev.getDeploymentConfigurations().get(fcid); elements.add(""); elements.addAll(deploymentConfiguration(deployConfig, true)); diff --git a/core/src/net/sf/openrocket/file/openrocket/savers/RocketSaver.java b/core/src/net/sf/openrocket/file/openrocket/savers/RocketSaver.java index 4fe6007e0..de98b07a1 100644 --- a/core/src/net/sf/openrocket/file/openrocket/savers/RocketSaver.java +++ b/core/src/net/sf/openrocket/file/openrocket/savers/RocketSaver.java @@ -6,6 +6,7 @@ import java.util.Locale; import net.sf.openrocket.rocketcomponent.FlightConfiguration; import net.sf.openrocket.rocketcomponent.FlightConfigurationID; +import net.sf.openrocket.rocketcomponent.FlightConfigurationSet; import net.sf.openrocket.rocketcomponent.ReferenceType; import net.sf.openrocket.rocketcomponent.Rocket; @@ -42,23 +43,25 @@ public class RocketSaver extends RocketComponentSaver { // Motor configurations - FlightConfigurationID defId = rocket.getDefaultConfiguration().getFlightConfigurationID(); - for (FlightConfiguration flightConfig : rocket.getConfigurationSet()) { - FlightConfigurationID fcid = flightConfig.getFlightConfigurationID(); + FlightConfigurationSet allConfigs = rocket.getConfigurationSet(); + for (FlightConfigurationID fcid : allConfigs.getSortedConfigurationIDs()) { + FlightConfiguration flightConfig = allConfigs.get(fcid); if (fcid == null) continue; String str = ""; + } else { + str += "/>"; } + elements.add(str); } diff --git a/core/src/net/sf/openrocket/rocketcomponent/FlightConfiguration.java b/core/src/net/sf/openrocket/rocketcomponent/FlightConfiguration.java index 1d9eb4650..a0fa05ddf 100644 --- a/core/src/net/sf/openrocket/rocketcomponent/FlightConfiguration.java +++ b/core/src/net/sf/openrocket/rocketcomponent/FlightConfiguration.java @@ -82,8 +82,9 @@ public class FlightConfiguration implements FlightConfigurableParameter> im private static final Logger log = LoggerFactory.getLogger(FlightConfigurationSet.class); protected final HashMap map = new HashMap(); - protected final static FlightConfigurationID DEFAULT_VALUE_FCID = FlightConfigurationID.DEFAULT_VALUE_FCID; + protected E defaultValue; protected final RocketComponent component; protected final int eventType; @@ -42,7 +41,7 @@ public class FlightConfigurationSet> im this.component = component; this.eventType = eventType; - this.map.put( DEFAULT_VALUE_FCID, _defaultValue ); + this.defaultValue= _defaultValue; addListener(_defaultValue); } @@ -58,7 +57,7 @@ public class FlightConfigurationSet> im this.component = component; this.eventType = eventType; - this.map.put( DEFAULT_VALUE_FCID, flightConfiguration.getDefault().clone()); + this.defaultValue= flightConfiguration.getDefault().clone(); for (FlightConfigurationID key : flightConfiguration.map.keySet()) { this.map.put(key, flightConfiguration.map.get(key).clone()); } @@ -70,7 +69,7 @@ public class FlightConfigurationSet> im @Override public E getDefault(){ - return this.map.get(DEFAULT_VALUE_FCID); + return this.defaultValue; } @Override @@ -81,7 +80,7 @@ public class FlightConfigurationSet> im if( this.isDefault(nextDefaultValue)){ return; } - this.set( DEFAULT_VALUE_FCID, nextDefaultValue); + this.defaultValue = nextDefaultValue; } @Override @@ -127,16 +126,16 @@ public class FlightConfigurationSet> im public List getSortedConfigurationIDs(){ Vector toReturn = new Vector(); - toReturn.addAll( this.getIDs() ); + toReturn.addAll( this.map.keySet() ); toReturn.sort( null ); return toReturn; } - public Set getIDs(){ - return this.map.keySet(); + public List getIDs(){ + return this.getSortedConfigurationIDs(); } - + @Override public void set(FlightConfigurationID fcid, E nextValue) { if (null == fcid) { @@ -146,11 +145,6 @@ public class FlightConfigurationSet> im } if ( nextValue == null) { // null value means to delete this fcid - if ( DEFAULT_VALUE_FCID == fcid ) { - // NEVER delete the default value.... - return; - } - E previousValue = map.remove(fcid); removeListener(previousValue); }else{ @@ -168,7 +162,7 @@ public class FlightConfigurationSet> im @Override public boolean isDefault( FlightConfigurationID fcid) { - return (getDefault() == map.get(fcid)); + return ( this.getDefault() == this.map.get(fcid)); } @Override @@ -219,17 +213,33 @@ public class FlightConfigurationSet> im System.err.println("====== Dumping ConfigurationSet for comp: '"+this.component.getName()+"' of type: "+this.component.getClass().getSimpleName()+" ======"); System.err.println(" >> FlightConfigurationSet ("+this.size()+ " configurations)"); - for( FlightConfigurationID loopFCID : this.getSortedConfigurationIDs()){ - String shortKey = loopFCID.toShortKey(); + if( 0 == this.size() ){ + String designation = ""; + E inst = this.getDefault(); - E inst = this.map.get(loopFCID); - String designation; if( inst instanceof FlightConfiguration){ - FlightConfiguration fc = (FlightConfiguration) inst; - designation = fc.getName(); + designation = ((FlightConfiguration) inst).getFlightConfigurationID().getShortKey(); }else{ designation = inst.toString(); } + + System.err.println(" ( DEFAULT_VALUE = "+designation + ")"); + } + + for( FlightConfigurationID loopFCID : this.getSortedConfigurationIDs()){ + String shortKey = loopFCID.getShortKey(); + String designation = ""; + + E inst = this.map.get(loopFCID); + if( inst instanceof FlightConfiguration){ + FlightConfiguration fc = (FlightConfiguration) inst; + designation = ( fc.isNameOverridden() ? "" : fc.getName()); + }else{ + designation = inst.toString(); + } + if( this.isDefault(inst)){ + shortKey = "*"+shortKey+"*"; + } System.err.println(" >> ["+shortKey+"]= "+designation); } diff --git a/core/src/net/sf/openrocket/rocketcomponent/MotorConfigurationSet.java b/core/src/net/sf/openrocket/rocketcomponent/MotorConfigurationSet.java index 642e450c5..56fc0acb9 100644 --- a/core/src/net/sf/openrocket/rocketcomponent/MotorConfigurationSet.java +++ b/core/src/net/sf/openrocket/rocketcomponent/MotorConfigurationSet.java @@ -37,7 +37,7 @@ public class MotorConfigurationSet extends FlightConfigurationSet System.err.println(" >> motorSet ("+this.size()+ " motors)"); for( FlightConfigurationID loopFCID : this.map.keySet()){ - String shortKey = loopFCID.toShortKey(); + String shortKey = loopFCID.getShortKey(); MotorInstance curInstance = this.map.get(loopFCID); String designation; diff --git a/core/src/net/sf/openrocket/rocketcomponent/Rocket.java b/core/src/net/sf/openrocket/rocketcomponent/Rocket.java index c4662bff9..3f7fc7d2a 100644 --- a/core/src/net/sf/openrocket/rocketcomponent/Rocket.java +++ b/core/src/net/sf/openrocket/rocketcomponent/Rocket.java @@ -83,8 +83,7 @@ public class Rocket extends RocketComponent { treeModID = modID; functionalModID = modID; - FlightConfigurationID defaultFCID = FlightConfigurationID.DEFAULT_CONFIGURATION_FCID; - FlightConfiguration defaultConfiguration = new FlightConfiguration( defaultFCID, this); + FlightConfiguration defaultConfiguration = new FlightConfiguration( null, this); this.configurations = new FlightConfigurationSet(this, ComponentChangeEvent.ALL_CHANGE, defaultConfiguration); } diff --git a/swing/src/net/sf/openrocket/gui/dialogs/flightconfiguration/RenameConfigDialog.java b/swing/src/net/sf/openrocket/gui/dialogs/flightconfiguration/RenameConfigDialog.java index 11bdf4c9c..f8a9ea1ae 100644 --- a/swing/src/net/sf/openrocket/gui/dialogs/flightconfiguration/RenameConfigDialog.java +++ b/swing/src/net/sf/openrocket/gui/dialogs/flightconfiguration/RenameConfigDialog.java @@ -40,7 +40,7 @@ public class RenameConfigDialog extends JDialog { public void actionPerformed(ActionEvent e) { String newName = textbox.getText(); rocket.getFlightConfiguration(fcid).setName( newName); - System.err.println(" << just renamed: "+fcid.toShortKey()+" with: "+newName+" to: "+ rocket.getFlightConfiguration(fcid).getName()); + System.err.println(" << just renamed: "+fcid.getShortKey()+" with: "+newName+" to: "+ rocket.getFlightConfiguration(fcid).getName()); rocket.getConfigurationSet().printDebug(); RenameConfigDialog.this.setVisible(false); } diff --git a/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/FlightConfigurableTableModel.java b/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/FlightConfigurableTableModel.java index 98b089045..e7eb768b6 100644 --- a/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/FlightConfigurableTableModel.java +++ b/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/FlightConfigurableTableModel.java @@ -18,7 +18,6 @@ import net.sf.openrocket.startup.Application; import net.sf.openrocket.util.Pair; public class FlightConfigurableTableModel extends AbstractTableModel implements ComponentChangeListener{ - private static final long serialVersionUID = 3168465083803936363L; private static final Translator trans = Application.getTranslator(); private static final String CONFIGURATION = trans.get("edtmotorconfdlg.col.configuration"); @@ -66,8 +65,7 @@ public class FlightConfigurableTableModel @Override public int getRowCount() { - // the -1 removes the DEFAULT_VALUE row, which is hidden. - return (rocket.getConfigurationCount()-1); + return rocket.getConfigurationCount(); } @Override @@ -107,9 +105,8 @@ public class FlightConfigurableTableModel } private FlightConfigurationID getConfigurationID(int rowNum) { - if( rocket.getConfigurationCount() != (1+ ids.size() ) ){ + if( rocket.getConfigurationCount() != (ids.size() ) ){ this.ids = rocket.getSortedConfigurationIDs(); - this.ids.remove(FlightConfigurationID.DEFAULT_VALUE_FCID); } return this.ids.get(rowNum); 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 346ab3d8d..34f0b9f4b 100644 --- a/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/FlightConfigurationPanel.java +++ b/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/FlightConfigurationPanel.java @@ -127,7 +127,6 @@ public class FlightConfigurationPanel extends JPanel implements StateChangeListe FlightConfiguration newConfig = new FlightConfiguration( newFCID, rocket ); rocket.setFlightConfiguration(newFCID, newConfig); - //System.err.println("Adding new config: "+newFCID.key+" called: "+newConfig.getName()+" (sz: "+newConfig?+")"); // Create a new simulation for this configuration. createSimulationForNewConfiguration(); diff --git a/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/MotorConfigurationPanel.java b/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/MotorConfigurationPanel.java index cb54ab8d5..78ec3705e 100644 --- a/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/MotorConfigurationPanel.java +++ b/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/MotorConfigurationPanel.java @@ -139,7 +139,6 @@ public class MotorConfigurationPanel extends FlightConfigurablePanel protected JTable initializeTable() { //// Motor selection table. configurationTableModel = new FlightConfigurableTableModel(MotorMount.class,rocket) { - private static final long serialVersionUID = -1210899988369000567L; @Override @@ -206,7 +205,6 @@ public class MotorConfigurationPanel extends FlightConfigurablePanel if ( (null == fcid )||( null == curMount )){ return; } - System.err.println("?? selected FCID: "+ fcid.key); motorChooserDialog.setMotorMountAndConfig( fcid, curMount ); motorChooserDialog.setVisible(true); @@ -286,6 +284,11 @@ public class MotorConfigurationPanel extends FlightConfigurablePanel // if( mount instanceof BodyTube ){ // System.err.println("Formatting Cell: fcid="+configId.key.substring(0, 8)); // ((BodyTube) mount).printMotorDebug(); +// } +// System.err.println("rendering "+configId.getShortKey()+" cell: " ); +// if( rocket.getConfigurationSet().isDefault( configId) ){ +// String newText = label.getText() + " (default)"; +// System.err.println(" "+label.getText()+" >> "+newText); // } JLabel motorDescriptionLabel = new JLabel(motorString);