diff options
author | Aaron <51387595+AzureAaron@users.noreply.github.com> | 2023-10-09 23:07:23 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-09 23:07:23 -0400 |
commit | a373db64a319c263b2b4c1d07084fa18bd12353b (patch) | |
tree | 0f918dd1c05c42616797e47e165e2385f0fca65b /src/main/java/de/hysky/skyblocker/config/controllers/EnumDropdownControllerBuilder.java | |
parent | 2315b90da8117f28f66348927afdb621ee4fc815 (diff) | |
parent | f346617971b20f6be373411ce5433487cd8d82c2 (diff) | |
download | Skyblocker-a373db64a319c263b2b4c1d07084fa18bd12353b.tar.gz Skyblocker-a373db64a319c263b2b4c1d07084fa18bd12353b.tar.bz2 Skyblocker-a373db64a319c263b2b4c1d07084fa18bd12353b.zip |
Merge pull request #348 from LifeIsAParadox/change-packageprefix
me.xrmvizzy -> de.hysky
Diffstat (limited to 'src/main/java/de/hysky/skyblocker/config/controllers/EnumDropdownControllerBuilder.java')
-rw-r--r-- | src/main/java/de/hysky/skyblocker/config/controllers/EnumDropdownControllerBuilder.java | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/main/java/de/hysky/skyblocker/config/controllers/EnumDropdownControllerBuilder.java b/src/main/java/de/hysky/skyblocker/config/controllers/EnumDropdownControllerBuilder.java new file mode 100644 index 00000000..d451a88c --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/config/controllers/EnumDropdownControllerBuilder.java @@ -0,0 +1,27 @@ +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); + } +} |