Add callback for selection in dropdown GUIs
This commit is contained in:
@@ -32,6 +32,7 @@ import de.johni0702.minecraft.gui.element.AbstractGuiClickable;
|
|||||||
import de.johni0702.minecraft.gui.element.GuiElement;
|
import de.johni0702.minecraft.gui.element.GuiElement;
|
||||||
import de.johni0702.minecraft.gui.function.Clickable;
|
import de.johni0702.minecraft.gui.function.Clickable;
|
||||||
import de.johni0702.minecraft.gui.layout.VerticalLayout;
|
import de.johni0702.minecraft.gui.layout.VerticalLayout;
|
||||||
|
import de.johni0702.minecraft.gui.utils.Consumer;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import net.minecraft.client.gui.FontRenderer;
|
import net.minecraft.client.gui.FontRenderer;
|
||||||
@@ -53,6 +54,8 @@ public abstract class AbstractGuiDropdownMenu<V, T extends AbstractGuiDropdownMe
|
|||||||
@Getter
|
@Getter
|
||||||
private boolean opened;
|
private boolean opened;
|
||||||
|
|
||||||
|
private Consumer<Integer> onSelection;
|
||||||
|
|
||||||
private GuiPanel dropdown;
|
private GuiPanel dropdown;
|
||||||
|
|
||||||
private ReadableDimension size;
|
private ReadableDimension size;
|
||||||
@@ -136,6 +139,7 @@ public abstract class AbstractGuiDropdownMenu<V, T extends AbstractGuiDropdownMe
|
|||||||
@Override
|
@Override
|
||||||
public T setSelected(int selected) {
|
public T setSelected(int selected) {
|
||||||
this.selected = selected;
|
this.selected = selected;
|
||||||
|
onSelection(selected);
|
||||||
return getThis();
|
return getThis();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -165,6 +169,18 @@ public abstract class AbstractGuiDropdownMenu<V, T extends AbstractGuiDropdownMe
|
|||||||
return opened ? Collections.<GuiElement>singletonList(dropdown) : Collections.<GuiElement>emptyList();
|
return opened ? Collections.<GuiElement>singletonList(dropdown) : Collections.<GuiElement>emptyList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public T onSelection(Consumer<Integer> consumer) {
|
||||||
|
this.onSelection = consumer;
|
||||||
|
return getThis();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onSelection(Integer value) {
|
||||||
|
if (onSelection != null) {
|
||||||
|
onSelection.consume(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean mouseClick(ReadablePoint position, int button) {
|
public boolean mouseClick(ReadablePoint position, int button) {
|
||||||
Point pos = new Point(position);
|
Point pos = new Point(position);
|
||||||
|
|||||||
@@ -23,6 +23,7 @@
|
|||||||
package de.johni0702.minecraft.gui.element.advanced;
|
package de.johni0702.minecraft.gui.element.advanced;
|
||||||
|
|
||||||
import de.johni0702.minecraft.gui.element.GuiElement;
|
import de.johni0702.minecraft.gui.element.GuiElement;
|
||||||
|
import de.johni0702.minecraft.gui.utils.Consumer;
|
||||||
|
|
||||||
public interface IGuiDropdownMenu<V, T extends IGuiDropdownMenu<V, T>> extends GuiElement<T> {
|
public interface IGuiDropdownMenu<V, T extends IGuiDropdownMenu<V, T>> extends GuiElement<T> {
|
||||||
T setValues(V... values);
|
T setValues(V... values);
|
||||||
@@ -40,4 +41,6 @@ public interface IGuiDropdownMenu<V, T extends IGuiDropdownMenu<V, T>> extends G
|
|||||||
V[] getValues();
|
V[] getValues();
|
||||||
|
|
||||||
boolean isOpened();
|
boolean isOpened();
|
||||||
|
|
||||||
|
T onSelection(Consumer<Integer> consumer);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user