diff --git a/src/main/java/com/cleanroommc/modularui/api/IPanelHandler.java b/src/main/java/com/cleanroommc/modularui/api/IPanelHandler.java index 276c23f19..abe9372be 100644 --- a/src/main/java/com/cleanroommc/modularui/api/IPanelHandler.java +++ b/src/main/java/com/cleanroommc/modularui/api/IPanelHandler.java @@ -61,6 +61,21 @@ static IPanelHandler simple(ModularPanel parent, SecondaryPanel.IPanelBuilder pr @ApiStatus.OverrideOnly void closePanelInternal(); + /** + * Toggles this panel open or closed. Delegates to {@link #openPanel()} and {@link #closePanel()}. + * + * @return {@code true} if the panel was opened, {@code false} if it was closed + */ + default boolean togglePanel() { + if (isPanelOpen()) { + closePanel(); + return false; + } else { + openPanel(); + return true; + } + } + /** * Deletes the current cached panel. Should not be used frequently. * This only works on panels which don't have {@link ItemSlotSH} sync handlers.