From a75d3402c3bedbabaade69ca9fe0d3524e0ac6fb Mon Sep 17 00:00:00 2001 From: SiboVG Date: Wed, 9 Nov 2022 15:14:16 +0100 Subject: [PATCH] Fix subcomponents override widgets not disabling when enabled prior to parent overriding subcomponents --- .../openrocket/gui/adaptors/BooleanModel.java | 9 +++++ .../configdialog/RocketComponentConfig.java | 39 +++++++++++++++++-- 2 files changed, 44 insertions(+), 4 deletions(-) diff --git a/swing/src/net/sf/openrocket/gui/adaptors/BooleanModel.java b/swing/src/net/sf/openrocket/gui/adaptors/BooleanModel.java index 2f631058a..915313994 100644 --- a/swing/src/net/sf/openrocket/gui/adaptors/BooleanModel.java +++ b/swing/src/net/sf/openrocket/gui/adaptors/BooleanModel.java @@ -201,6 +201,15 @@ public class BooleanModel extends AbstractAction implements StateChangeListener, componentEnableState.add(enableState); updateEnableStatus(); } + + /** + * Remove a component from the list of enable components controlled by this model. + * @param component component to remove from the list + */ + public void removeEnableComponent(Component component) { + checkState(true); + components.remove(component); + } /** * Add a component which will be enabled when this boolean is true. diff --git a/swing/src/net/sf/openrocket/gui/configdialog/RocketComponentConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/RocketComponentConfig.java index c9f17ee38..2d0729992 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/RocketComponentConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/RocketComponentConfig.java @@ -389,7 +389,6 @@ public class RocketComponentConfig extends JPanel { labelMassOverriddenBy.setToolTipText( String.format(trans.get("RocketCompCfg.lbl.MassOverriddenBy.ttip"), component.getMassOverriddenBy().getName())); checkboxes.add(labelMassOverriddenBy, "gapleft 25lp, wrap"); - check.setEnabled(false); } panel.add(checkboxes, "growx 1, gapright 20lp"); @@ -410,6 +409,18 @@ public class RocketComponentConfig extends JPanel { bm.addEnableComponent(bs); panel.add(bs, "growx 5, w 100lp, wrap"); + if (component.getMassOverriddenBy() != null) { + check.setEnabled(false); + bm.removeEnableComponent(checkSub); + bm.removeEnableComponent(spin); + bm.removeEnableComponent(us); + bm.removeEnableComponent(bs); + checkSub.setEnabled(false); + spin.setEnabled(false); + us.setEnabled(false); + bs.setEnabled(false); + } + // END OVERRIDE MASS ---------------------------------- // OVERRIDE CG ---------------------------------- @@ -441,7 +452,6 @@ public class RocketComponentConfig extends JPanel { labelCGOverriddenBy.setToolTipText( String.format(trans.get("RocketCompCfg.lbl.CGOverriddenBy.ttip"), component.getCGOverriddenBy().getName())); checkboxes.add(labelCGOverriddenBy, "gapleft 25lp, wrap"); - check.setEnabled(false); } panel.add(checkboxes, "growx 1, gapright 20lp"); @@ -492,6 +502,18 @@ public class RocketComponentConfig extends JPanel { bm.addEnableComponent(bs); panel.add(bs, "growx 5, w 100lp, wrap"); + if (component.getCGOverriddenBy() != null) { + check.setEnabled(false); + bm.removeEnableComponent(checkSub); + bm.removeEnableComponent(spin); + bm.removeEnableComponent(us); + bm.removeEnableComponent(bs); + checkSub.setEnabled(false); + spin.setEnabled(false); + us.setEnabled(false); + bs.setEnabled(false); + } + // END OVERRIDE CG --------------------------------------------------- @@ -515,7 +537,7 @@ public class RocketComponentConfig extends JPanel { checkboxes.add(checkSub, "gapleft 25lp, wrap"); order.add(checkSub); - ////// CG overridden by + ////// CD overridden by if (component.getCDOverriddenBy() != null) { StyledLabel labelCDOverriddenBy = new StyledLabel( String.format(trans.get("RocketCompCfg.lbl.CDOverriddenBy"), component.getCDOverriddenBy().getName()), @@ -524,7 +546,6 @@ public class RocketComponentConfig extends JPanel { labelCDOverriddenBy.setToolTipText( String.format(trans.get("RocketCompCfg.lbl.CDOverriddenBy"), component.getCDOverriddenBy().getName())); checkboxes.add(labelCDOverriddenBy, "gapleft 25lp, wrap"); - check.setEnabled(false); } panel.add(checkboxes, "growx 1, gapright 20lp"); @@ -542,6 +563,16 @@ public class RocketComponentConfig extends JPanel { bm.addEnableComponent(bs); panel.add(bs, "top, skip, growx 5, w 100lp, wrap"); + if (component.getCDOverriddenBy() != null) { + check.setEnabled(false); + bm.removeEnableComponent(checkSub); + bm.removeEnableComponent(spin); + bm.removeEnableComponent(bs); + checkSub.setEnabled(false); + spin.setEnabled(false); + bs.setEnabled(false); + } + // END OVERRIDE CD -------------------------------------------------- // OVERRIDE MASS, CG DOESN'T INCLUDE MOTORS --------------------------------------------------