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()); } }