From b857da940a996a5ccf88eca9a668245288c9dfdb Mon Sep 17 00:00:00 2001 From: Sibo Van Gool Date: Fri, 3 Sep 2021 00:12:53 +0200 Subject: [PATCH 1/4] [fixes #1001] Set 'Separation' tab as first tab + use 'ignition of next stage' as default separation event --- .../rocketcomponent/StageSeparationConfiguration.java | 2 +- .../net/sf/openrocket/gui/configdialog/AxialStageConfig.java | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/core/src/net/sf/openrocket/rocketcomponent/StageSeparationConfiguration.java b/core/src/net/sf/openrocket/rocketcomponent/StageSeparationConfiguration.java index 7ccf99901..91b287347 100644 --- a/core/src/net/sf/openrocket/rocketcomponent/StageSeparationConfiguration.java +++ b/core/src/net/sf/openrocket/rocketcomponent/StageSeparationConfiguration.java @@ -94,7 +94,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); } } From c33aa04dd953879e5fafaf5681d1dbed0574f345 Mon Sep 17 00:00:00 2001 From: Sibo Van Gool Date: Fri, 3 Sep 2021 20:33:05 +0200 Subject: [PATCH 2/4] Update stage number upon stage order change in the component tree --- .../sf/openrocket/rocketcomponent/Rocket.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) 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) { From 6e86c79302e5e390fc7516e77569ecab90034458 Mon Sep 17 00:00:00 2001 From: Sibo Van Gool Date: Fri, 3 Sep 2021 22:57:31 +0200 Subject: [PATCH 3/4] Fire stage table change upon name change of stage --- .../flightconfigpanel/SeparationConfigurationPanel.java | 9 +++++++++ 1 file changed, 9 insertions(+) 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 fe72c80e6..c98bedd58 100644 --- a/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/SeparationConfigurationPanel.java +++ b/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/SeparationConfigurationPanel.java @@ -17,6 +17,7 @@ import net.sf.openrocket.formatting.RocketDescriptor; import net.sf.openrocket.gui.dialogs.flightconfiguration.SeparationSelectionDialog; import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.rocketcomponent.AxialStage; +import net.sf.openrocket.rocketcomponent.ComponentChangeEvent; import net.sf.openrocket.rocketcomponent.FlightConfigurationId; import net.sf.openrocket.rocketcomponent.Rocket; import net.sf.openrocket.rocketcomponent.StageSeparationConfiguration; @@ -75,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); From f4e02aa6e386427a73aa1f227fc99b0ef09154d4 Mon Sep 17 00:00:00 2001 From: Sibo Van Gool Date: Fri, 3 Sep 2021 23:05:41 +0200 Subject: [PATCH 4/4] Fire motor config table change upon name change of a body/inner tube --- .../flightconfigpanel/MotorConfigurationPanel.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) 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 974c9d794..d2dfe08fe 100644 --- a/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/MotorConfigurationPanel.java +++ b/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/MotorConfigurationPanel.java @@ -29,8 +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.unit.UnitGroup; @@ -137,6 +141,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