diff options
author | xander <xander@isxander.dev> | 2022-09-01 08:57:59 +0100 |
---|---|---|
committer | xander <xander@isxander.dev> | 2022-09-01 08:57:59 +0100 |
commit | 6f8ef7daaafd71090b2c334c10eadc8dedc738d9 (patch) | |
tree | d4054a65d99070c944132be83d25e109750dc5f9 /src/main/java/dev/isxander/yacl/impl/ButtonOptionImpl.java | |
parent | 9d0a5e937f97c1c17d034393e01636d5241f376a (diff) | |
download | YetAnotherConfigLib-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.java | 105 |
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(); + } + } +} |