From 6f8ef7daaafd71090b2c334c10eadc8dedc738d9 Mon Sep 17 00:00:00 2001 From: xander Date: Thu, 1 Sep 2022 08:57:59 +0100 Subject: GUI Implementation Added groups Added button "option" Added test mod --- src/main/java/dev/isxander/yacl/api/Option.java | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) (limited to 'src/main/java/dev/isxander/yacl/api/Option.java') diff --git a/src/main/java/dev/isxander/yacl/api/Option.java b/src/main/java/dev/isxander/yacl/api/Option.java index 1c7a8a1..5a98d50 100644 --- a/src/main/java/dev/isxander/yacl/api/Option.java +++ b/src/main/java/dev/isxander/yacl/api/Option.java @@ -10,6 +10,7 @@ import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.List; import java.util.function.Consumer; +import java.util.function.Function; import java.util.function.Supplier; public interface Option { @@ -23,11 +24,17 @@ public interface Option { boolean changed(); + T pendingValue(); + void requestSet(T value); void applyValue(); - static Builder createBuilder() { + void forgetPendingValue(); + + void requestSetDefault(); + + static Builder createBuilder(Class clazz) { return new Builder<>(); } @@ -36,7 +43,7 @@ public interface Option { private final List tooltipLines = new ArrayList<>(); - private Control control; + private Function, Control> controlGetter; private Binding binding; @@ -58,10 +65,10 @@ public interface Option { return this; } - public Builder controller(@NotNull Control control) { + public Builder controller(@NotNull Function, Control> control) { Validate.notNull(control, "`control` cannot be null"); - this.control = control; + this.controlGetter = control; return this; } @@ -73,7 +80,7 @@ public interface Option { } public Builder binding(@NotNull T def, @NotNull Supplier<@NotNull T> getter, @NotNull Consumer<@NotNull T> setter) { - Validate.notNull(def, "`default` must not be null"); + Validate.notNull(def, "`def` must not be null"); Validate.notNull(getter, "`getter` must not be null"); Validate.notNull(setter, "`setter` must not be null"); @@ -83,7 +90,7 @@ public interface Option { public Option build() { Validate.notNull(name, "`name` must not be null when building `Option`"); - Validate.notNull(control, "`control` must not be null when building `Option`"); + Validate.notNull(controlGetter, "`control` must not be null when building `Option`"); Validate.notNull(binding, "`binding` must not be null when building `Option`"); MutableText concatenatedTooltip = Text.empty(); @@ -95,7 +102,7 @@ public interface Option { concatenatedTooltip.append(line); } - return new OptionImpl<>(name, concatenatedTooltip, control, binding); + return new OptionImpl<>(name, concatenatedTooltip, controlGetter, binding); } } } -- cgit