Files
common/src/main/java/org/saturnclient/config/property/IntProperty.java
T
selimaj-devandclaude 06a90d8e51 Edit ranged settings with sliders
IntProperty and FloatProperty can take an optional range, step and unit.
PropertyList shows those settings as a Slider: a track to click or drag,
snapping to the step, with the value and unit beside it. Zoom and freelook
levels and durations, fullbright brightness, the theme radii, animation
timings and HUD scale and radius get ranges; the rest stay number boxes.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-27 17:39:27 +02:00

63 lines
1.5 KiB
Java

package org.saturnclient.config.property;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.JsonNodeFactory;
public class IntProperty extends Property {
public int value;
public final int defaultValue;
/** Bounds for a slider, when the setting has a sensible range */
public Integer min, max;
public int step = 1;
/** Shown after the value, like "ms" */
public String unit = "";
public IntProperty(int defaultValue) {
this.value = defaultValue;
this.defaultValue = defaultValue;
}
/**
* Gives the setting a range, so it's edited with a slider.
*/
public IntProperty range(int min, int max) {
return range(min, max, 1);
}
public IntProperty range(int min, int max, int step) {
this.min = min;
this.max = max;
this.step = step;
return this;
}
public IntProperty unit(String unit) {
this.unit = unit;
return this;
}
public boolean hasRange() {
return min != null && max != null;
}
@Override
public void reset() {
this.value = defaultValue;
this.isReset = true;
}
@Override
public JsonNode toJson() {
return JsonNodeFactory.instance.numberNode(this.value);
}
@Override
public void loadFromJson(JsonNode element) {
if (element.isInt())
this.value = element.intValue();
else if (element.isTextual())
this.value = ColorProperty.parseHexToInt(element.textValue());
}
}