diff --git a/core/src/net/sf/openrocket/rocketcomponent/Rocket.java b/core/src/net/sf/openrocket/rocketcomponent/Rocket.java index 1be373b40..c60dc473c 100644 --- a/core/src/net/sf/openrocket/rocketcomponent/Rocket.java +++ b/core/src/net/sf/openrocket/rocketcomponent/Rocket.java @@ -496,10 +496,24 @@ public class Rocket extends ComponentAssembly { @Override public void update(){ + updateStageNumbers(); updateStageMap(); updateConfigurations(); } - + + /** + * Update all the stage numbers based on their position in the component tree + */ + private void updateStageNumbers() { + for (RocketComponent component : getChildren()) { + if (component instanceof AxialStage) { + AxialStage stage = (AxialStage) component; + forgetStage(stage); + stage.setStageNumber(getChildPosition(stage)); + } + } + } + private void updateStageMap(){ for( RocketComponent component : getChildren() ){ if (component instanceof AxialStage) { diff --git a/core/src/net/sf/openrocket/rocketcomponent/StageSeparationConfiguration.java b/core/src/net/sf/openrocket/rocketcomponent/StageSeparationConfiguration.java index 8f80d61d3..adf2bc873 100644 --- a/core/src/net/sf/openrocket/rocketcomponent/StageSeparationConfiguration.java +++ b/core/src/net/sf/openrocket/rocketcomponent/StageSeparationConfiguration.java @@ -96,7 +96,7 @@ public class StageSeparationConfiguration implements FlightConfigurableParameter private static final Translator trans = Application.getTranslator(); - private SeparationEvent separationEvent = SeparationEvent.NEVER; + private SeparationEvent separationEvent = SeparationEvent.UPPER_IGNITION; private double separationDelay = 0; public SeparationEvent getSeparationEvent() { diff --git a/swing/src/net/sf/openrocket/gui/configdialog/AxialStageConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/AxialStageConfig.java index e932bda52..7c7de6431 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/AxialStageConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/AxialStageConfig.java @@ -31,7 +31,8 @@ public class AxialStageConfig extends ComponentAssemblyConfig { if (component.getStageNumber() > 0) { JPanel tab = separationTab((AxialStage) component); tabbedPane.insertTab(trans.get("StageConfig.tab.Separation"), null, tab, - trans.get("StageConfig.tab.Separation.ttip"), 2); + trans.get("StageConfig.tab.Separation.ttip"), 0); + tabbedPane.setSelectedIndex(0); } } 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 7925ef833..1a86911db 100644 --- a/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/MotorConfigurationPanel.java +++ b/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/MotorConfigurationPanel.java @@ -29,9 +29,12 @@ import net.sf.openrocket.gui.widgets.SelectColorButton; import net.sf.openrocket.motor.IgnitionEvent; import net.sf.openrocket.motor.Motor; import net.sf.openrocket.motor.MotorConfiguration; +import net.sf.openrocket.rocketcomponent.AxialStage; +import net.sf.openrocket.rocketcomponent.BodyTube; import net.sf.openrocket.rocketcomponent.ComponentChangeEvent; import net.sf.openrocket.rocketcomponent.FlightConfiguration; import net.sf.openrocket.rocketcomponent.FlightConfigurationId; +import net.sf.openrocket.rocketcomponent.InnerTube; import net.sf.openrocket.rocketcomponent.MotorMount; import net.sf.openrocket.rocketcomponent.Rocket; import net.sf.openrocket.startup.Application; @@ -139,6 +142,15 @@ public class MotorConfigurationPanel extends FlightConfigurablePanel protected boolean includeComponent(MotorMount component) { return component.isMotorMount(); } + + @Override + public void componentChanged(ComponentChangeEvent cce) { + super.componentChanged(cce); + // This will catch a name change to cause a change in the header of the table + if ((cce.getSource() instanceof BodyTube || cce.getSource() instanceof InnerTube) && cce.isNonFunctionalChange()) { + fireTableStructureChanged(); + } + } }; // Listen to changes to the table so we can disable the help text when a diff --git a/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/SeparationConfigurationPanel.java b/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/SeparationConfigurationPanel.java index 4eb5dd8bf..02402894c 100644 --- a/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/SeparationConfigurationPanel.java +++ b/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/SeparationConfigurationPanel.java @@ -76,6 +76,14 @@ public class SeparationConfigurationPanel extends FlightConfigurablePanel 0; } + @Override + public void componentChanged(ComponentChangeEvent cce) { + super.componentChanged(cce); + // This will catch a name change of the stage to cause a change in the header of the table + if (cce.getSource() instanceof AxialStage && cce.isNonFunctionalChange()) { + fireTableStructureChanged(); + } + } }; JTable separationTable = new JTable(separationTableModel); separationTable.getTableHeader().setReorderingAllowed(false);