From 89f4185969e347c8649dea58bf85a09aad9d9983 Mon Sep 17 00:00:00 2001 From: xander Date: Sun, 4 Sep 2022 18:29:32 +0100 Subject: collapsible groups, string controller --- src/main/java/dev/isxander/yacl/api/OptionGroup.java | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'src/main/java/dev/isxander/yacl/api/OptionGroup.java') diff --git a/src/main/java/dev/isxander/yacl/api/OptionGroup.java b/src/main/java/dev/isxander/yacl/api/OptionGroup.java index 9376b8e..f8c346b 100644 --- a/src/main/java/dev/isxander/yacl/api/OptionGroup.java +++ b/src/main/java/dev/isxander/yacl/api/OptionGroup.java @@ -33,6 +33,11 @@ public interface OptionGroup { */ @NotNull ImmutableList> options(); + /** + * Dictates if the group should be collapsed by default. + */ + boolean collapsed(); + /** * Always false when using the {@link Builder} * used to not render the separator if true @@ -50,6 +55,7 @@ public interface OptionGroup { private Text name = Text.empty(); private final List tooltipLines = new ArrayList<>(); private final List> options = new ArrayList<>(); + private boolean collapsed = false; private Builder() { @@ -107,6 +113,16 @@ public interface OptionGroup { return this; } + /** + * Dictates if the group should be collapsed by default + * + * @see OptionGroup#collapsed() + */ + public Builder collapsed(boolean collapsible) { + this.collapsed = collapsible; + return this; + } + public OptionGroup build() { Validate.notEmpty(options, "`options` must not be empty to build `OptionGroup`"); @@ -119,7 +135,7 @@ public interface OptionGroup { concatenatedTooltip.append(line); } - return new OptionGroupImpl(name, concatenatedTooltip, ImmutableList.copyOf(options), false); + return new OptionGroupImpl(name, concatenatedTooltip, ImmutableList.copyOf(options), collapsed, false); } } } -- cgit