From 9c6cb47a5edebfba114e7cce6c54a575390fc3ef Mon Sep 17 00:00:00 2001 From: chyzman <32403637+chyzman@users.noreply.github.com> Date: Wed, 6 Dec 2023 14:15:32 -0500 Subject: [PATCH 1/2] Deprecated Components.list in favor of Containers.list (which takes in an Iterable instead of just a list now) + added Version that takes in a map --- .../owo/ui/component/Components.java | 6 ++- .../owo/ui/container/Containers.java | 37 ++++++++++++++++++- .../uwu/client/ComponentTestScreen.java | 5 +-- .../uwu/client/TestConfigScreen.java | 4 +- 4 files changed, 45 insertions(+), 7 deletions(-) diff --git a/src/main/java/io/wispforest/owo/ui/component/Components.java b/src/main/java/io/wispforest/owo/ui/component/Components.java index dff92c5cc..a5b10e1aa 100644 --- a/src/main/java/io/wispforest/owo/ui/component/Components.java +++ b/src/main/java/io/wispforest/owo/ui/component/Components.java @@ -150,6 +150,10 @@ public static SmallCheckboxComponent smallCheckbox(Text label) { // Utility // ------- + /** + * @deprecated Use {@link Containers#list(Iterable, Consumer, Function, boolean)} instead + */ + @Deprecated public static FlowLayout list(List data, Consumer layoutConfigurator, Function componentMaker, boolean vertical) { var layout = vertical ? Containers.verticalFlow(Sizing.content(), Sizing.content()) : Containers.horizontalFlow(Sizing.content(), Sizing.content()); layoutConfigurator.accept(layout); @@ -171,4 +175,4 @@ public static T createWithSizing(Supplier componentMake return component; } -} +} \ No newline at end of file diff --git a/src/main/java/io/wispforest/owo/ui/container/Containers.java b/src/main/java/io/wispforest/owo/ui/container/Containers.java index 9ece7286b..73db3f5cc 100644 --- a/src/main/java/io/wispforest/owo/ui/container/Containers.java +++ b/src/main/java/io/wispforest/owo/ui/container/Containers.java @@ -4,6 +4,11 @@ import io.wispforest.owo.ui.core.Sizing; import net.minecraft.text.Text; +import java.util.Map; +import java.util.function.BiFunction; +import java.util.function.Consumer; +import java.util.function.Function; + public final class Containers { private Containers() {} @@ -48,6 +53,36 @@ public static ScrollContainer horizontalScroll(Sizing h // Utility wrappers // ---------------- + public static FlowLayout list(Iterable data, Consumer layoutConfigurator, Function componentMaker, boolean vertical) { + var layout = vertical ? Containers.verticalFlow(Sizing.content(), Sizing.content()) : Containers.horizontalFlow(Sizing.content(), Sizing.content()); + layoutConfigurator.accept(layout); + + for (var value : data) { + layout.child(componentMaker.apply(value)); + } + + return layout; + } + + public static FlowLayout list(Iterable data, Consumer layoutConfigurator, Function componentMaker) { + return list(data, layoutConfigurator, componentMaker, true); + } + + public static FlowLayout list(Map data, Consumer layoutConfigurator, BiFunction componentMaker, boolean vertical) { + var layout = vertical ? Containers.verticalFlow(Sizing.content(), Sizing.content()) : Containers.horizontalFlow(Sizing.content(), Sizing.content()); + layoutConfigurator.accept(layout); + + for (Map.Entry entry : data.entrySet()) { + layout.child(componentMaker.apply(entry.getKey(), entry.getValue())); + } + + return layout; + } + + public static FlowLayout list(Map data, Consumer layoutConfigurator, BiFunction componentMaker) { + return list(data, layoutConfigurator, componentMaker, true); + } + public static DraggableContainer draggable(Sizing horizontalSizing, Sizing verticalSizing, C child) { return new DraggableContainer<>(horizontalSizing, verticalSizing, child); } @@ -64,4 +99,4 @@ public static RenderEffectWrapper renderEffect(C child) return new RenderEffectWrapper<>(child); } -} +} \ No newline at end of file diff --git a/src/testmod/java/io/wispforest/uwu/client/ComponentTestScreen.java b/src/testmod/java/io/wispforest/uwu/client/ComponentTestScreen.java index dbb987bfe..6bc054de7 100644 --- a/src/testmod/java/io/wispforest/uwu/client/ComponentTestScreen.java +++ b/src/testmod/java/io/wispforest/uwu/client/ComponentTestScreen.java @@ -15,7 +15,6 @@ import net.minecraft.client.gui.tooltip.Tooltip; import net.minecraft.client.texture.SpriteAtlasTexture; import net.minecraft.client.util.SpriteIdentifier; -import net.minecraft.client.util.math.MatrixStack; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.nbt.NbtCompound; @@ -333,7 +332,7 @@ protected void init() { Containers.horizontalScroll( Sizing.fixed(26 * 7 + 8), Sizing.content(), - Components.list( + Containers.list( data, flowLayout -> flowLayout.margins(Insets.bottom(10)), integer -> Components.button(Text.literal(integer.toString()), (ButtonComponent button) -> {}).margins(Insets.horizontal(3)).horizontalSizing(Sizing.fixed(20)), @@ -435,4 +434,4 @@ private String format(@Nullable Component component) { + "(" + component.x() + " " + component.y() + ")"; } } -} +} \ No newline at end of file diff --git a/src/testmod/java/io/wispforest/uwu/client/TestConfigScreen.java b/src/testmod/java/io/wispforest/uwu/client/TestConfigScreen.java index fbb48f8b3..028a8687e 100644 --- a/src/testmod/java/io/wispforest/uwu/client/TestConfigScreen.java +++ b/src/testmod/java/io/wispforest/uwu/client/TestConfigScreen.java @@ -36,7 +36,7 @@ protected void build(FlowLayout rootComponent) { final var optionsScrollContainer = Containers.verticalScroll( Sizing.fill(90), Sizing.fill(85), - Components.list( + Containers.list( options, flowLayout -> {}, this::createOptionComponent, @@ -77,4 +77,4 @@ private FlowLayout createOptionComponent(ConfigOption option) { private record ConfigOption(String name, String value) {} -} +} \ No newline at end of file From 0bdb8b851f4952ae0dcab1b40139e79b3ddad7f6 Mon Sep 17 00:00:00 2001 From: chyzman <32403637+chyzman@users.noreply.github.com> Date: Wed, 6 Dec 2023 15:24:26 -0500 Subject: [PATCH 2/2] Update Containers.java removed list from map because map.entryset() is iterable --- .../owo/ui/container/Containers.java | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) diff --git a/src/main/java/io/wispforest/owo/ui/container/Containers.java b/src/main/java/io/wispforest/owo/ui/container/Containers.java index 73db3f5cc..c630b5bbd 100644 --- a/src/main/java/io/wispforest/owo/ui/container/Containers.java +++ b/src/main/java/io/wispforest/owo/ui/container/Containers.java @@ -4,8 +4,6 @@ import io.wispforest.owo.ui.core.Sizing; import net.minecraft.text.Text; -import java.util.Map; -import java.util.function.BiFunction; import java.util.function.Consumer; import java.util.function.Function; @@ -68,21 +66,6 @@ public static FlowLayout list(Iterable data, Consume return list(data, layoutConfigurator, componentMaker, true); } - public static FlowLayout list(Map data, Consumer layoutConfigurator, BiFunction componentMaker, boolean vertical) { - var layout = vertical ? Containers.verticalFlow(Sizing.content(), Sizing.content()) : Containers.horizontalFlow(Sizing.content(), Sizing.content()); - layoutConfigurator.accept(layout); - - for (Map.Entry entry : data.entrySet()) { - layout.child(componentMaker.apply(entry.getKey(), entry.getValue())); - } - - return layout; - } - - public static FlowLayout list(Map data, Consumer layoutConfigurator, BiFunction componentMaker) { - return list(data, layoutConfigurator, componentMaker, true); - } - public static DraggableContainer draggable(Sizing horizontalSizing, Sizing verticalSizing, C child) { return new DraggableContainer<>(horizontalSizing, verticalSizing, child); } @@ -99,4 +82,4 @@ public static RenderEffectWrapper renderEffect(C child) return new RenderEffectWrapper<>(child); } -} \ No newline at end of file +}