From d400947e1fe75105142805c40fd89830179f777d Mon Sep 17 00:00:00 2001 From: SiboVG Date: Thu, 10 Nov 2022 00:18:56 +0100 Subject: [PATCH] Fix max slider value of thickness --- .../rocketcomponent/SymmetricComponent.java | 14 +++++++++----- .../sf/openrocket/rocketcomponent/Transition.java | 1 - .../gui/configdialog/NoseConeConfig.java | 4 +++- .../gui/configdialog/TransitionConfig.java | 4 +++- 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/core/src/net/sf/openrocket/rocketcomponent/SymmetricComponent.java b/core/src/net/sf/openrocket/rocketcomponent/SymmetricComponent.java index 322a6245b..bb76e77ce 100644 --- a/core/src/net/sf/openrocket/rocketcomponent/SymmetricComponent.java +++ b/core/src/net/sf/openrocket/rocketcomponent/SymmetricComponent.java @@ -7,8 +7,6 @@ import java.util.Collection; import java.util.List; import net.sf.openrocket.preset.ComponentPreset; -import net.sf.openrocket.rocketcomponent.PodSet; -import net.sf.openrocket.rocketcomponent.position.AxialMethod; import net.sf.openrocket.util.BoundingBox; import net.sf.openrocket.util.Coordinate; import net.sf.openrocket.util.MathUtil; @@ -94,8 +92,14 @@ public abstract class SymmetricComponent extends BodyComponent implements BoxBou public final double getInnerRadius(double x, double theta) { return getInnerRadius(x); } - - + + /** + * Returns the largest radius of the component (either the aft radius, or the fore radius). + */ + public double getMaxRadius() { + return MathUtil.max(getForeRadius(), getAftRadius()); + } + /** * Return the component wall thickness. @@ -120,7 +124,7 @@ public abstract class SymmetricComponent extends BodyComponent implements BoxBou if ((this.thickness == thickness) && !filled) return; - this.thickness = doClamping ? MathUtil.clamp(thickness, 0, Math.max(getForeRadius(), getAftRadius())) : thickness; + this.thickness = doClamping ? MathUtil.clamp(thickness, 0, getMaxRadius()) : thickness; filled = false; fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE); clearPreset(); diff --git a/core/src/net/sf/openrocket/rocketcomponent/Transition.java b/core/src/net/sf/openrocket/rocketcomponent/Transition.java index 83d18081f..9fd78a378 100644 --- a/core/src/net/sf/openrocket/rocketcomponent/Transition.java +++ b/core/src/net/sf/openrocket/rocketcomponent/Transition.java @@ -230,7 +230,6 @@ public class Transition extends SymmetricComponent implements InsideColorCompone } - //// Radius automatics @Override diff --git a/swing/src/net/sf/openrocket/gui/configdialog/NoseConeConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/NoseConeConfig.java index 06e711b85..9587d4760 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/NoseConeConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/NoseConeConfig.java @@ -133,7 +133,9 @@ public class NoseConeConfig extends RocketComponentConfig { order.add(((SpinnerEditor) thicknessSpinner.getEditor()).getTextField()); panel.add(new UnitSelector(thicknessModel), "growx"); - panel.add(new BasicSlider(thicknessModel.getSliderModel(0, 0.01)), "w 100lp, wrap 0px"); + panel.add(new BasicSlider(thicknessModel.getSliderModel(0, + new DoubleModel(component, "MaxRadius", UnitGroup.UNITS_LENGTH))), + "w 100lp, wrap 0px"); final JCheckBox filledCheckbox = new JCheckBox(new BooleanModel(component, "Filled")); diff --git a/swing/src/net/sf/openrocket/gui/configdialog/TransitionConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/TransitionConfig.java index 3b3c3f0ea..6487e5059 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/TransitionConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/TransitionConfig.java @@ -170,7 +170,9 @@ public class TransitionConfig extends RocketComponentConfig { order.add(((SpinnerEditor) thicknessSpinner.getEditor()).getTextField()); panel.add(new UnitSelector(thicknessModel), "growx"); - panel.add(new BasicSlider(thicknessModel.getSliderModel(0, 0.01)), "w 100lp, wrap 0px"); + panel.add(new BasicSlider(thicknessModel.getSliderModel(0, + new DoubleModel(component, "MaxRadius", UnitGroup.UNITS_LENGTH))), + "w 100lp, wrap 0px"); //// Filled final JCheckBox thicknessCheckbox = new JCheckBox(new BooleanModel(component, "Filled"));