From 30e85b7096016c1e45a5fa9b52f9f476f0b0cec2 Mon Sep 17 00:00:00 2001 From: johni0702 Date: Sat, 7 Nov 2015 19:00:55 +0100 Subject: [PATCH] Add callback for selection in dropdown GUIs --- .../advanced/AbstractGuiDropdownMenu.java | 16 ++++++++++++++++ .../gui/element/advanced/IGuiDropdownMenu.java | 3 +++ 2 files changed, 19 insertions(+) diff --git a/src/main/java/de/johni0702/minecraft/gui/element/advanced/AbstractGuiDropdownMenu.java b/src/main/java/de/johni0702/minecraft/gui/element/advanced/AbstractGuiDropdownMenu.java index 6b8ea487..d36af178 100644 --- a/src/main/java/de/johni0702/minecraft/gui/element/advanced/AbstractGuiDropdownMenu.java +++ b/src/main/java/de/johni0702/minecraft/gui/element/advanced/AbstractGuiDropdownMenu.java @@ -32,6 +32,7 @@ import de.johni0702.minecraft.gui.element.AbstractGuiClickable; import de.johni0702.minecraft.gui.element.GuiElement; import de.johni0702.minecraft.gui.function.Clickable; import de.johni0702.minecraft.gui.layout.VerticalLayout; +import de.johni0702.minecraft.gui.utils.Consumer; import lombok.Getter; import lombok.RequiredArgsConstructor; import net.minecraft.client.gui.FontRenderer; @@ -53,6 +54,8 @@ public abstract class AbstractGuiDropdownMenu onSelection; + private GuiPanel dropdown; private ReadableDimension size; @@ -136,6 +139,7 @@ public abstract class AbstractGuiDropdownMenusingletonList(dropdown) : Collections.emptyList(); } + @Override + public T onSelection(Consumer consumer) { + this.onSelection = consumer; + return getThis(); + } + + public void onSelection(Integer value) { + if (onSelection != null) { + onSelection.consume(value); + } + } + @Override public boolean mouseClick(ReadablePoint position, int button) { Point pos = new Point(position); diff --git a/src/main/java/de/johni0702/minecraft/gui/element/advanced/IGuiDropdownMenu.java b/src/main/java/de/johni0702/minecraft/gui/element/advanced/IGuiDropdownMenu.java index bacd98b3..517c4804 100644 --- a/src/main/java/de/johni0702/minecraft/gui/element/advanced/IGuiDropdownMenu.java +++ b/src/main/java/de/johni0702/minecraft/gui/element/advanced/IGuiDropdownMenu.java @@ -23,6 +23,7 @@ package de.johni0702.minecraft.gui.element.advanced; import de.johni0702.minecraft.gui.element.GuiElement; +import de.johni0702.minecraft.gui.utils.Consumer; public interface IGuiDropdownMenu> extends GuiElement { T setValues(V... values); @@ -40,4 +41,6 @@ public interface IGuiDropdownMenu> extends G V[] getValues(); boolean isOpened(); + + T onSelection(Consumer consumer); }