diff --git a/src/main/java/com/cleanroommc/modularui/widgets/PagedWidget.java b/src/main/java/com/cleanroommc/modularui/widgets/PagedWidget.java index c7b8ce098..bbdec9aa5 100644 --- a/src/main/java/com/cleanroommc/modularui/widgets/PagedWidget.java +++ b/src/main/java/com/cleanroommc/modularui/widgets/PagedWidget.java @@ -4,22 +4,35 @@ import com.cleanroommc.modularui.widget.Widget; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Unmodifiable; import java.util.ArrayList; import java.util.List; +import java.util.function.IntConsumer; public class PagedWidget> extends Widget { private final List pages = new ArrayList<>(); private IWidget currentPage; private int currentPageIndex = 0; + @Nullable + private IntConsumer onPageChange; @Override public void afterInit() { setPage(0); } + /** + * Set a consumer that is accepted right after the page is actually changed and the next page widget is enabled.
+ * Will also be called with {@code 0} when after this widget is initialized. + */ + public W onPageChange(@Nullable IntConsumer onPageChange) { + this.onPageChange = onPageChange; + return getThis(); + } + public void setPage(int page) { if (page < 0 || page >= this.pages.size()) { throw new IndexOutOfBoundsException(); @@ -30,6 +43,10 @@ public void setPage(int page) { } this.currentPage = this.pages.get(this.currentPageIndex); this.currentPage.setEnabled(true); + + if (this.onPageChange != null) { + this.onPageChange.accept(page); + } } public void nextPage() {