aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/dev/isxander/yacl/impl/ButtonOptionImpl.java
diff options
context:
space:
mode:
authorxander <xander@isxander.dev>2022-09-01 08:57:59 +0100
committerxander <xander@isxander.dev>2022-09-01 08:57:59 +0100
commit6f8ef7daaafd71090b2c334c10eadc8dedc738d9 (patch)
treed4054a65d99070c944132be83d25e109750dc5f9 /src/main/java/dev/isxander/yacl/impl/ButtonOptionImpl.java
parent9d0a5e937f97c1c17d034393e01636d5241f376a (diff)
downloadYetAnotherConfigLib-6f8ef7daaafd71090b2c334c10eadc8dedc738d9.tar.gz
YetAnotherConfigLib-6f8ef7daaafd71090b2c334c10eadc8dedc738d9.tar.bz2
YetAnotherConfigLib-6f8ef7daaafd71090b2c334c10eadc8dedc738d9.zip
GUI Implementation
Added groups Added button "option" Added test mod
Diffstat (limited to 'src/main/java/dev/isxander/yacl/impl/ButtonOptionImpl.java')
-rw-r--r--src/main/java/dev/isxander/yacl/impl/ButtonOptionImpl.java105
1 files changed, 105 insertions, 0 deletions
diff --git a/src/main/java/dev/isxander/yacl/impl/ButtonOptionImpl.java b/src/main/java/dev/isxander/yacl/impl/ButtonOptionImpl.java
new file mode 100644
index 0000000..516a5ee
--- /dev/null
+++ b/src/main/java/dev/isxander/yacl/impl/ButtonOptionImpl.java
@@ -0,0 +1,105 @@
+package dev.isxander.yacl.impl;
+
+import dev.isxander.yacl.api.Binding;
+import dev.isxander.yacl.api.ButtonOption;
+import dev.isxander.yacl.api.Control;
+import net.minecraft.text.Text;
+import org.jetbrains.annotations.ApiStatus;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.function.Function;
+
+@ApiStatus.Internal
+public class ButtonOptionImpl implements ButtonOption {
+ private final Text name;
+ private final Text tooltip;
+ private final Runnable action;
+ private final Control<Runnable> control;
+ private final Binding<Runnable> binding;
+
+ public ButtonOptionImpl(
+ @NotNull Text name,
+ @Nullable Text tooltip,
+ @NotNull Runnable action,
+ @NotNull Function<ButtonOption, Control<Runnable>> controlGetter
+ ) {
+ this.name = name;
+ this.tooltip = tooltip;
+ this.action = action;
+ this.control = controlGetter.apply(this);
+ this.binding = new EmptyBinderImpl();
+ }
+
+ @Override
+ public @NotNull Text name() {
+ return name;
+ }
+
+ @Override
+ public @Nullable Text tooltip() {
+ return tooltip;
+ }
+
+ @Override
+ public Runnable action() {
+ return action;
+ }
+
+ @Override
+ public @NotNull Control<Runnable> control() {
+ return control;
+ }
+
+ @Override
+ public @NotNull Binding<Runnable> binding() {
+ return binding;
+ }
+
+ @Override
+ public boolean changed() {
+ return false;
+ }
+
+ @Override
+ public Runnable pendingValue() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void requestSet(Runnable value) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void applyValue() {
+
+ }
+
+ @Override
+ public void forgetPendingValue() {
+
+ }
+
+ @Override
+ public void requestSetDefault() {
+
+ }
+
+ private static class EmptyBinderImpl implements Binding<Runnable> {
+ @Override
+ public void setValue(Runnable value) {
+
+ }
+
+ @Override
+ public Runnable getValue() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public Runnable defaultValue() {
+ throw new UnsupportedOperationException();
+ }
+ }
+}