diff options
author | isXander <xander@isxander.dev> | 2023-08-16 12:56:15 +0100 |
---|---|---|
committer | isXander <xander@isxander.dev> | 2023-08-16 12:56:15 +0100 |
commit | 98f29ec5c30d23999fce37d7daf7aba8f10f25d3 (patch) | |
tree | 95cfa91eff48330072f8d50109b594bc16c4c9f0 /common/src/main/java/dev/isxander/yacl3/gui/controllers | |
parent | b3d5164010682cdf2d3f68be141792bf71a5dd49 (diff) | |
download | YetAnotherConfigLib-98f29ec5c30d23999fce37d7daf7aba8f10f25d3.tar.gz YetAnotherConfigLib-98f29ec5c30d23999fce37d7daf7aba8f10f25d3.tar.bz2 YetAnotherConfigLib-98f29ec5c30d23999fce37d7daf7aba8f10f25d3.zip |
Add @OverrideName and @OverrideFormat
Diffstat (limited to 'common/src/main/java/dev/isxander/yacl3/gui/controllers')
12 files changed, 77 insertions, 21 deletions
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/BooleanController.java b/common/src/main/java/dev/isxander/yacl3/gui/controllers/BooleanController.java index 9f21755..6d2c2b3 100644 --- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/BooleanController.java +++ b/common/src/main/java/dev/isxander/yacl3/gui/controllers/BooleanController.java @@ -3,6 +3,7 @@ package dev.isxander.yacl3.gui.controllers; import com.mojang.blaze3d.platform.InputConstants; import dev.isxander.yacl3.api.Controller; import dev.isxander.yacl3.api.Option; +import dev.isxander.yacl3.api.controller.ValueFormatter; import dev.isxander.yacl3.api.utils.Dimension; import dev.isxander.yacl3.gui.AbstractWidget; import dev.isxander.yacl3.gui.YACLScreen; @@ -34,7 +35,7 @@ public class BooleanController implements Controller<Boolean> { : CommonComponents.GUI_NO; private final Option<Boolean> option; - private final Function<Boolean, Component> valueFormatter; + private final ValueFormatter<Boolean> valueFormatter; private final boolean coloured; /** @@ -67,10 +68,14 @@ public class BooleanController implements Controller<Boolean> { */ public BooleanController(Option<Boolean> option, Function<Boolean, Component> valueFormatter, boolean coloured) { this.option = option; - this.valueFormatter = valueFormatter; + this.valueFormatter = valueFormatter::apply; this.coloured = coloured; } + public static BooleanController createInternal(Option<Boolean> option, ValueFormatter<Boolean> formatter, boolean coloured) { + return new BooleanController(option, formatter::format, coloured); + } + /** * {@inheritDoc} */ @@ -84,7 +89,7 @@ public class BooleanController implements Controller<Boolean> { */ @Override public Component formatValue() { - return valueFormatter.apply(option().pendingValue()); + return valueFormatter.format(option().pendingValue()); } /** diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/cycling/CyclingListController.java b/common/src/main/java/dev/isxander/yacl3/gui/controllers/cycling/CyclingListController.java index 44fa765..28bc623 100644 --- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/cycling/CyclingListController.java +++ b/common/src/main/java/dev/isxander/yacl3/gui/controllers/cycling/CyclingListController.java @@ -2,6 +2,7 @@ package dev.isxander.yacl3.gui.controllers.cycling; import com.google.common.collect.ImmutableList; import dev.isxander.yacl3.api.Option; +import dev.isxander.yacl3.api.controller.ValueFormatter; import net.minecraft.network.chat.Component; import java.util.function.Function; @@ -12,7 +13,7 @@ import java.util.function.Function; */ public class CyclingListController<T> implements ICyclingController<T> { private final Option<T> option; - private final Function<T, Component> valueFormatter; + private final ValueFormatter<T> valueFormatter; private final ImmutableList<T> values; /** @@ -33,10 +34,14 @@ public class CyclingListController<T> implements ICyclingController<T> { */ public CyclingListController(Option<T> option, Iterable<? extends T> values, Function<T, Component> valueFormatter) { this.option = option; - this.valueFormatter = valueFormatter; + this.valueFormatter = valueFormatter::apply; this.values = ImmutableList.copyOf(values); } + public static <T> CyclingListController<T> createInternal(Option<T> option, Iterable<? extends T> values, ValueFormatter<T> formatter) { + return new CyclingListController<>(option, values, formatter::format); + } + /** * {@inheritDoc} */ @@ -50,7 +55,7 @@ public class CyclingListController<T> implements ICyclingController<T> { */ @Override public Component formatValue() { - return valueFormatter.apply(option().pendingValue()); + return valueFormatter.format(option().pendingValue()); } /** diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/cycling/EnumController.java b/common/src/main/java/dev/isxander/yacl3/gui/controllers/cycling/EnumController.java index d2df8f8..5a6a912 100644 --- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/cycling/EnumController.java +++ b/common/src/main/java/dev/isxander/yacl3/gui/controllers/cycling/EnumController.java @@ -2,6 +2,7 @@ package dev.isxander.yacl3.gui.controllers.cycling; import dev.isxander.yacl3.api.NameableEnum; import dev.isxander.yacl3.api.Option; +import dev.isxander.yacl3.api.controller.ValueFormatter; import net.minecraft.network.chat.Component; import net.minecraft.util.OptionEnum; @@ -40,4 +41,8 @@ public class EnumController<T extends Enum<T>> extends CyclingListController<T> public EnumController(Option<T> option, Function<T, Component> valueFormatter, T[] availableValues) { super(option, Arrays.asList(availableValues), valueFormatter); } + + public static <T extends Enum<T>> EnumController<T> createInternal(Option<T> option, ValueFormatter<T> formatter, T[] values) { + return new EnumController<>(option, formatter::format, values); + } } diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/DoubleSliderController.java b/common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/DoubleSliderController.java index d2c0e2e..89308a8 100644 --- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/DoubleSliderController.java +++ b/common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/DoubleSliderController.java @@ -1,6 +1,7 @@ package dev.isxander.yacl3.gui.controllers.slider; import dev.isxander.yacl3.api.Option; +import dev.isxander.yacl3.api.controller.ValueFormatter; import net.minecraft.network.chat.Component; import org.apache.commons.lang3.Validate; @@ -19,7 +20,7 @@ public class DoubleSliderController implements ISliderController<Double> { private final double min, max, interval; - private final Function<Double, Component> valueFormatter; + private final ValueFormatter<Double> valueFormatter; /** * Constructs a {@link ISliderController} for doubles @@ -52,7 +53,11 @@ public class DoubleSliderController implements ISliderController<Double> { this.min = min; this.max = max; this.interval = interval; - this.valueFormatter = valueFormatter; + this.valueFormatter = valueFormatter::apply; + } + + public static DoubleSliderController createInternal(Option<Double> option, double min, double max, double interval, ValueFormatter<Double> formatter) { + return new DoubleSliderController(option, min, max, interval, formatter::format); } /** @@ -68,7 +73,7 @@ public class DoubleSliderController implements ISliderController<Double> { */ @Override public Component formatValue() { - return valueFormatter.apply(option().pendingValue()); + return valueFormatter.format(option().pendingValue()); } /** diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/FloatSliderController.java b/common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/FloatSliderController.java index f9fa574..79246dd 100644 --- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/FloatSliderController.java +++ b/common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/FloatSliderController.java @@ -1,6 +1,7 @@ package dev.isxander.yacl3.gui.controllers.slider; import dev.isxander.yacl3.api.Option; +import dev.isxander.yacl3.api.controller.ValueFormatter; import net.minecraft.network.chat.Component; import org.apache.commons.lang3.Validate; @@ -19,7 +20,7 @@ public class FloatSliderController implements ISliderController<Float> { private final float min, max, interval; - private final Function<Float, Component> valueFormatter; + private final ValueFormatter<Float> valueFormatter; /** * Constructs a {@link ISliderController} for floats @@ -52,7 +53,11 @@ public class FloatSliderController implements ISliderController<Float> { this.min = min; this.max = max; this.interval = interval; - this.valueFormatter = valueFormatter; + this.valueFormatter = valueFormatter::apply; + } + + public static FloatSliderController createInternal(Option<Float> option, float min, float max, float interval, ValueFormatter<Float> formatter) { + return new FloatSliderController(option, min, max, interval, formatter::format); } /** @@ -68,7 +73,7 @@ public class FloatSliderController implements ISliderController<Float> { */ @Override public Component formatValue() { - return valueFormatter.apply(option().pendingValue()); + return valueFormatter.format(option().pendingValue()); } /** diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/IntegerSliderController.java b/common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/IntegerSliderController.java index ea658ad..bcb551d 100644 --- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/IntegerSliderController.java +++ b/common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/IntegerSliderController.java @@ -1,6 +1,7 @@ package dev.isxander.yacl3.gui.controllers.slider; import dev.isxander.yacl3.api.Option; +import dev.isxander.yacl3.api.controller.ValueFormatter; import net.minecraft.network.chat.Component; import org.apache.commons.lang3.Validate; @@ -16,7 +17,7 @@ public class IntegerSliderController implements ISliderController<Integer> { private final int min, max, interval; - private final Function<Integer, Component> valueFormatter; + private final ValueFormatter<Integer> valueFormatter; /** * Constructs a {@link ISliderController} for integers @@ -49,7 +50,11 @@ public class IntegerSliderController implements ISliderController<Integer> { this.min = min; this.max = max; this.interval = interval; - this.valueFormatter = valueFormatter; + this.valueFormatter = valueFormatter::apply; + } + + public static IntegerSliderController createInternal(Option<Integer> option, int min, int max, int interval, ValueFormatter<Integer> formatter) { + return new IntegerSliderController(option, min, max, interval, formatter::format); } /** @@ -65,7 +70,7 @@ public class IntegerSliderController implements ISliderController<Integer> { */ @Override public Component formatValue() { - return valueFormatter.apply(option().pendingValue()); + return valueFormatter.format(option().pendingValue()); } /** diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/LongSliderController.java b/common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/LongSliderController.java index 336f064..105bd46 100644 --- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/LongSliderController.java +++ b/common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/LongSliderController.java @@ -1,6 +1,7 @@ package dev.isxander.yacl3.gui.controllers.slider; import dev.isxander.yacl3.api.Option; +import dev.isxander.yacl3.api.controller.ValueFormatter; import net.minecraft.network.chat.Component; import org.apache.commons.lang3.Validate; @@ -16,7 +17,7 @@ public class LongSliderController implements ISliderController<Long> { private final long min, max, interval; - private final Function<Long, Component> valueFormatter; + private final ValueFormatter<Long> valueFormatter; /** * Constructs a {@link ISliderController} for longs @@ -49,7 +50,11 @@ public class LongSliderController implements ISliderController<Long> { this.min = min; this.max = max; this.interval = interval; - this.valueFormatter = valueFormatter; + this.valueFormatter = valueFormatter::apply; + } + + public static LongSliderController createInternal(Option<Long> option, long min, long max, long interval, ValueFormatter<Long> formatter) { + return new LongSliderController(option, min, max, interval, formatter::format); } /** @@ -65,7 +70,7 @@ public class LongSliderController implements ISliderController<Long> { */ @Override public Component formatValue() { - return valueFormatter.apply(option().pendingValue()); + return valueFormatter.format(option().pendingValue()); } /** diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/DoubleFieldController.java b/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/DoubleFieldController.java index 3f70a12..8445839 100644 --- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/DoubleFieldController.java +++ b/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/DoubleFieldController.java @@ -1,6 +1,7 @@ package dev.isxander.yacl3.gui.controllers.string.number; import dev.isxander.yacl3.api.Option; +import dev.isxander.yacl3.api.controller.ValueFormatter; import dev.isxander.yacl3.gui.controllers.slider.DoubleSliderController; import net.minecraft.network.chat.Component; @@ -62,6 +63,10 @@ public class DoubleFieldController extends NumberFieldController<Double> { this(option, -Double.MAX_VALUE, Double.MAX_VALUE, DoubleSliderController.DEFAULT_FORMATTER); } + public static DoubleFieldController createInternal(Option<Double> option, double min, double max, ValueFormatter<Double> formatter) { + return new DoubleFieldController(option, min, max, formatter::format); + } + /** * {@inheritDoc} */ diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/FloatFieldController.java b/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/FloatFieldController.java index 57737f7..78281c8 100644 --- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/FloatFieldController.java +++ b/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/FloatFieldController.java @@ -1,6 +1,7 @@ package dev.isxander.yacl3.gui.controllers.string.number; import dev.isxander.yacl3.api.Option; +import dev.isxander.yacl3.api.controller.ValueFormatter; import dev.isxander.yacl3.gui.controllers.slider.FloatSliderController; import net.minecraft.network.chat.Component; @@ -62,6 +63,10 @@ public class FloatFieldController extends NumberFieldController<Float> { this(option, -Float.MAX_VALUE, Float.MAX_VALUE, FloatSliderController.DEFAULT_FORMATTER); } + public static FloatFieldController createInternal(Option<Float> option, float min, float max, ValueFormatter<Float> formatter) { + return new FloatFieldController(option, min, max, formatter::format); + } + /** * {@inheritDoc} */ diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/IntegerFieldController.java b/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/IntegerFieldController.java index 445e984..476da9c 100644 --- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/IntegerFieldController.java +++ b/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/IntegerFieldController.java @@ -1,6 +1,7 @@ package dev.isxander.yacl3.gui.controllers.string.number; import dev.isxander.yacl3.api.Option; +import dev.isxander.yacl3.api.controller.ValueFormatter; import dev.isxander.yacl3.gui.controllers.slider.IntegerSliderController; import net.minecraft.network.chat.Component; @@ -62,6 +63,10 @@ public class IntegerFieldController extends NumberFieldController<Integer> { this(option, -Integer.MAX_VALUE, Integer.MAX_VALUE, IntegerSliderController.DEFAULT_FORMATTER); } + public static IntegerFieldController createInternal(Option<Integer> option, int min, int max, ValueFormatter<Integer> formatter) { + return new IntegerFieldController(option, min, max, formatter::format); + } + @Override public boolean isInputValid(String input) { return input.matches("(?:-?\\d+|)"); diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/LongFieldController.java b/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/LongFieldController.java index fe2ef2c..d6f4f19 100644 --- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/LongFieldController.java +++ b/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/LongFieldController.java @@ -1,6 +1,7 @@ package dev.isxander.yacl3.gui.controllers.string.number; import dev.isxander.yacl3.api.Option; +import dev.isxander.yacl3.api.controller.ValueFormatter; import dev.isxander.yacl3.gui.controllers.slider.LongSliderController; import net.minecraft.network.chat.Component; @@ -62,6 +63,10 @@ public class LongFieldController extends NumberFieldController<Long> { this(option, -Long.MAX_VALUE, Long.MAX_VALUE, LongSliderController.DEFAULT_FORMATTER); } + public static LongFieldController createInternal(Option<Long> option, long min, long max, ValueFormatter<Long> formatter) { + return new LongFieldController(option, min, max, formatter::format); + } + @Override public boolean isInputValid(String input) { return input.matches("(?:-?\\d+|)"); diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/NumberFieldController.java b/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/NumberFieldController.java index f484aad..b164ea3 100644 --- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/NumberFieldController.java +++ b/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/NumberFieldController.java @@ -1,6 +1,7 @@ package dev.isxander.yacl3.gui.controllers.string.number; import dev.isxander.yacl3.api.Option; +import dev.isxander.yacl3.api.controller.ValueFormatter; import dev.isxander.yacl3.api.utils.Dimension; import dev.isxander.yacl3.gui.AbstractWidget; import dev.isxander.yacl3.gui.YACLScreen; @@ -20,11 +21,11 @@ import java.util.function.Function; */ public abstract class NumberFieldController<T extends Number> implements ISliderController<T>, IStringController<T> { private final Option<T> option; - private final Function<T, Component> displayFormatter; + private final ValueFormatter<T> displayFormatter; public NumberFieldController(Option<T> option, Function<T, Component> displayFormatter) { this.option = option; - this.displayFormatter = displayFormatter; + this.displayFormatter = displayFormatter::apply; } @Override @@ -50,7 +51,7 @@ public abstract class NumberFieldController<T extends Number> implements ISlider @Override public Component formatValue() { - return displayFormatter.apply(option().pendingValue()); + return displayFormatter.format(option().pendingValue()); } @Override |