diff --git a/core/src/main/java/info/openrocket/core/rocketcomponent/FlightConfiguration.java b/core/src/main/java/info/openrocket/core/rocketcomponent/FlightConfiguration.java index 6da889418..061398139 100644 --- a/core/src/main/java/info/openrocket/core/rocketcomponent/FlightConfiguration.java +++ b/core/src/main/java/info/openrocket/core/rocketcomponent/FlightConfiguration.java @@ -322,14 +322,24 @@ public class FlightConfiguration implements FlightConfigurableParameter getAllComponents() { List traversalOrder = new ArrayList<>(); - recurseAllComponentsDepthFirst(this.rocket, traversalOrder); + recurseAllComponentsDepthFirst(this.rocket, traversalOrder, false); return traversalOrder; } - private void recurseAllComponentsDepthFirst(RocketComponent comp, List traversalOrder) { + public Collection getAllActiveComponents() { + List traversalOrder = new ArrayList<>(); + recurseAllComponentsDepthFirst(this.rocket, traversalOrder, true); + return traversalOrder; + } + + private void recurseAllComponentsDepthFirst(RocketComponent comp, List traversalOrder, + boolean ignoreInactive) { + if (ignoreInactive && !isComponentActive(comp)) { + return; + } traversalOrder.add(comp); for (RocketComponent child : comp.getChildren()) { - recurseAllComponentsDepthFirst(child, traversalOrder); + recurseAllComponentsDepthFirst(child, traversalOrder, ignoreInactive); } } @@ -374,7 +384,7 @@ public class FlightConfiguration implements FlightConfigurableParameter getActiveComponents() { Queue toProcess = new ArrayDeque<>(this.getActiveStages()); diff --git a/swing/src/main/java/info/openrocket/swing/gui/dialogs/componentanalysis/CADataType.java b/swing/src/main/java/info/openrocket/swing/gui/dialogs/componentanalysis/CADataType.java index c3b1d3ba8..7a4acc82c 100644 --- a/swing/src/main/java/info/openrocket/swing/gui/dialogs/componentanalysis/CADataType.java +++ b/swing/src/main/java/info/openrocket/swing/gui/dialogs/componentanalysis/CADataType.java @@ -3,6 +3,7 @@ package info.openrocket.swing.gui.dialogs.componentanalysis; import info.openrocket.core.l10n.Translator; import info.openrocket.core.rocketcomponent.ComponentAssembly; import info.openrocket.core.rocketcomponent.FinSet; +import info.openrocket.core.rocketcomponent.FlightConfiguration; import info.openrocket.core.rocketcomponent.Rocket; import info.openrocket.core.rocketcomponent.RocketComponent; import info.openrocket.core.simulation.DataType; @@ -94,15 +95,15 @@ public class CADataType implements Comparable, Groupable calculateComponentsForType(Rocket rocket, CADataType type) { + public static List calculateComponentsForType(FlightConfiguration configuration, CADataType type) { List components = new ArrayList<>(); // Iterate through all components in the rocket - for (RocketComponent component : rocket.getSelectedConfiguration().getAllComponents()) { + for (RocketComponent component : configuration.getAllActiveComponents()) { // Check if this component is relevant for the given CADataType if (isComponentRelevantForType(component, type)) { components.add(component); diff --git a/swing/src/main/java/info/openrocket/swing/gui/dialogs/componentanalysis/ComponentAnalysisPlotExportDialog.java b/swing/src/main/java/info/openrocket/swing/gui/dialogs/componentanalysis/ComponentAnalysisPlotExportDialog.java index 727be9f4f..6dbcce8f5 100644 --- a/swing/src/main/java/info/openrocket/swing/gui/dialogs/componentanalysis/ComponentAnalysisPlotExportDialog.java +++ b/swing/src/main/java/info/openrocket/swing/gui/dialogs/componentanalysis/ComponentAnalysisPlotExportDialog.java @@ -35,8 +35,6 @@ public class ComponentAnalysisPlotExportDialog extends JDialog { private static final Translator trans = Application.getTranslator(); private static final Logger log = LoggerFactory.getLogger(ComponentAnalysisPlotExportDialog.class); - private final Rocket rocket; - private final JTabbedPane tabbedPane; JComboBox parameterSelector; private JButton okButton; @@ -64,7 +62,6 @@ public class ComponentAnalysisPlotExportDialog extends JDialog { final JPanel contentPanel = new JPanel(new MigLayout("fill, height 500px")); - this.rocket = rocket; this.parameters = parameters; this.parameterSweep = new CAParameterSweep(parameters, aerodynamicCalculator, rocket); this.componentCache = new HashMap<>(); @@ -276,7 +273,7 @@ public class ComponentAnalysisPlotExportDialog extends JDialog { } if (!componentCache.containsKey(type)) { - List components = CADataType.calculateComponentsForType(rocket, type); + List components = CADataType.calculateComponentsForType(parameters.getSelectedConfiguration(), type); componentCache.put(type, components); }