Merge pull request #2250 from SiboVG/issue-2244
[#2244 & #2249] Copy default sep config instead of creating new one
This commit is contained in:
commit
875a2b775a
@ -207,10 +207,10 @@ public class AxialStage extends ComponentAssembly implements FlightConfigurableC
|
|||||||
public StageSeparationConfiguration getSeparationConfiguration() {
|
public StageSeparationConfiguration getSeparationConfiguration() {
|
||||||
FlightConfiguration flConfig = getRocket().getSelectedConfiguration();
|
FlightConfiguration flConfig = getRocket().getSelectedConfiguration();
|
||||||
StageSeparationConfiguration sepConfig = getSeparationConfigurations().get(flConfig.getId());
|
StageSeparationConfiguration sepConfig = getSeparationConfigurations().get(flConfig.getId());
|
||||||
// to ensure the configuration is distinct, and we're not modifying the default
|
// To ensure the configuration is distinct, and we're not modifying the default
|
||||||
if ((sepConfig == getSeparationConfigurations().getDefault())
|
if ((sepConfig == getSeparationConfigurations().getDefault())
|
||||||
&& (flConfig.getId() != FlightConfigurationId.DEFAULT_VALUE_FCID)) {
|
&& (flConfig.getId() != FlightConfigurationId.DEFAULT_VALUE_FCID)) {
|
||||||
sepConfig = new StageSeparationConfiguration();
|
sepConfig = sepConfig.copy(flConfig.getId());
|
||||||
getSeparationConfigurations().set(flConfig.getId(), sepConfig);
|
getSeparationConfigurations().set(flConfig.getId(), sepConfig);
|
||||||
}
|
}
|
||||||
return sepConfig;
|
return sepConfig;
|
||||||
|
@ -181,10 +181,13 @@ public class SeparationConfigurationPanel extends FlightConfigurablePanel<AxialS
|
|||||||
}
|
}
|
||||||
|
|
||||||
boolean update = false;
|
boolean update = false;
|
||||||
AxialStage initStage = stages.get(0);
|
AxialStage initStage = stages.get(0); // Arbitrary choice of stage (all stages should have the same settings due to multi-comp editing)
|
||||||
FlightConfigurationId initFcId = fcIds.get(0);
|
FlightConfigurationId initFcId = rocket.getSelectedConfiguration().getId(); // The SeparationSelectionDialog should apply its separation settings to the selected configuration
|
||||||
|
|
||||||
|
// Store the initial configuration so we can check later whether something changed
|
||||||
StageSeparationConfiguration initialConfig = initStage.getSeparationConfigurations().get(initFcId).copy(initFcId);
|
StageSeparationConfiguration initialConfig = initStage.getSeparationConfigurations().get(initFcId).copy(initFcId);
|
||||||
|
|
||||||
|
// Launch the separation config dialog
|
||||||
JDialog d = new SeparationSelectionDialog(SwingUtilities.getWindowAncestor(this), rocket, initStage);
|
JDialog d = new SeparationSelectionDialog(SwingUtilities.getWindowAncestor(this), rocket, initStage);
|
||||||
d.setVisible(true);
|
d.setVisible(true);
|
||||||
|
|
||||||
@ -195,6 +198,7 @@ public class SeparationConfigurationPanel extends FlightConfigurablePanel<AxialS
|
|||||||
double separationDelay = initStage.getSeparationConfigurations().get(initFcId).getSeparationDelay();
|
double separationDelay = initStage.getSeparationConfigurations().get(initFcId).getSeparationDelay();
|
||||||
SeparationEvent separationEvent= initStage.getSeparationConfigurations().get(initFcId).getSeparationEvent();
|
SeparationEvent separationEvent= initStage.getSeparationConfigurations().get(initFcId).getSeparationEvent();
|
||||||
|
|
||||||
|
// Parse all stages anc flight configurations to check whether we need to update
|
||||||
for (int i = 0; i < stages.size(); i++) {
|
for (int i = 0; i < stages.size(); i++) {
|
||||||
for (int j = 0; j < fcIds.size(); j++) {
|
for (int j = 0; j < fcIds.size(); j++) {
|
||||||
if ((i == 0) && (j == 0)) break;
|
if ((i == 0) && (j == 0)) break;
|
||||||
@ -205,7 +209,7 @@ public class SeparationConfigurationPanel extends FlightConfigurablePanel<AxialS
|
|||||||
initialConfig = config.copy(fcId);
|
initialConfig = config.copy(fcId);
|
||||||
|
|
||||||
if (stage.getSeparationConfigurations().isDefault(config)) {
|
if (stage.getSeparationConfigurations().isDefault(config)) {
|
||||||
config = config.clone();
|
config = config.copy(fcId);
|
||||||
}
|
}
|
||||||
|
|
||||||
config.setSeparationDelay(separationDelay);
|
config.setSeparationDelay(separationDelay);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user