Improve height sliders of Rail Button config
Make it linear + dynamic changing of max/min value
This commit is contained in:
parent
e19deecf94
commit
8c150299bc
@ -126,7 +126,7 @@ public class RailButton extends ExternalComponent implements AnglePositionable,
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.baseHeight_m = Math.max(newBaseHeight, 0);
|
this.baseHeight_m = Math.max(newBaseHeight, 0);
|
||||||
this.baseHeight_m = Math.min(this.baseHeight_m, this.totalHeight_m - this.flangeHeight_m);
|
this.baseHeight_m = Math.min(this.baseHeight_m, getMaxBaseHeight());
|
||||||
clearPreset();
|
clearPreset();
|
||||||
fireComponentChangeEvent(ComponentChangeEvent.BOTH_CHANGE);
|
fireComponentChangeEvent(ComponentChangeEvent.BOTH_CHANGE);
|
||||||
}
|
}
|
||||||
@ -139,11 +139,36 @@ public class RailButton extends ExternalComponent implements AnglePositionable,
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.flangeHeight_m = Math.max(newFlangeHeight, 0);
|
this.flangeHeight_m = Math.max(newFlangeHeight, 0);
|
||||||
this.flangeHeight_m = Math.min(this.flangeHeight_m, this.totalHeight_m - this.baseHeight_m);
|
this.flangeHeight_m = Math.min(this.flangeHeight_m, getMaxFlangeHeight());
|
||||||
clearPreset();
|
clearPreset();
|
||||||
fireComponentChangeEvent(ComponentChangeEvent.BOTH_CHANGE);
|
fireComponentChangeEvent(ComponentChangeEvent.BOTH_CHANGE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setTotalHeight(double newHeight ) {
|
||||||
|
for (RocketComponent listener : configListeners) {
|
||||||
|
if (listener instanceof RailButton) {
|
||||||
|
((RailButton) listener).setTotalHeight(newHeight);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.totalHeight_m = Math.max(newHeight, getMinTotalHeight());
|
||||||
|
|
||||||
|
clearPreset();
|
||||||
|
fireComponentChangeEvent(ComponentChangeEvent.BOTH_CHANGE);
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getMaxBaseHeight() {
|
||||||
|
return this.totalHeight_m - this.flangeHeight_m;
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getMaxFlangeHeight() {
|
||||||
|
return this.totalHeight_m - this.baseHeight_m;
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getMinTotalHeight() {
|
||||||
|
return this.baseHeight_m + this.flangeHeight_m;
|
||||||
|
}
|
||||||
|
|
||||||
public void setScrewHeight(double height) {
|
public void setScrewHeight(double height) {
|
||||||
for (RocketComponent listener : configListeners) {
|
for (RocketComponent listener : configListeners) {
|
||||||
if (listener instanceof RailButton) {
|
if (listener instanceof RailButton) {
|
||||||
|
@ -220,6 +220,19 @@ public class DoubleModel implements StateChangeListener, ChangeSource, Invalidat
|
|||||||
|
|
||||||
quad2 = quad1 = quad0 = 0; // Not used
|
quad2 = quad1 = quad0 = 0; // Not used
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ValueSliderModel(DoubleModel min, double max) {
|
||||||
|
this.islinear = true;
|
||||||
|
linearPosition = 1.0;
|
||||||
|
|
||||||
|
this.min = min;
|
||||||
|
this.mid = new DoubleModel(max); // Never use exponential scale
|
||||||
|
this.max = new DoubleModel(max);
|
||||||
|
|
||||||
|
min.addChangeListener(this);
|
||||||
|
|
||||||
|
quad2 = quad1 = quad0 = 0; // Not used
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -443,6 +456,10 @@ public class DoubleModel implements StateChangeListener, ChangeSource, Invalidat
|
|||||||
public BoundedRangeModel getSliderModel(double min, DoubleModel max) {
|
public BoundedRangeModel getSliderModel(double min, DoubleModel max) {
|
||||||
return new ValueSliderModel(min, max);
|
return new ValueSliderModel(min, max);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public BoundedRangeModel getSliderModel(DoubleModel min, double max) {
|
||||||
|
return new ValueSliderModel(min, max);
|
||||||
|
}
|
||||||
|
|
||||||
public BoundedRangeModel getSliderModel(double min, double mid, double max) {
|
public BoundedRangeModel getSliderModel(double min, double mid, double max) {
|
||||||
return new ValueSliderModel(min, mid, max);
|
return new ValueSliderModel(min, mid, max);
|
||||||
|
@ -55,7 +55,7 @@ public class RailButtonConfig extends RocketComponentConfig {
|
|||||||
panel.add(ODSpinner, "growx");
|
panel.add(ODSpinner, "growx");
|
||||||
order.add(((SpinnerEditor) ODSpinner.getEditor()).getTextField());
|
order.add(((SpinnerEditor) ODSpinner.getEditor()).getTextField());
|
||||||
panel.add(new UnitSelector(ODModel), "growx");
|
panel.add(new UnitSelector(ODModel), "growx");
|
||||||
panel.add(new BasicSlider(ODModel.getSliderModel(0, 0.001, 0.02)), "w 100lp, wrap");
|
panel.add(new BasicSlider(ODModel.getSliderModel(0, 0.02)), "w 100lp, wrap");
|
||||||
}
|
}
|
||||||
{ //// Inner Diameter
|
{ //// Inner Diameter
|
||||||
panel.add(new JLabel(trans.get("RailBtnCfg.lbl.InnerDiam")));
|
panel.add(new JLabel(trans.get("RailBtnCfg.lbl.InnerDiam")));
|
||||||
@ -65,7 +65,7 @@ public class RailButtonConfig extends RocketComponentConfig {
|
|||||||
panel.add(IDSpinner, "growx");
|
panel.add(IDSpinner, "growx");
|
||||||
order.add(((SpinnerEditor) IDSpinner.getEditor()).getTextField());
|
order.add(((SpinnerEditor) IDSpinner.getEditor()).getTextField());
|
||||||
panel.add(new UnitSelector(IDModel), "growx");
|
panel.add(new UnitSelector(IDModel), "growx");
|
||||||
panel.add(new BasicSlider(IDModel.getSliderModel(0, 0.001, 0.02)), "w 100lp, wrap para");
|
panel.add(new BasicSlider(IDModel.getSliderModel(0, 0.02)), "w 100lp, wrap para");
|
||||||
}
|
}
|
||||||
{ //// Base Height
|
{ //// Base Height
|
||||||
panel.add(new JLabel(trans.get("RailBtnCfg.lbl.BaseHeight")));
|
panel.add(new JLabel(trans.get("RailBtnCfg.lbl.BaseHeight")));
|
||||||
@ -75,7 +75,8 @@ public class RailButtonConfig extends RocketComponentConfig {
|
|||||||
panel.add(heightSpinner, "growx");
|
panel.add(heightSpinner, "growx");
|
||||||
order.add(((SpinnerEditor) heightSpinner.getEditor()).getTextField());
|
order.add(((SpinnerEditor) heightSpinner.getEditor()).getTextField());
|
||||||
panel.add(new UnitSelector(heightModel), "growx");
|
panel.add(new UnitSelector(heightModel), "growx");
|
||||||
panel.add(new BasicSlider(heightModel.getSliderModel(0, 0.001, 0.02)), "w 100lp, wrap");
|
panel.add(new BasicSlider(heightModel.getSliderModel(0, new DoubleModel(component, "MaxBaseHeight", UnitGroup.UNITS_LENGTH))),
|
||||||
|
"w 100lp, wrap");
|
||||||
}
|
}
|
||||||
{ //// Flange Height
|
{ //// Flange Height
|
||||||
panel.add(new JLabel(trans.get("RailBtnCfg.lbl.FlangeHeight")));
|
panel.add(new JLabel(trans.get("RailBtnCfg.lbl.FlangeHeight")));
|
||||||
@ -85,9 +86,10 @@ public class RailButtonConfig extends RocketComponentConfig {
|
|||||||
panel.add(heightSpinner, "growx");
|
panel.add(heightSpinner, "growx");
|
||||||
order.add(((SpinnerEditor) heightSpinner.getEditor()).getTextField());
|
order.add(((SpinnerEditor) heightSpinner.getEditor()).getTextField());
|
||||||
panel.add(new UnitSelector(heightModel), "growx");
|
panel.add(new UnitSelector(heightModel), "growx");
|
||||||
panel.add(new BasicSlider(heightModel.getSliderModel(0, 0.001, 0.02)), "w 100lp, wrap");
|
panel.add(new BasicSlider(heightModel.getSliderModel(0, new DoubleModel(component, "MaxFlangeHeight", UnitGroup.UNITS_LENGTH))),
|
||||||
|
"w 100lp, wrap");
|
||||||
}
|
}
|
||||||
{ //// Height
|
{ //// Total Height
|
||||||
panel.add(new JLabel(trans.get("RailBtnCfg.lbl.TotalHeight")));
|
panel.add(new JLabel(trans.get("RailBtnCfg.lbl.TotalHeight")));
|
||||||
DoubleModel heightModel = new DoubleModel(component, "TotalHeight", UnitGroup.UNITS_LENGTH, 0);
|
DoubleModel heightModel = new DoubleModel(component, "TotalHeight", UnitGroup.UNITS_LENGTH, 0);
|
||||||
JSpinner heightSpinner = new JSpinner(heightModel.getSpinnerModel());
|
JSpinner heightSpinner = new JSpinner(heightModel.getSpinnerModel());
|
||||||
@ -95,7 +97,8 @@ public class RailButtonConfig extends RocketComponentConfig {
|
|||||||
panel.add(heightSpinner, "growx");
|
panel.add(heightSpinner, "growx");
|
||||||
order.add(((SpinnerEditor) heightSpinner.getEditor()).getTextField());
|
order.add(((SpinnerEditor) heightSpinner.getEditor()).getTextField());
|
||||||
panel.add(new UnitSelector(heightModel), "growx");
|
panel.add(new UnitSelector(heightModel), "growx");
|
||||||
panel.add(new BasicSlider(heightModel.getSliderModel(0, 0.001, 0.02)), "w 100lp, wrap para");
|
panel.add(new BasicSlider(heightModel.getSliderModel(new DoubleModel(component, "MinTotalHeight", UnitGroup.UNITS_LENGTH), 0.02)),
|
||||||
|
"w 100lp, wrap para");
|
||||||
}
|
}
|
||||||
|
|
||||||
{ //// Angular Position:
|
{ //// Angular Position:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user