aboutsummaryrefslogtreecommitdiff
path: root/common/src/main/java/dev/isxander/yacl3/gui/controllers
diff options
context:
space:
mode:
authorisXander <xander@isxander.dev>2023-08-16 12:56:15 +0100
committerisXander <xander@isxander.dev>2023-08-16 12:56:15 +0100
commit98f29ec5c30d23999fce37d7daf7aba8f10f25d3 (patch)
tree95cfa91eff48330072f8d50109b594bc16c4c9f0 /common/src/main/java/dev/isxander/yacl3/gui/controllers
parentb3d5164010682cdf2d3f68be141792bf71a5dd49 (diff)
downloadYetAnotherConfigLib-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')
-rw-r--r--common/src/main/java/dev/isxander/yacl3/gui/controllers/BooleanController.java11
-rw-r--r--common/src/main/java/dev/isxander/yacl3/gui/controllers/cycling/CyclingListController.java11
-rw-r--r--common/src/main/java/dev/isxander/yacl3/gui/controllers/cycling/EnumController.java5
-rw-r--r--common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/DoubleSliderController.java11
-rw-r--r--common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/FloatSliderController.java11
-rw-r--r--common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/IntegerSliderController.java11
-rw-r--r--common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/LongSliderController.java11
-rw-r--r--common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/DoubleFieldController.java5
-rw-r--r--common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/FloatFieldController.java5
-rw-r--r--common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/IntegerFieldController.java5
-rw-r--r--common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/LongFieldController.java5
-rw-r--r--common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/NumberFieldController.java7
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