[fixes #871] Disable automatic checkbox upon no reference component
This commit is contained in:
parent
31f52cec18
commit
855deb11fc
@ -5,6 +5,8 @@ import javax.swing.JCheckBox;
|
|||||||
import javax.swing.JLabel;
|
import javax.swing.JLabel;
|
||||||
import javax.swing.JPanel;
|
import javax.swing.JPanel;
|
||||||
import javax.swing.JSpinner;
|
import javax.swing.JSpinner;
|
||||||
|
import javax.swing.event.ChangeEvent;
|
||||||
|
import javax.swing.event.ChangeListener;
|
||||||
|
|
||||||
import net.miginfocom.swing.MigLayout;
|
import net.miginfocom.swing.MigLayout;
|
||||||
import net.sf.openrocket.document.OpenRocketDocument;
|
import net.sf.openrocket.document.OpenRocketDocument;
|
||||||
@ -15,7 +17,9 @@ import net.sf.openrocket.gui.components.BasicSlider;
|
|||||||
import net.sf.openrocket.gui.components.UnitSelector;
|
import net.sf.openrocket.gui.components.UnitSelector;
|
||||||
import net.sf.openrocket.l10n.Translator;
|
import net.sf.openrocket.l10n.Translator;
|
||||||
import net.sf.openrocket.material.Material;
|
import net.sf.openrocket.material.Material;
|
||||||
|
import net.sf.openrocket.rocketcomponent.BodyTube;
|
||||||
import net.sf.openrocket.rocketcomponent.MotorMount;
|
import net.sf.openrocket.rocketcomponent.MotorMount;
|
||||||
|
import net.sf.openrocket.rocketcomponent.NoseCone;
|
||||||
import net.sf.openrocket.rocketcomponent.RocketComponent;
|
import net.sf.openrocket.rocketcomponent.RocketComponent;
|
||||||
import net.sf.openrocket.startup.Application;
|
import net.sf.openrocket.startup.Application;
|
||||||
import net.sf.openrocket.unit.UnitGroup;
|
import net.sf.openrocket.unit.UnitGroup;
|
||||||
@ -58,9 +62,24 @@ public class BodyTubeConfig extends RocketComponentConfig {
|
|||||||
|
|
||||||
//// Automatic
|
//// Automatic
|
||||||
javax.swing.Action outerAutoAction = od.getAutomaticAction();
|
javax.swing.Action outerAutoAction = od.getAutomaticAction();
|
||||||
JCheckBox check = new JCheckBox(outerAutoAction);
|
JCheckBox checkAuto = new JCheckBox(outerAutoAction);
|
||||||
check.setText(trans.get("BodyTubecfg.checkbox.Automatic"));
|
checkAuto.setText(trans.get("BodyTubecfg.checkbox.Automatic"));
|
||||||
panel.add(check, "skip, span 2, wrap");
|
panel.add(checkAuto, "skip, span 2, wrap");
|
||||||
|
// Disable check button if there is no component to get the diameter from
|
||||||
|
checkAuto.addChangeListener(new ChangeListener() {
|
||||||
|
@Override
|
||||||
|
public void stateChanged(ChangeEvent e) {
|
||||||
|
if (!(c instanceof BodyTube)) return;
|
||||||
|
if (((BodyTube) c).getPreviousSymmetricComponent() != null) {
|
||||||
|
checkAuto.setEnabled(true);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
checkAuto.setEnabled(false);
|
||||||
|
((BodyTube) c).setOuterRadiusAutomatic(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
checkAuto.getChangeListeners()[0].stateChanged(null);
|
||||||
|
|
||||||
//// Inner diameter
|
//// Inner diameter
|
||||||
panel.add(new JLabel(trans.get("BodyTubecfg.lbl.Innerdiameter")));
|
panel.add(new JLabel(trans.get("BodyTubecfg.lbl.Innerdiameter")));
|
||||||
@ -87,7 +106,7 @@ public class BodyTubeConfig extends RocketComponentConfig {
|
|||||||
panel.add(new BasicSlider(thicknessModel.getSliderModel(0, 0.01)), "w 100lp, wrap 0px");
|
panel.add(new BasicSlider(thicknessModel.getSliderModel(0, 0.01)), "w 100lp, wrap 0px");
|
||||||
|
|
||||||
//// Filled
|
//// Filled
|
||||||
check = new JCheckBox(new BooleanModel(component, "Filled"));
|
JCheckBox check = new JCheckBox(new BooleanModel(component, "Filled"));
|
||||||
check.setText(trans.get("BodyTubecfg.checkbox.Filled"));
|
check.setText(trans.get("BodyTubecfg.checkbox.Filled"));
|
||||||
panel.add(check, "skip, span 2, wrap");
|
panel.add(check, "skip, span 2, wrap");
|
||||||
|
|
||||||
|
@ -10,6 +10,8 @@ import javax.swing.JLabel;
|
|||||||
import javax.swing.JPanel;
|
import javax.swing.JPanel;
|
||||||
import javax.swing.JSlider;
|
import javax.swing.JSlider;
|
||||||
import javax.swing.JSpinner;
|
import javax.swing.JSpinner;
|
||||||
|
import javax.swing.event.ChangeEvent;
|
||||||
|
import javax.swing.event.ChangeListener;
|
||||||
|
|
||||||
import net.miginfocom.swing.MigLayout;
|
import net.miginfocom.swing.MigLayout;
|
||||||
import net.sf.openrocket.document.OpenRocketDocument;
|
import net.sf.openrocket.document.OpenRocketDocument;
|
||||||
@ -113,6 +115,21 @@ public class NoseConeConfig extends RocketComponentConfig {
|
|||||||
//// Automatic
|
//// Automatic
|
||||||
check.setText(trans.get("NoseConeCfg.checkbox.Automatic"));
|
check.setText(trans.get("NoseConeCfg.checkbox.Automatic"));
|
||||||
panel.add(check, "skip, span 2, wrap");
|
panel.add(check, "skip, span 2, wrap");
|
||||||
|
// Disable check button if there is no component to get the diameter from
|
||||||
|
check.addChangeListener(new ChangeListener() {
|
||||||
|
@Override
|
||||||
|
public void stateChanged(ChangeEvent e) {
|
||||||
|
if (!(c instanceof NoseCone)) return;
|
||||||
|
if (((NoseCone) c).getNextSymmetricComponent() != null) {
|
||||||
|
check.setEnabled(true);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
check.setEnabled(false);
|
||||||
|
((NoseCone) c).setAftRadiusAutomatic(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
check.getChangeListeners()[0].stateChanged(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
{//// Wall thickness:
|
{//// Wall thickness:
|
||||||
|
@ -9,6 +9,8 @@ import javax.swing.JComboBox;
|
|||||||
import javax.swing.JLabel;
|
import javax.swing.JLabel;
|
||||||
import javax.swing.JPanel;
|
import javax.swing.JPanel;
|
||||||
import javax.swing.JSpinner;
|
import javax.swing.JSpinner;
|
||||||
|
import javax.swing.event.ChangeEvent;
|
||||||
|
import javax.swing.event.ChangeListener;
|
||||||
|
|
||||||
import net.miginfocom.swing.MigLayout;
|
import net.miginfocom.swing.MigLayout;
|
||||||
import net.sf.openrocket.document.OpenRocketDocument;
|
import net.sf.openrocket.document.OpenRocketDocument;
|
||||||
@ -20,6 +22,8 @@ import net.sf.openrocket.gui.components.DescriptionArea;
|
|||||||
import net.sf.openrocket.gui.components.UnitSelector;
|
import net.sf.openrocket.gui.components.UnitSelector;
|
||||||
import net.sf.openrocket.l10n.Translator;
|
import net.sf.openrocket.l10n.Translator;
|
||||||
import net.sf.openrocket.material.Material;
|
import net.sf.openrocket.material.Material;
|
||||||
|
import net.sf.openrocket.rocketcomponent.BodyTube;
|
||||||
|
import net.sf.openrocket.rocketcomponent.NoseCone;
|
||||||
import net.sf.openrocket.rocketcomponent.RocketComponent;
|
import net.sf.openrocket.rocketcomponent.RocketComponent;
|
||||||
import net.sf.openrocket.rocketcomponent.Transition;
|
import net.sf.openrocket.rocketcomponent.Transition;
|
||||||
import net.sf.openrocket.startup.Application;
|
import net.sf.openrocket.startup.Application;
|
||||||
@ -124,6 +128,21 @@ public class TransitionConfig extends RocketComponentConfig {
|
|||||||
//// Automatic
|
//// Automatic
|
||||||
checkbox.setText(trans.get("TransitionCfg.checkbox.Automatic"));
|
checkbox.setText(trans.get("TransitionCfg.checkbox.Automatic"));
|
||||||
panel.add(checkbox, "skip, span 2, wrap");
|
panel.add(checkbox, "skip, span 2, wrap");
|
||||||
|
// Disable check button if there is no component to get the diameter from
|
||||||
|
checkbox.addChangeListener(new ChangeListener() {
|
||||||
|
@Override
|
||||||
|
public void stateChanged(ChangeEvent e) {
|
||||||
|
if (!(c instanceof Transition)) return;
|
||||||
|
if (((Transition) c).getPreviousSymmetricComponent() != null) {
|
||||||
|
checkbox.setEnabled(true);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
checkbox.setEnabled(false);
|
||||||
|
((Transition) c).setForeRadiusAutomatic(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
checkbox.getChangeListeners()[0].stateChanged(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
{ //// Aft diameter:
|
{ //// Aft diameter:
|
||||||
@ -143,6 +162,21 @@ public class TransitionConfig extends RocketComponentConfig {
|
|||||||
//// Automatic
|
//// Automatic
|
||||||
aftRadiusCheckbox.setText(trans.get("TransitionCfg.checkbox.Automatic"));
|
aftRadiusCheckbox.setText(trans.get("TransitionCfg.checkbox.Automatic"));
|
||||||
panel.add(aftRadiusCheckbox, "skip, span 2, wrap");
|
panel.add(aftRadiusCheckbox, "skip, span 2, wrap");
|
||||||
|
// Disable check button if there is no component to get the diameter from
|
||||||
|
aftRadiusCheckbox.addChangeListener(new ChangeListener() {
|
||||||
|
@Override
|
||||||
|
public void stateChanged(ChangeEvent e) {
|
||||||
|
if (!(c instanceof Transition)) return;
|
||||||
|
if (((Transition) c).getNextSymmetricComponent() != null) {
|
||||||
|
aftRadiusCheckbox.setEnabled(true);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
aftRadiusCheckbox.setEnabled(false);
|
||||||
|
((Transition) c).setAftRadiusAutomatic(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
aftRadiusCheckbox.getChangeListeners()[0].stateChanged(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
{ /// Wall thickness:
|
{ /// Wall thickness:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user