aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hysky/skyblocker/config/controllers
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/de/hysky/skyblocker/config/controllers')
-rw-r--r--src/main/java/de/hysky/skyblocker/config/controllers/EnumDropdownController.java93
-rw-r--r--src/main/java/de/hysky/skyblocker/config/controllers/EnumDropdownControllerBuilder.java27
-rw-r--r--src/main/java/de/hysky/skyblocker/config/controllers/EnumDropdownControllerBuilderImpl.java27
-rw-r--r--src/main/java/de/hysky/skyblocker/config/controllers/EnumDropdownControllerElement.java26
4 files changed, 0 insertions, 173 deletions
diff --git a/src/main/java/de/hysky/skyblocker/config/controllers/EnumDropdownController.java b/src/main/java/de/hysky/skyblocker/config/controllers/EnumDropdownController.java
deleted file mode 100644
index 0b9a809d..00000000
--- a/src/main/java/de/hysky/skyblocker/config/controllers/EnumDropdownController.java
+++ /dev/null
@@ -1,93 +0,0 @@
-package de.hysky.skyblocker.config.controllers;
-
-import dev.isxander.yacl3.api.Option;
-import dev.isxander.yacl3.api.utils.Dimension;
-import dev.isxander.yacl3.gui.AbstractWidget;
-import dev.isxander.yacl3.gui.YACLScreen;
-import dev.isxander.yacl3.gui.controllers.dropdown.AbstractDropdownController;
-import org.jetbrains.annotations.NotNull;
-
-import java.util.Arrays;
-import java.util.function.Function;
-import java.util.stream.Stream;
-
-public class EnumDropdownController<E extends Enum<E>> extends AbstractDropdownController<E> {
- /**
- * The function used to convert enum constants to strings used for display, suggestion, and validation. Defaults to {@link Enum#toString}.
- */
- protected final Function<E, String> toString;
-
- protected EnumDropdownController(Option<E> option, Function<E, String> toString) {
- super(option);
- this.toString = toString;
- }
-
- @Override
- public String getString() {
- return toString.apply(option().pendingValue());
- }
-
- @Override
- public void setFromString(String value) {
- option().requestSet(getEnumFromString(value));
- }
-
- /**
- * Searches through enum constants for one whose {@link #toString} result equals {@code value}
- *
- * @return The enum constant associated with the {@code value} or the pending value if none are found
- * @implNote The return value of {@link #toString} on each enum constant should be unique in order to ensure accuracy
- */
- private E getEnumFromString(String value) {
- value = value.toLowerCase();
- for (E constant : option().pendingValue().getDeclaringClass().getEnumConstants()) {
- if (toString.apply(constant).toLowerCase().equals(value)) return constant;
- }
-
- return option().pendingValue();
- }
-
- @Override
- public boolean isValueValid(String value) {
- value = value.toLowerCase();
- for (E constant : option().pendingValue().getDeclaringClass().getEnumConstants()) {
- if (toString.apply(constant).equals(value)) return true;
- }
-
- return false;
- }
-
- @Override
- protected String getValidValue(String value, int offset) {
- return getValidEnumConstants(value)
- .skip(offset)
- .findFirst()
- .orElseGet(this::getString);
- }
-
- /**
- * Filters and sorts through enum constants for those whose {@link #toString} result equals {@code value}
- *
- * @return a sorted stream containing enum constants associated with the {@code value}
- * @implNote The return value of {@link #toString} on each enum constant should be unique in order to ensure accuracy
- */
- @NotNull
- protected Stream<String> getValidEnumConstants(String value) {
- String valueLowerCase = value.toLowerCase();
- return Arrays.stream(option().pendingValue().getDeclaringClass().getEnumConstants())
- .map(this.toString)
- .filter(constant -> constant.toLowerCase().contains(valueLowerCase))
- .sorted((s1, s2) -> {
- String s1LowerCase = s1.toLowerCase();
- String s2LowerCase = s2.toLowerCase();
- if (s1LowerCase.startsWith(valueLowerCase) && !s2LowerCase.startsWith(valueLowerCase)) return -1;
- if (!s1LowerCase.startsWith(valueLowerCase) && s2LowerCase.startsWith(valueLowerCase)) return 1;
- return s1.compareTo(s2);
- });
- }
-
- @Override
- public AbstractWidget provideWidget(YACLScreen screen, Dimension<Integer> widgetDimension) {
- return new EnumDropdownControllerElement<>(this, screen, widgetDimension);
- }
-}
diff --git a/src/main/java/de/hysky/skyblocker/config/controllers/EnumDropdownControllerBuilder.java b/src/main/java/de/hysky/skyblocker/config/controllers/EnumDropdownControllerBuilder.java
deleted file mode 100644
index d451a88c..00000000
--- a/src/main/java/de/hysky/skyblocker/config/controllers/EnumDropdownControllerBuilder.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package de.hysky.skyblocker.config.controllers;
-
-import dev.isxander.yacl3.api.Option;
-import dev.isxander.yacl3.api.controller.ControllerBuilder;
-
-import java.util.function.Function;
-
-public interface EnumDropdownControllerBuilder<E extends Enum<E>> extends ControllerBuilder<E> {
- EnumDropdownControllerBuilder<E> toString(Function<E, String> toString);
-
- static <E extends Enum<E>> EnumDropdownControllerBuilder<E> create(Option<E> option) {
- return new EnumDropdownControllerBuilderImpl<>(option);
- }
-
- /**
- * Creates a factory for {@link EnumDropdownControllerBuilder}s with the given function for converting enum constants to strings.
- * Use this if a custom toString function for an enum is needed.
- * Use it like this:
- * <pre>{@code Option.<MyEnum>createBuilder().controller(createEnumDropdownControllerBuilder.getFactory(MY_CUSTOM_ENUM_TO_STRING_FUNCTION))}</pre>
- * @param toString The function used to convert enum constants to strings used for display, suggestion, and validation
- * @return a factory for {@link EnumDropdownControllerBuilder}s
- * @param <E> the enum type
- */
- static <E extends Enum<E>> Function<Option<E>, ControllerBuilder<E>> getFactory(Function<E, String> toString) {
- return opt -> EnumDropdownControllerBuilder.create(opt).toString(toString);
- }
-}
diff --git a/src/main/java/de/hysky/skyblocker/config/controllers/EnumDropdownControllerBuilderImpl.java b/src/main/java/de/hysky/skyblocker/config/controllers/EnumDropdownControllerBuilderImpl.java
deleted file mode 100644
index 8f6dbb2a..00000000
--- a/src/main/java/de/hysky/skyblocker/config/controllers/EnumDropdownControllerBuilderImpl.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package de.hysky.skyblocker.config.controllers;
-
-import dev.isxander.yacl3.api.Controller;
-import dev.isxander.yacl3.api.Option;
-import dev.isxander.yacl3.impl.controller.AbstractControllerBuilderImpl;
-
-import java.util.function.Function;
-
-public class EnumDropdownControllerBuilderImpl<E extends Enum<E>> extends AbstractControllerBuilderImpl<E> implements EnumDropdownControllerBuilder<E> {
- private Function<E, String> toString = Enum::toString;
-
- public EnumDropdownControllerBuilderImpl(Option<E> option) {
- super(option);
- }
-
- @Override
- public EnumDropdownControllerBuilder<E> toString(Function<E, String> toString) {
- this.toString = toString;
- return this;
- }
-
- @SuppressWarnings("UnstableApiUsage")
- @Override
- public Controller<E> build() {
- return new EnumDropdownController<>(option, toString);
- }
-}
diff --git a/src/main/java/de/hysky/skyblocker/config/controllers/EnumDropdownControllerElement.java b/src/main/java/de/hysky/skyblocker/config/controllers/EnumDropdownControllerElement.java
deleted file mode 100644
index 2a8de609..00000000
--- a/src/main/java/de/hysky/skyblocker/config/controllers/EnumDropdownControllerElement.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package de.hysky.skyblocker.config.controllers;
-
-import dev.isxander.yacl3.api.utils.Dimension;
-import dev.isxander.yacl3.gui.YACLScreen;
-import dev.isxander.yacl3.gui.controllers.dropdown.AbstractDropdownControllerElement;
-
-import java.util.List;
-
-public class EnumDropdownControllerElement<E extends Enum<E>> extends AbstractDropdownControllerElement<E, String> {
- private final EnumDropdownController<E> controller;
-
- public EnumDropdownControllerElement(EnumDropdownController<E> control, YACLScreen screen, Dimension<Integer> dim) {
- super(control, screen, dim);
- this.controller = control;
- }
-
- @Override
- public List<String> computeMatchingValues() {
- return controller.getValidEnumConstants(inputField).toList();
- }
-
- @Override
- public String getString(String object) {
- return object;
- }
-}