aboutsummaryrefslogtreecommitdiff
path: root/src/testmod/java
diff options
context:
space:
mode:
authorxander <xander@isxander.dev>2022-09-02 22:04:35 +0100
committerxander <xander@isxander.dev>2022-09-02 22:04:35 +0100
commit7f88ddf36ba7804211e8aae6b3723bd8f37c82c5 (patch)
tree791e5cb050aa1ea17bd86d0bdd64fa441b2ab123 /src/testmod/java
parentdd24e4f8e84ed02913196c8ad6093275acc92219 (diff)
downloadYetAnotherConfigLib-7f88ddf36ba7804211e8aae6b3723bd8f37c82c5.tar.gz
YetAnotherConfigLib-7f88ddf36ba7804211e8aae6b3723bd8f37c82c5.tar.bz2
YetAnotherConfigLib-7f88ddf36ba7804211e8aae6b3723bd8f37c82c5.zip
implement keyboard-operation for all controllers
fix crash when focusing on option list with tab add tooltip to groups check that pending values actually applied on save, if not, error in log and the save button displays an error when trying to escape with unsaved changes, save button text goes green and bold YACLConstants file to change certain behaviours, could evolve into its own settings! update icon
Diffstat (limited to 'src/testmod/java')
-rw-r--r--src/testmod/java/dev/isxander/yacl/test/ModMenuIntegration.java155
1 files changed, 90 insertions, 65 deletions
diff --git a/src/testmod/java/dev/isxander/yacl/test/ModMenuIntegration.java b/src/testmod/java/dev/isxander/yacl/test/ModMenuIntegration.java
index d1fad67..57d809b 100644
--- a/src/testmod/java/dev/isxander/yacl/test/ModMenuIntegration.java
+++ b/src/testmod/java/dev/isxander/yacl/test/ModMenuIntegration.java
@@ -27,74 +27,98 @@ public class ModMenuIntegration implements ModMenuApi {
.category(ConfigCategory.createBuilder()
.name(Text.of("Control Examples"))
.tooltip(Text.of("Example Category Description"))
- .option(Option.createBuilder(boolean.class)
- .name(Text.of("Boolean Toggle"))
- .binding(
- false,
- () -> TestSettings.booleanToggle,
- (value) -> TestSettings.booleanToggle = value
- )
- .controller(BooleanController::new)
- .build())
- .option(Option.createBuilder(boolean.class)
- .name(Text.of("Tick Box"))
- .tooltip(Text.of("Super long tooltip that is very descriptive to show off the text wrapping features of the thingy yes whwowwoow"))
- .binding(
- false,
- () -> TestSettings.tickbox,
- (value) -> TestSettings.tickbox = value
- )
- .controller(TickBoxController::new)
- .build())
- .option(Option.createBuilder(int.class)
- .name(Text.of("Int Slider that is cut off because the slider"))
- .binding(
- 0,
- () -> TestSettings.intSlider,
- (value) -> TestSettings.intSlider = value
- )
- .controller(opt -> new IntegerSliderController(opt, 0, 3, 1))
- .build())
- .option(Option.createBuilder(double.class)
- .name(Text.of("Double Slider"))
- .binding(
- 0.0,
- () -> TestSettings.doubleSlider,
- (value) -> TestSettings.doubleSlider = value
- )
- .controller(opt -> new DoubleSliderController(opt, 0, 3, 0.05))
- .build())
- .option(Option.createBuilder(float.class)
- .name(Text.of("Float Slider"))
- .binding(
- 0f,
- () -> TestSettings.floatSlider,
- (value) -> TestSettings.floatSlider = value
- )
- .controller(opt -> new FloatSliderController(opt, 0, 3, 0.1f))
+ .group(OptionGroup.createBuilder()
+ .name(Text.of("Boolean Controllers"))
+ .tooltip(Text.of("Test!"))
+ .option(Option.createBuilder(boolean.class)
+ .name(Text.of("Boolean Toggle"))
+ .tooltip(Text.of("A simple toggle button."))
+ .binding(
+ false,
+ () -> TestSettings.booleanToggle,
+ (value) -> TestSettings.booleanToggle = value
+ )
+ .controller(BooleanController::new)
+ .build())
+ .option(Option.createBuilder(boolean.class)
+ .name(Text.of("Custom Boolean Toggle"))
+ .tooltip(Text.of("You can customize these controllers like this!"))
+ .binding(
+ false,
+ () -> TestSettings.customBooleanToggle,
+ (value) -> TestSettings.customBooleanToggle = value
+ )
+ .controller(opt -> new BooleanController(opt, state -> state ? Text.of("Amazing") : Text.of("Not Amazing"), true))
+ .build())
+ .option(Option.createBuilder(boolean.class)
+ .name(Text.of("Tick Box"))
+ .tooltip(Text.of("There are even alternate methods of displaying the same data type!"))
+ .binding(
+ false,
+ () -> TestSettings.tickbox,
+ (value) -> TestSettings.tickbox = value
+ )
+ .controller(TickBoxController::new)
+ .build())
.build())
- .option(Option.createBuilder(long.class)
- .name(Text.of("Long Slider"))
- .binding(
- 0L,
- () -> TestSettings.longSlider,
- (value) -> TestSettings.longSlider = value
- )
- .controller(opt -> new LongSliderController(opt, 0, 1_000_000, 100))
+ .group(OptionGroup.createBuilder()
+ .name(Text.of("Slider Controllers"))
+ .option(Option.createBuilder(int.class)
+ .name(Text.of("Int Slider that is cut off because the slider"))
+ .binding(
+ 0,
+ () -> TestSettings.intSlider,
+ (value) -> TestSettings.intSlider = value
+ )
+ .controller(opt -> new IntegerSliderController(opt, 0, 3, 1))
+ .build())
+ .option(Option.createBuilder(double.class)
+ .name(Text.of("Double Slider"))
+ .binding(
+ 0.0,
+ () -> TestSettings.doubleSlider,
+ (value) -> TestSettings.doubleSlider = value
+ )
+ .controller(opt -> new DoubleSliderController(opt, 0, 3, 0.05))
+ .build())
+ .option(Option.createBuilder(float.class)
+ .name(Text.of("Float Slider"))
+ .binding(
+ 0f,
+ () -> TestSettings.floatSlider,
+ (value) -> TestSettings.floatSlider = value
+ )
+ .controller(opt -> new FloatSliderController(opt, 0, 3, 0.1f))
+ .build())
+ .option(Option.createBuilder(long.class)
+ .name(Text.of("Long Slider"))
+ .binding(
+ 0L,
+ () -> TestSettings.longSlider,
+ (value) -> TestSettings.longSlider = value
+ )
+ .controller(opt -> new LongSliderController(opt, 0, 1_000_000, 100))
+ .build())
.build())
- .option(Option.createBuilder(TestSettings.Alphabet.class)
- .name(Text.of("Enum Cycler"))
- .binding(
- TestSettings.Alphabet.A,
- () -> TestSettings.enumOption,
- (value) -> TestSettings.enumOption = value
- )
- .controller(opt -> new EnumController<>(opt, TestSettings.Alphabet.class))
+ .group(OptionGroup.createBuilder()
+ .name(Text.of("Enum Controllers"))
+ .option(Option.createBuilder(TestSettings.Alphabet.class)
+ .name(Text.of("Enum Cycler"))
+ .binding(
+ TestSettings.Alphabet.A,
+ () -> TestSettings.enumOption,
+ (value) -> TestSettings.enumOption = value
+ )
+ .controller(opt -> new EnumController<>(opt, TestSettings.Alphabet.class))
+ .build())
.build())
- .option(ButtonOption.createBuilder()
- .name(Text.of("Button \"Option\""))
- .action(screen -> SystemToast.add(MinecraftClient.getInstance().getToastManager(), SystemToast.Type.TUTORIAL_HINT, Text.of("Button Pressed"), Text.of("Button option was invoked!")))
- .controller(ActionController::new)
+ .group(OptionGroup.createBuilder()
+ .name(Text.of("Buttons!"))
+ .option(ButtonOption.createBuilder()
+ .name(Text.of("Button \"Option\""))
+ .action(screen -> SystemToast.add(MinecraftClient.getInstance().getToastManager(), SystemToast.Type.TUTORIAL_HINT, Text.of("Button Pressed"), Text.of("Button option was invoked!")))
+ .controller(ActionController::new)
+ .build())
.build())
.build())
.category(ConfigCategory.createBuilder()
@@ -289,6 +313,7 @@ public class ModMenuIntegration implements ModMenuApi {
private static class TestSettings {
private static boolean booleanToggle = false;
+ private static boolean customBooleanToggle = false;
private static boolean tickbox = false;
private static int intSlider = 0;
private static double doubleSlider = 0;