Fix subcomponents override widgets not disabling when enabled prior to parent overriding subcomponents

This commit is contained in:
SiboVG 2022-11-09 15:14:16 +01:00
parent 4c8aaee8a8
commit a75d3402c3
2 changed files with 44 additions and 4 deletions

View File

@ -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 <code>true</code>.

View File

@ -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 --------------------------------------------------