From 2eb20b9866b0b4c77472d2cc496a592cb5952a55 Mon Sep 17 00:00:00 2001 From: NichtStudioCode <51272202+NichtStudioCode@users.noreply.github.com> Date: Sat, 28 Jan 2023 14:58:53 +0100 Subject: [PATCH] Rename GUI to Gui, Add static Gui factory functions --- .../main/kotlin/de/studiocode/invui/Guis.kt | 16 +- .../kotlin/de/studiocode/invui/Windows.kt | 16 ++ .../studiocode/invui/animation/Animation.java | 8 +- .../invui/animation/impl/BaseAnimation.java | 6 +- .../{AbstractGUI.java => AbstractGui.java} | 66 ++++---- ...actPagedGUI.java => AbstractPagedGui.java} | 22 +-- ...tScrollGUI.java => AbstractScrollGui.java} | 16 +- ...bstractTabGUI.java => AbstractTabGui.java} | 11 +- .../de/studiocode/invui/gui/GUIParent.java | 13 -- .../invui/gui/{GUI.java => Gui.java} | 127 +++++++------- .../de/studiocode/invui/gui/GuiParent.java | 13 ++ .../de/studiocode/invui/gui/PagedGUI.java | 106 ------------ .../de/studiocode/invui/gui/PagedGui.java | 158 ++++++++++++++++++ .../de/studiocode/invui/gui/ScrollGUI.java | 49 ------ .../de/studiocode/invui/gui/ScrollGui.java | 130 ++++++++++++++ .../de/studiocode/invui/gui/SlotElement.java | 22 +-- .../invui/gui/{TabGUI.java => TabGui.java} | 37 +++- .../{GUIBuilder.java => GuiBuilder.java} | 50 +++--- .../{GUIContext.java => GuiContext.java} | 10 +- .../invui/gui/builder/guitype/GUIType.java | 29 ---- .../invui/gui/builder/guitype/GuiType.java | 29 ++++ .../gui/builder/guitype/NormalGUIType.java | 12 +- .../gui/builder/guitype/PagedGUIsGUIType.java | 14 +- .../builder/guitype/PagedItemsGUIType.java | 12 +- .../builder/guitype/ScrollGUIsGUIType.java | 14 +- .../builder/guitype/ScrollItemsGUIType.java | 12 +- .../gui/builder/guitype/ScrollVIGUIType.java | 12 +- .../invui/gui/builder/guitype/TabGUIType.java | 14 +- .../invui/gui/impl/NormalGUIImpl.java | 22 --- .../invui/gui/impl/NormalGuiImpl.java | 38 +++++ .../invui/gui/impl/PageNestedGUIImpl.java | 59 ------- ...emsGUIImpl.java => PagedItemsGuiImpl.java} | 36 +++- .../invui/gui/impl/PagedNestedGuiImpl.java | 79 +++++++++ ...msGUIImpl.java => ScrollItemsGuiImpl.java} | 30 +++- ...dGUIImpl.java => ScrollNestedGuiImpl.java} | 36 +++- ...ollVIGUIImpl.java => ScrollVIGuiImpl.java} | 30 +++- .../studiocode/invui/gui/impl/TabGUIImpl.java | 68 -------- .../studiocode/invui/gui/impl/TabGuiImpl.java | 89 ++++++++++ .../invui/gui/structure/IngredientList.java | 6 +- .../invui/gui/structure/Markers.java | 14 +- .../invui/gui/structure/Structure.java | 6 +- .../item/impl/controlitem/ControlItem.java | 12 +- .../invui/item/impl/controlitem/PageItem.java | 12 +- .../item/impl/controlitem/ScrollItem.java | 10 +- .../invui/item/impl/controlitem/TabItem.java | 10 +- .../studiocode/invui/util/InventoryUtils.java | 6 +- .../virtualinventory/VirtualInventory.java | 6 +- .../invui/window/AbstractDoubleWindow.java | 6 +- .../invui/window/AbstractMergedWindow.java | 20 +-- .../invui/window/AbstractSingleWindow.java | 18 +- .../invui/window/AbstractSplitWindow.java | 22 +-- .../invui/window/AbstractWindow.java | 26 +-- .../de/studiocode/invui/window/Window.java | 16 +- .../window/impl/AnvilSingleWindowImpl.java | 4 +- .../window/impl/AnvilSplitWindowImpl.java | 4 +- .../impl/CartographySingleWindowImpl.java | 8 +- .../impl/CartographySplitWindowImpl.java | 20 +-- .../window/impl/NormalMergedWindowImpl.java | 12 +- .../window/impl/NormalSingleWindowImpl.java | 4 +- .../window/impl/NormalSplitWindowImpl.java | 4 +- .../invui/window/type/WindowType.java | 22 +-- .../context/AnvilSingleWindowContext.java | 14 +- .../type/context/AnvilSplitWindowContext.java | 24 +-- .../CartographySingleWindowContext.java | 14 +- .../CartographySplitWindowContext.java | 24 +-- .../context/NormalCombinedWindowContext.java | 14 +- .../context/NormalSingleWindowContext.java | 14 +- .../context/NormalSplitWindowContext.java | 24 +-- 68 files changed, 1108 insertions(+), 799 deletions(-) create mode 100644 invui-kotlin/src/main/kotlin/de/studiocode/invui/Windows.kt rename invui/src/main/java/de/studiocode/invui/gui/{AbstractGUI.java => AbstractGui.java} (92%) rename invui/src/main/java/de/studiocode/invui/gui/{AbstractPagedGUI.java => AbstractPagedGui.java} (85%) rename invui/src/main/java/de/studiocode/invui/gui/{AbstractScrollGUI.java => AbstractScrollGui.java} (88%) rename invui/src/main/java/de/studiocode/invui/gui/{AbstractTabGUI.java => AbstractTabGui.java} (87%) delete mode 100644 invui/src/main/java/de/studiocode/invui/gui/GUIParent.java rename invui/src/main/java/de/studiocode/invui/gui/{GUI.java => Gui.java} (79%) create mode 100644 invui/src/main/java/de/studiocode/invui/gui/GuiParent.java delete mode 100644 invui/src/main/java/de/studiocode/invui/gui/PagedGUI.java create mode 100644 invui/src/main/java/de/studiocode/invui/gui/PagedGui.java delete mode 100644 invui/src/main/java/de/studiocode/invui/gui/ScrollGUI.java create mode 100644 invui/src/main/java/de/studiocode/invui/gui/ScrollGui.java rename invui/src/main/java/de/studiocode/invui/gui/{TabGUI.java => TabGui.java} (51%) rename invui/src/main/java/de/studiocode/invui/gui/builder/{GUIBuilder.java => GuiBuilder.java} (65%) rename invui/src/main/java/de/studiocode/invui/gui/builder/{GUIContext.java => GuiContext.java} (75%) delete mode 100644 invui/src/main/java/de/studiocode/invui/gui/builder/guitype/GUIType.java create mode 100644 invui/src/main/java/de/studiocode/invui/gui/builder/guitype/GuiType.java delete mode 100644 invui/src/main/java/de/studiocode/invui/gui/impl/NormalGUIImpl.java create mode 100644 invui/src/main/java/de/studiocode/invui/gui/impl/NormalGuiImpl.java delete mode 100644 invui/src/main/java/de/studiocode/invui/gui/impl/PageNestedGUIImpl.java rename invui/src/main/java/de/studiocode/invui/gui/impl/{PagedItemsGUIImpl.java => PagedItemsGuiImpl.java} (55%) create mode 100644 invui/src/main/java/de/studiocode/invui/gui/impl/PagedNestedGuiImpl.java rename invui/src/main/java/de/studiocode/invui/gui/impl/{ScrollItemsGUIImpl.java => ScrollItemsGuiImpl.java} (52%) rename invui/src/main/java/de/studiocode/invui/gui/impl/{ScrollNestedGUIImpl.java => ScrollNestedGuiImpl.java} (51%) rename invui/src/main/java/de/studiocode/invui/gui/impl/{ScrollVIGUIImpl.java => ScrollVIGuiImpl.java} (56%) delete mode 100644 invui/src/main/java/de/studiocode/invui/gui/impl/TabGUIImpl.java create mode 100644 invui/src/main/java/de/studiocode/invui/gui/impl/TabGuiImpl.java diff --git a/invui-kotlin/src/main/kotlin/de/studiocode/invui/Guis.kt b/invui-kotlin/src/main/kotlin/de/studiocode/invui/Guis.kt index 9fdc886..cc00963 100644 --- a/invui-kotlin/src/main/kotlin/de/studiocode/invui/Guis.kt +++ b/invui-kotlin/src/main/kotlin/de/studiocode/invui/Guis.kt @@ -10,7 +10,7 @@ import de.studiocode.invui.item.Item * @param slot The slot index * @return The [SlotElement] placed on that slot or null if there is none */ -operator fun GUI.get(slot: Int): SlotElement? = getSlotElement(slot) +operator fun Gui.get(slot: Int): SlotElement? = getSlotElement(slot) /** * Gets the [SlotElement] placed on these coordinates. @@ -19,7 +19,7 @@ operator fun GUI.get(slot: Int): SlotElement? = getSlotElement(slot) * @param y The y coordinate of the slot * @return The [SlotElement] placed on that slot or null if there is none */ -operator fun GUI.get(x: Int, y: Int): SlotElement? = getSlotElement(x, y) +operator fun Gui.get(x: Int, y: Int): SlotElement? = getSlotElement(x, y) /** * Sets the [SlotElement] on that slot. @@ -27,7 +27,7 @@ operator fun GUI.get(x: Int, y: Int): SlotElement? = getSlotElement(x, y) * @param slot The slot index * @param element The [SlotElement] to set or null to remove the current one */ -operator fun GUI.set(slot: Int, element: SlotElement?) = setSlotElement(slot, element) +operator fun Gui.set(slot: Int, element: SlotElement?) = setSlotElement(slot, element) /** * Sets the [SlotElement] on these coordinates. @@ -36,7 +36,7 @@ operator fun GUI.set(slot: Int, element: SlotElement?) = setSlotElement(slot, el * @param y The y coordinate of the slot * @param element The [SlotElement] to set or null to remove the current one */ -operator fun GUI.set(x: Int, y: Int, element: SlotElement?) = setSlotElement(x, y, element) +operator fun Gui.set(x: Int, y: Int, element: SlotElement?) = setSlotElement(x, y, element) /** * Sets the [Item] on that slot. @@ -44,7 +44,7 @@ operator fun GUI.set(x: Int, y: Int, element: SlotElement?) = setSlotElement(x, * @param slot The slot index * @param item The [Item] to set or null to remove the current one */ -operator fun GUI.set(slot: Int, item: Item?) = setItem(slot, item) +operator fun Gui.set(slot: Int, item: Item?) = setItem(slot, item) /** * Sets the [Item] on these coordinates. @@ -53,7 +53,7 @@ operator fun GUI.set(slot: Int, item: Item?) = setItem(slot, item) * @param y The y coordinate of the slot * @param item The [Item] to set or null to remove the current one */ -operator fun GUI.set(x: Int, y: Int, item: Item?) = setItem(x, y, item) +operator fun Gui.set(x: Int, y: Int, item: Item?) = setItem(x, y, item) /** * Adds the given [elements]. @@ -61,7 +61,7 @@ operator fun GUI.set(x: Int, y: Int, item: Item?) = setItem(x, y, item) * @param elements The [SlotElements][SlotElement] to add. */ @JvmName("plusAssignSlotElements") -operator fun GUI.plusAssign(elements: Iterable) = elements.forEach { addSlotElements(it) } +operator fun Gui.plusAssign(elements: Iterable) = elements.forEach { addSlotElements(it) } /** * Adds the given [items]. @@ -69,4 +69,4 @@ operator fun GUI.plusAssign(elements: Iterable) = elements.forEach * @param items The [Items][Item] to add. */ @JvmName("plusAssignItems") -operator fun GUI.plusAssign(items: Iterable) = items.forEach { addItems(it) } \ No newline at end of file +operator fun Gui.plusAssign(items: Iterable) = items.forEach { addItems(it) } \ No newline at end of file diff --git a/invui-kotlin/src/main/kotlin/de/studiocode/invui/Windows.kt b/invui-kotlin/src/main/kotlin/de/studiocode/invui/Windows.kt new file mode 100644 index 0000000..b0fbb76 --- /dev/null +++ b/invui-kotlin/src/main/kotlin/de/studiocode/invui/Windows.kt @@ -0,0 +1,16 @@ +@file:Suppress("PackageDirectoryMismatch") + +package de.studiocode.invui.window.type + +import de.studiocode.invui.window.Window +import de.studiocode.invui.window.type.context.WindowContext + +fun WindowType.create(contextConsumer: C.() -> Unit): W { + val ctx = createContext() + ctx.contextConsumer() + return createWindow(ctx) +} + +fun main() { + WindowType.NORMAL.create { } +} \ No newline at end of file diff --git a/invui/src/main/java/de/studiocode/invui/animation/Animation.java b/invui/src/main/java/de/studiocode/invui/animation/Animation.java index cdfc84d..ab6e9ab 100644 --- a/invui/src/main/java/de/studiocode/invui/animation/Animation.java +++ b/invui/src/main/java/de/studiocode/invui/animation/Animation.java @@ -1,6 +1,6 @@ package de.studiocode.invui.animation; -import de.studiocode.invui.gui.GUI; +import de.studiocode.invui.gui.Gui; import de.studiocode.invui.window.Window; import org.jetbrains.annotations.NotNull; @@ -10,11 +10,11 @@ import java.util.function.BiConsumer; public interface Animation { /** - * Sets the {@link GUI} this {@link Animation} will take place in. + * Sets the {@link Gui} this {@link Animation} will take place in. * - * @param gui The {@link GUI} this {@link Animation} will take place in + * @param gui The {@link Gui} this {@link Animation} will take place in */ - void setGUI(GUI gui); + void setGui(Gui gui); /** * Sets the {@link Window}s that will see this animation. diff --git a/invui/src/main/java/de/studiocode/invui/animation/impl/BaseAnimation.java b/invui/src/main/java/de/studiocode/invui/animation/impl/BaseAnimation.java index f57172d..b96cbd4 100644 --- a/invui/src/main/java/de/studiocode/invui/animation/impl/BaseAnimation.java +++ b/invui/src/main/java/de/studiocode/invui/animation/impl/BaseAnimation.java @@ -2,7 +2,7 @@ package de.studiocode.invui.animation.impl; import de.studiocode.invui.InvUI; import de.studiocode.invui.animation.Animation; -import de.studiocode.invui.gui.GUI; +import de.studiocode.invui.gui.Gui; import de.studiocode.invui.util.SlotUtils; import de.studiocode.invui.window.Window; import org.bukkit.Bukkit; @@ -23,7 +23,7 @@ public abstract class BaseAnimation implements Animation { private final List finishHandlers = new ArrayList<>(); private final int tickDelay; - private GUI gui; + private Gui gui; private int width; private int height; @@ -40,7 +40,7 @@ public abstract class BaseAnimation implements Animation { } @Override - public void setGUI(GUI gui) { + public void setGui(Gui gui) { this.gui = gui; this.width = gui.getWidth(); this.height = gui.getHeight(); diff --git a/invui/src/main/java/de/studiocode/invui/gui/AbstractGUI.java b/invui/src/main/java/de/studiocode/invui/gui/AbstractGui.java similarity index 92% rename from invui/src/main/java/de/studiocode/invui/gui/AbstractGUI.java rename to invui/src/main/java/de/studiocode/invui/gui/AbstractGui.java index 052890c..12692dc 100644 --- a/invui/src/main/java/de/studiocode/invui/gui/AbstractGUI.java +++ b/invui/src/main/java/de/studiocode/invui/gui/AbstractGui.java @@ -30,20 +30,20 @@ import java.util.*; import java.util.function.Predicate; import java.util.stream.Collectors; -public abstract class AbstractGUI implements GUI, GUIParent { +public abstract class AbstractGui implements Gui, GuiParent { private final int width; private final int height; private final int size; private final SlotElement[] slotElements; - private final Set parents = new HashSet<>(); + private final Set parents = new HashSet<>(); private SlotElement[] animationElements; private Animation animation; private ItemProvider background; - public AbstractGUI(int width, int height) { + public AbstractGui(int width, int height) { this.width = width; this.height = height; this.size = width * height; @@ -60,7 +60,7 @@ public abstract class AbstractGUI implements GUI, GUIParent { SlotElement slotElement = slotElements[slotNumber]; if (slotElement instanceof LinkedSlotElement) { LinkedSlotElement linkedElement = (LinkedSlotElement) slotElement; - AbstractGUI gui = (AbstractGUI) linkedElement.getGUI(); + AbstractGui gui = (AbstractGui) linkedElement.getGui(); gui.handleClick(linkedElement.getSlotIndex(), player, clickType, event); } else if (slotElement instanceof ItemSlotElement) { event.setCancelled(true); // if it is an Item, don't let the player move it @@ -208,16 +208,16 @@ public abstract class AbstractGUI implements GUI, GUIParent { if (!updateEvent.isCancelled()) { int leftOverAmount; if (window instanceof AbstractDoubleWindow) { - GUI otherGui; + Gui otherGui; if (window instanceof AbstractSplitWindow) { AbstractSplitWindow splitWindow = (AbstractSplitWindow) window; - GUI[] guis = splitWindow.getGUIs(); + Gui[] guis = splitWindow.getGuis(); otherGui = guis[0] == this ? guis[1] : guis[0]; } else { otherGui = this; } - leftOverAmount = ((AbstractGUI) otherGui).putIntoFirstVirtualInventory(updateReason, clicked, inventory); + leftOverAmount = ((AbstractGui) otherGui).putIntoFirstVirtualInventory(updateReason, clicked, inventory); } else { leftOverAmount = InventoryUtils.addItemCorrectly(event.getWhoClicked().getInventory(), inventory.getItemStack(slot)); } @@ -345,40 +345,40 @@ public abstract class AbstractGUI implements GUI, GUIParent { // endregion @Override - public void handleSlotElementUpdate(GUI child, int slotIndex) { - // find all SlotElements that link to this slotIndex in this child GUI and notify all parents + public void handleSlotElementUpdate(Gui child, int slotIndex) { + // find all SlotElements that link to this slotIndex in this child Gui and notify all parents for (int index = 0; index < size; index++) { SlotElement element = slotElements[index]; if (element instanceof LinkedSlotElement) { LinkedSlotElement linkedSlotElement = (LinkedSlotElement) element; - if (linkedSlotElement.getGUI() == child && linkedSlotElement.getSlotIndex() == slotIndex) - for (GUIParent parent : parents) parent.handleSlotElementUpdate(this, index); + if (linkedSlotElement.getGui() == child && linkedSlotElement.getSlotIndex() == slotIndex) + for (GuiParent parent : parents) parent.handleSlotElementUpdate(this, index); } } } - public void addParent(@NotNull GUIParent parent) { + public void addParent(@NotNull GuiParent parent) { parents.add(parent); } - public void removeParent(@NotNull GUIParent parent) { + public void removeParent(@NotNull GuiParent parent) { parents.remove(parent); } - public Set getParents() { + public Set getParents() { return parents; } @Override - public List findAllWindows() { + public @NotNull List<@NotNull Window> findAllWindows() { List windows = new ArrayList<>(); - List unexploredParents = new ArrayList<>(this.parents); + List unexploredParents = new ArrayList<>(this.parents); while (!unexploredParents.isEmpty()) { - List parents = new ArrayList<>(unexploredParents); + List parents = new ArrayList<>(unexploredParents); unexploredParents.clear(); - for (GUIParent parent : parents) { - if (parent instanceof AbstractGUI) unexploredParents.addAll(((AbstractGUI) parent).getParents()); + for (GuiParent parent : parents) { + if (parent instanceof AbstractGui) unexploredParents.addAll(((AbstractGui) parent).getParents()); else if (parent instanceof Window) windows.add((Window) parent); } } @@ -387,7 +387,7 @@ public abstract class AbstractGUI implements GUI, GUIParent { } @Override - public Set findAllCurrentViewers() { + public @NotNull Set<@NotNull Player> findAllCurrentViewers() { return findAllWindows().stream() .map(Window::getCurrentViewer) .filter(Objects::nonNull) @@ -400,7 +400,7 @@ public abstract class AbstractGUI implements GUI, GUIParent { } @Override - public void playAnimation(@NotNull Animation animation, @Nullable Predicate filter) { + public void playAnimation(@NotNull Animation animation, @Nullable Predicate<@NotNull SlotElement> filter) { if (animation != null) cancelAnimation(); this.animation = animation; @@ -416,7 +416,7 @@ public abstract class AbstractGUI implements GUI, GUIParent { } animation.setSlots(slots); - animation.setGUI(this); + animation.setGui(this); animation.setWindows(findAllWindows()); animation.addShowHandler((frame, index) -> setSlotElement(index, animationElements[index])); animation.addFinishHandler(() -> { @@ -461,28 +461,28 @@ public abstract class AbstractGUI implements GUI, GUIParent { if (slotElement instanceof ItemSlotElement) { Item item = ((ItemSlotElement) slotElement).getItem(); if (item instanceof ControlItem) - ((ControlItem) item).setGUI(this); + ((ControlItem) item).setGui(this); } // notify parents that a SlotElement has been changed parents.forEach(parent -> parent.handleSlotElementUpdate(this, index)); - AbstractGUI oldLink = oldElement instanceof LinkedSlotElement ? (AbstractGUI) ((LinkedSlotElement) oldElement).getGUI() : null; - AbstractGUI newLink = slotElement instanceof LinkedSlotElement ? (AbstractGUI) ((LinkedSlotElement) slotElement).getGUI() : null; + AbstractGui oldLink = oldElement instanceof LinkedSlotElement ? (AbstractGui) ((LinkedSlotElement) oldElement).getGui() : null; + AbstractGui newLink = slotElement instanceof LinkedSlotElement ? (AbstractGui) ((LinkedSlotElement) slotElement).getGui() : null; // if newLink is the same as oldLink, there isn't anything to be done if (newLink == oldLink) return; - // if the slot previously linked to GUI + // if the slot previously linked to Gui if (oldLink != null) { - // If no other slot still links to that GUI, remove this GUI from parents + // If no other slot still links to that Gui, remove this Gui from parents if (Arrays.stream(slotElements) .filter(element -> element instanceof LinkedSlotElement) - .map(element -> ((LinkedSlotElement) element).getGUI()) + .map(element -> ((LinkedSlotElement) element).getGui()) .noneMatch(gui -> gui == oldLink)) oldLink.removeParent(this); } - // if the slot now links to a GUI add this as parent + // if the slot now links to a Gui add this as parent if (newLink != null) { newLink.addParent(this); } @@ -498,7 +498,7 @@ public abstract class AbstractGUI implements GUI, GUIParent { } @Override - public SlotElement getSlotElement(int index) { + public @Nullable SlotElement getSlotElement(int index) { return slotElements[index]; } @@ -559,7 +559,7 @@ public abstract class AbstractGUI implements GUI, GUIParent { @Override public void applyStructure(@NotNull Structure structure) { - structure.getIngredientList().insertIntoGUI(this); + structure.getIngredientList().insertIntoGui(this); } @Override @@ -574,7 +574,7 @@ public abstract class AbstractGUI implements GUI, GUIParent { } @Override - public SlotElement getSlotElement(int x, int y) { + public @Nullable SlotElement getSlotElement(int x, int y) { return getSlotElement(convToIndex(x, y)); } @@ -656,7 +656,7 @@ public abstract class AbstractGUI implements GUI, GUIParent { } @Override - public void fillRectangle(int x, int y, @NotNull GUI gui, boolean replaceExisting) { + public void fillRectangle(int x, int y, @NotNull Gui gui, boolean replaceExisting) { int slotIndex = 0; for (int slot : SlotUtils.getSlotsRect(x, y, gui.getWidth(), gui.getHeight(), this.width)) { if (hasSlotElement(slot) && !replaceExisting) continue; diff --git a/invui/src/main/java/de/studiocode/invui/gui/AbstractPagedGUI.java b/invui/src/main/java/de/studiocode/invui/gui/AbstractPagedGui.java similarity index 85% rename from invui/src/main/java/de/studiocode/invui/gui/AbstractPagedGUI.java rename to invui/src/main/java/de/studiocode/invui/gui/AbstractPagedGui.java index 9e8980b..6808a2a 100644 --- a/invui/src/main/java/de/studiocode/invui/gui/AbstractPagedGUI.java +++ b/invui/src/main/java/de/studiocode/invui/gui/AbstractPagedGui.java @@ -1,8 +1,8 @@ package de.studiocode.invui.gui; -import de.studiocode.invui.gui.builder.GUIBuilder; -import de.studiocode.invui.gui.impl.PageNestedGUIImpl; -import de.studiocode.invui.gui.impl.PagedItemsGUIImpl; +import de.studiocode.invui.gui.builder.GuiBuilder; +import de.studiocode.invui.gui.impl.PagedNestedGuiImpl; +import de.studiocode.invui.gui.impl.PagedItemsGuiImpl; import de.studiocode.invui.gui.structure.Structure; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -12,13 +12,13 @@ import java.util.List; import java.util.function.BiConsumer; /** - * A {@link GUI} with pages. + * A {@link Gui} with pages. * - * @see GUIBuilder - * @see PagedItemsGUIImpl - * @see PageNestedGUIImpl + * @see GuiBuilder + * @see PagedItemsGuiImpl + * @see PagedNestedGuiImpl */ -public abstract class AbstractPagedGUI extends AbstractGUI implements PagedGUI { +public abstract class AbstractPagedGui extends AbstractGui implements PagedGui { private final boolean infinitePages; private final int[] contentListSlots; @@ -26,13 +26,13 @@ public abstract class AbstractPagedGUI extends AbstractGUI implements PagedGU private List> pageChangeHandlers; - public AbstractPagedGUI(int width, int height, boolean infinitePages, int... contentListSlots) { + public AbstractPagedGui(int width, int height, boolean infinitePages, int... contentListSlots) { super(width, height); this.infinitePages = infinitePages; this.contentListSlots = contentListSlots; } - public AbstractPagedGUI(int width, int height, boolean infinitePages, Structure structure) { + public AbstractPagedGui(int width, int height, boolean infinitePages, Structure structure) { this(width, height, infinitePages, structure.getIngredientList().findContentListSlots()); applyStructure(structure); } @@ -124,7 +124,7 @@ public abstract class AbstractPagedGUI extends AbstractGUI implements PagedGU } @Override - public void setPageChangeHandlers(@Nullable List> handlers) { + public void setPageChangeHandlers(@Nullable List<@NotNull BiConsumer> handlers) { this.pageChangeHandlers = handlers; } diff --git a/invui/src/main/java/de/studiocode/invui/gui/AbstractScrollGUI.java b/invui/src/main/java/de/studiocode/invui/gui/AbstractScrollGui.java similarity index 88% rename from invui/src/main/java/de/studiocode/invui/gui/AbstractScrollGUI.java rename to invui/src/main/java/de/studiocode/invui/gui/AbstractScrollGui.java index d18024b..13c95b8 100644 --- a/invui/src/main/java/de/studiocode/invui/gui/AbstractScrollGUI.java +++ b/invui/src/main/java/de/studiocode/invui/gui/AbstractScrollGui.java @@ -1,19 +1,19 @@ package de.studiocode.invui.gui; -import de.studiocode.invui.gui.impl.ScrollItemsGUIImpl; -import de.studiocode.invui.gui.impl.ScrollNestedGUIImpl; +import de.studiocode.invui.gui.impl.ScrollItemsGuiImpl; +import de.studiocode.invui.gui.impl.ScrollNestedGuiImpl; import de.studiocode.invui.gui.structure.Structure; import de.studiocode.invui.util.SlotUtils; import java.util.List; /** - * A scrollable {@link GUI} + * A scrollable {@link Gui} * - * @see ScrollItemsGUIImpl - * @see ScrollNestedGUIImpl + * @see ScrollItemsGuiImpl + * @see ScrollNestedGuiImpl */ -public abstract class AbstractScrollGUI extends AbstractGUI implements ScrollGUI { +public abstract class AbstractScrollGui extends AbstractGui implements ScrollGui { private final boolean infiniteLines; private final int lineLength; @@ -22,7 +22,7 @@ public abstract class AbstractScrollGUI extends AbstractGUI implements Scroll protected int offset; - public AbstractScrollGUI(int width, int height, boolean infiniteLines, int... contentListSlots) { + public AbstractScrollGui(int width, int height, boolean infiniteLines, int... contentListSlots) { super(width, height); this.infiniteLines = infiniteLines; this.contentListSlots = contentListSlots; @@ -37,7 +37,7 @@ public abstract class AbstractScrollGUI extends AbstractGUI implements Scroll throw new IllegalArgumentException("contentListSlots has to be a multiple of lineLength"); } - public AbstractScrollGUI(int width, int height, boolean infiniteLines, Structure structure) { + public AbstractScrollGui(int width, int height, boolean infiniteLines, Structure structure) { this(width, height, infiniteLines, structure.getIngredientList().findContentListSlots()); applyStructure(structure); } diff --git a/invui/src/main/java/de/studiocode/invui/gui/AbstractTabGUI.java b/invui/src/main/java/de/studiocode/invui/gui/AbstractTabGui.java similarity index 87% rename from invui/src/main/java/de/studiocode/invui/gui/AbstractTabGUI.java rename to invui/src/main/java/de/studiocode/invui/gui/AbstractTabGui.java index dcbbe1a..2ad12c8 100644 --- a/invui/src/main/java/de/studiocode/invui/gui/AbstractTabGUI.java +++ b/invui/src/main/java/de/studiocode/invui/gui/AbstractTabGui.java @@ -8,7 +8,7 @@ import java.util.ArrayList; import java.util.List; import java.util.function.BiConsumer; -public abstract class AbstractTabGUI extends AbstractGUI implements TabGUI { +public abstract class AbstractTabGui extends AbstractGui implements TabGui { private final int tabAmount; private final int[] listSlots; @@ -17,13 +17,13 @@ public abstract class AbstractTabGUI extends AbstractGUI implements TabGUI { private List> tabChangeHandlers; - public AbstractTabGUI(int width, int height, int tabAmount, int... listSlots) { + public AbstractTabGui(int width, int height, int tabAmount, int... listSlots) { super(width, height); this.tabAmount = tabAmount; this.listSlots = listSlots; } - public AbstractTabGUI(int width, int height, int tabAmount, Structure structure) { + public AbstractTabGui(int width, int height, int tabAmount, Structure structure) { this(width, height, tabAmount, structure.getIngredientList().findContentListSlots()); applyStructure(structure); } @@ -73,13 +73,12 @@ public abstract class AbstractTabGUI extends AbstractGUI implements TabGUI { @Override - @Nullable - public List> getTabChangeHandlers() { + public @Nullable List<@NotNull BiConsumer> getTabChangeHandlers() { return tabChangeHandlers; } @Override - public void setTabChangeHandlers(@Nullable List> tabChangeHandlers) { + public void setTabChangeHandlers(@Nullable List<@NotNull BiConsumer> tabChangeHandlers) { this.tabChangeHandlers = tabChangeHandlers; } diff --git a/invui/src/main/java/de/studiocode/invui/gui/GUIParent.java b/invui/src/main/java/de/studiocode/invui/gui/GUIParent.java deleted file mode 100644 index 1eeb978..0000000 --- a/invui/src/main/java/de/studiocode/invui/gui/GUIParent.java +++ /dev/null @@ -1,13 +0,0 @@ -package de.studiocode.invui.gui; - -public interface GUIParent { - - /** - * Called by the child {@link GUI} to report an update of a {@link SlotElement}. - * - * @param child The child {@link GUI} whose {@link SlotElement} has changed - * @param slotIndex The slot index of the changed {@link SlotElement} in the child {@link GUI} - */ - void handleSlotElementUpdate(GUI child, int slotIndex); - -} diff --git a/invui/src/main/java/de/studiocode/invui/gui/GUI.java b/invui/src/main/java/de/studiocode/invui/gui/Gui.java similarity index 79% rename from invui/src/main/java/de/studiocode/invui/gui/GUI.java rename to invui/src/main/java/de/studiocode/invui/gui/Gui.java index ba0938b..dabe8d1 100644 --- a/invui/src/main/java/de/studiocode/invui/gui/GUI.java +++ b/invui/src/main/java/de/studiocode/invui/gui/Gui.java @@ -1,15 +1,15 @@ package de.studiocode.invui.gui; import de.studiocode.invui.animation.Animation; -import de.studiocode.invui.gui.builder.GUIBuilder; -import de.studiocode.invui.gui.impl.*; +import de.studiocode.invui.gui.builder.GuiBuilder; +import de.studiocode.invui.gui.impl.NormalGuiImpl; import de.studiocode.invui.gui.structure.Structure; import de.studiocode.invui.item.Item; import de.studiocode.invui.item.ItemProvider; import de.studiocode.invui.virtualinventory.VirtualInventory; import de.studiocode.invui.window.Window; +import de.studiocode.invui.window.WindowManager; import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryCloseEvent; import org.bukkit.inventory.Inventory; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -19,48 +19,63 @@ import java.util.Set; import java.util.function.Predicate; /** - * A GUI is a container for width * height {@link SlotElement SlotElements}.
+ * A Gui is a container for width * height {@link SlotElement SlotElements}.
* Each {@link SlotElement} can either be an {@link Item}, - * a reference to a {@link VirtualInventory}'s or another {@link GUI}'s + * a reference to a {@link VirtualInventory}'s or another {@link Gui}'s * slot index.
- * A {@link GUI} is not an {@link Inventory}, nor does + * A {@link Gui} is not an {@link Inventory}, nor does * it access one. It just contains {@link SlotElement SlotElements} and their positions.
* In order to create an {@link Inventory} which is visible * to players, you will need to use a {@link Window}. * - * @see GUIBuilder - * @see AbstractGUI - * @see AbstractPagedGUI - * @see AbstractScrollGUI - * @see AbstractTabGUI - * @see NormalGUIImpl - * @see PagedItemsGUIImpl - * @see PageNestedGUIImpl - * @see ScrollItemsGUIImpl - * @see ScrollNestedGUIImpl - * @see ScrollVIGUIImpl - * @see TabGUIImpl + * @see GuiBuilder + * @see AbstractGui + * @see AbstractPagedGui + * @see AbstractScrollGui + * @see AbstractTabGui */ -public interface GUI { +@SuppressWarnings("deprecation") +public interface Gui { /** - * Gets the size of the {@link GUI}. + * Creates a new empty {@link Gui}. + * + * @param width The width of the {@link Gui}. + * @param height The height of the {@link Gui}. + * @return The created {@link Gui}. + */ + static @NotNull Gui empty(int width, int height) { + return new NormalGuiImpl(width, height); + } + + /** + * Creates a new empty {@link Gui}. + * + * @param structure The {@link Structure} of the {@link Gui}. + * @return The created {@link Gui}. + */ + static @NotNull Gui of(@NotNull Structure structure) { + return new NormalGuiImpl(structure); + } + + /** + * Gets the size of the {@link Gui}. * * @return The size of the gui. */ int getSize(); /** - * Gets the width of the {@link GUI} + * Gets the width of the {@link Gui} * - * @return The width of the {@link GUI} + * @return The width of the {@link Gui} */ int getWidth(); /** - * Gets the height of the {@link GUI} + * Gets the height of the {@link Gui} * - * @return The height of the {@link GUI} + * @return The height of the {@link Gui} */ int getHeight(); @@ -84,7 +99,7 @@ public interface GUI { void setSlotElement(int index, @Nullable SlotElement slotElement); /** - * Adds {@link SlotElement SlotElements} to the {@link GUI}. + * Adds {@link SlotElement SlotElements} to the {@link Gui}. * * @param slotElements The {@link SlotElement SlotElements} to add. */ @@ -97,7 +112,7 @@ public interface GUI { * @param y The y coordinate * @return The {@link SlotElement} placed there */ - SlotElement getSlotElement(int x, int y); + @Nullable SlotElement getSlotElement(int x, int y); /** * Gets the {@link SlotElement} placed on that slot. @@ -105,7 +120,7 @@ public interface GUI { * @param index The slot index * @return The {@link SlotElement} placed on that slot */ - SlotElement getSlotElement(int index); + @Nullable SlotElement getSlotElement(int index); /** * Gets if there is a {@link SlotElement} on these coordinates. @@ -125,12 +140,11 @@ public interface GUI { boolean hasSlotElement(int index); /** - * Gets all {@link SlotElement SlotElements} of this {@link GUI} in an Array. + * Gets all {@link SlotElement SlotElements} of this {@link Gui} in an Array. * - * @return All {@link SlotElement SlotElements} of this {@link GUI} + * @return All {@link SlotElement SlotElements} of this {@link Gui} */ - @Nullable - SlotElement @NotNull [] getSlotElements(); + @Nullable SlotElement @NotNull [] getSlotElements(); /** * Sets the {@link Item} on these coordinates. @@ -165,8 +179,7 @@ public interface GUI { * @param y The y coordinate * @return The {@link Item} which is placed on that slot or null if there isn't one */ - @Nullable - Item getItem(int x, int y); + @Nullable Item getItem(int x, int y); /** * Gets the {@link Item} placed on that slot. @@ -174,8 +187,7 @@ public interface GUI { * @param index The slot index * @return The {@link Item} which is placed on that slot or null if there isn't one */ - @Nullable - Item getItem(int index); + @Nullable Item getItem(int index); /** * Gets the {@link ItemProvider} that will be used if nothing else @@ -183,8 +195,7 @@ public interface GUI { * * @return The {@link ItemProvider} */ - @Nullable - ItemProvider getBackground(); + @Nullable ItemProvider getBackground(); /** * Sets the {@link ItemProvider} that will be used if nothing else @@ -210,32 +221,32 @@ public interface GUI { void remove(int index); /** - * Applies the given {@link Structure} to the {@link GUI}. + * Applies the given {@link Structure} to the {@link Gui}. * * @param structure The structure */ void applyStructure(@NotNull Structure structure); /** - * Finds all {@link Window Windows} that show this {@link GUI}. + * Finds all {@link Window Windows} that show this {@link Gui}. * - * @return The list of {@link Window} that show this {@link GUI} + * @return The list of {@link Window} that show this {@link Gui} */ - List findAllWindows(); + @NotNull List<@NotNull Window> findAllWindows(); /** * Finds all {@link Player Players} that are currently seeing this {@link Window}. * * @return The list of {@link Player Players} that are currently seeing this {@link Window} */ - Set findAllCurrentViewers(); + @NotNull Set<@NotNull Player> findAllCurrentViewers(); /** * Closes the open {@link Inventory} for all viewers of {@link Window Windows} - * where this {@link GUI} is displayed. - * Does not actually call the {@link Window#remove(boolean)} method, which will - * be indirectly invoked by the {@link InventoryCloseEvent} if the {@link Window} - * is set to close on that event. + * where this {@link Gui} is displayed. + *

+ * If the {@link Window Windows} are not marked as "retain", + * they will be removed from the {@link WindowManager} automatically. */ void closeForAllViewers(); @@ -245,7 +256,7 @@ public interface GUI { * @param animation The {@link Animation} to play. * @param filter The filter that selects which {@link SlotElement SlotElements} should be animated. */ - void playAnimation(@NotNull Animation animation, @Nullable Predicate filter); + void playAnimation(@NotNull Animation animation, @Nullable Predicate<@NotNull SlotElement> filter); /** * Cancels the running {@link Animation} if there is one. @@ -255,7 +266,7 @@ public interface GUI { // /** - * Fills the {@link GUI} with {@link Item Items}. + * Fills the {@link Gui} with {@link Item Items}. * * @param start The start index of the fill (inclusive) * @param end The end index of the fill (exclusive) @@ -265,7 +276,7 @@ public interface GUI { void fill(int start, int end, @Nullable Item item, boolean replaceExisting); /** - * Fills the entire {@link GUI} with {@link Item Items}. + * Fills the entire {@link Gui} with {@link Item Items}. * * @param item The {@link Item} that should be used or null to remove an existing item. * @param replaceExisting If existing {@link Item Items} should be replaced. @@ -291,7 +302,7 @@ public interface GUI { void fillColumn(int column, @Nullable Item item, boolean replaceExisting); /** - * Fills the borders of this {@link GUI} with a specific {@link Item} + * Fills the borders of this {@link Gui} with a specific {@link Item} * * @param item The {@link Item} that should be used or null to remove an existing item. * @param replaceExisting If existing {@link Item Items} should be replaced. @@ -299,7 +310,7 @@ public interface GUI { void fillBorders(@Nullable Item item, boolean replaceExisting); /** - * Fills a rectangle in this {@link GUI} with a specific {@link Item} + * Fills a rectangle in this {@link Gui} with a specific {@link Item} * * @param x The x coordinate where the rectangle should start. * @param y The y coordinate where the rectangle should start. @@ -311,33 +322,33 @@ public interface GUI { void fillRectangle(int x, int y, int width, int height, @Nullable Item item, boolean replaceExisting); /** - * Fills a rectangle with another {@link GUI} in this {@link GUI}. + * Fills a rectangle with another {@link Gui} in this {@link Gui}. * * @param x The x coordinate where the rectangle should start * @param y The y coordinate where the rectangle should start - * @param gui The {@link GUI} to be put into this {@link GUI} + * @param gui The {@link Gui} to be put into this {@link Gui} * @param replaceExisting If existing {@link SlotElement SlotElements} should be replaced. */ - void fillRectangle(int x, int y, @NotNull GUI gui, boolean replaceExisting); + void fillRectangle(int x, int y, @NotNull Gui gui, boolean replaceExisting); /** - * Fills a rectangle with a {@link VirtualInventory} in this {@link GUI}. + * Fills a rectangle with a {@link VirtualInventory} in this {@link Gui}. * * @param x The x coordinate where the rectangle should start * @param y The y coordinate where the rectangle should start * @param width The line length of the rectangle. (VirtualInventory does not define a width) - * @param virtualInventory The {@link VirtualInventory} to be put into this {@link GUI}. + * @param virtualInventory The {@link VirtualInventory} to be put into this {@link Gui}. * @param replaceExisting If existing {@link SlotElement SlotElements} should be replaced. */ void fillRectangle(int x, int y, int width, @NotNull VirtualInventory virtualInventory, boolean replaceExisting); /** - * Fills a rectangle with a {@link VirtualInventory} in this {@link GUI}. + * Fills a rectangle with a {@link VirtualInventory} in this {@link Gui}. * * @param x The x coordinate where the rectangle should start * @param y The y coordinate where the rectangle should start * @param width The line length of the rectangle. (VirtualInventory does not define a width) - * @param virtualInventory The {@link VirtualInventory} to be put into this {@link GUI}. + * @param virtualInventory The {@link VirtualInventory} to be put into this {@link Gui}. * @param background The {@link ItemProvider} for empty slots of the {@link VirtualInventory} * @param replaceExisting If existing {@link SlotElement SlotElements} should be replaced. */ diff --git a/invui/src/main/java/de/studiocode/invui/gui/GuiParent.java b/invui/src/main/java/de/studiocode/invui/gui/GuiParent.java new file mode 100644 index 0000000..245db24 --- /dev/null +++ b/invui/src/main/java/de/studiocode/invui/gui/GuiParent.java @@ -0,0 +1,13 @@ +package de.studiocode.invui.gui; + +public interface GuiParent { + + /** + * Called by the child {@link Gui} to report an update of a {@link SlotElement}. + * + * @param child The child {@link Gui} whose {@link SlotElement} has changed + * @param slotIndex The slot index of the changed {@link SlotElement} in the child {@link Gui} + */ + void handleSlotElementUpdate(Gui child, int slotIndex); + +} diff --git a/invui/src/main/java/de/studiocode/invui/gui/PagedGUI.java b/invui/src/main/java/de/studiocode/invui/gui/PagedGUI.java deleted file mode 100644 index 702ff22..0000000 --- a/invui/src/main/java/de/studiocode/invui/gui/PagedGUI.java +++ /dev/null @@ -1,106 +0,0 @@ -package de.studiocode.invui.gui; - -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.util.List; -import java.util.function.BiConsumer; - -public interface PagedGUI extends GUI { - - /** - * Gets the amount of pages this {@link PagedGUI} has. - * - * @return The amount of pages this {@link PagedGUI} has. - */ - int getPageAmount(); - - /** - * Gets the current page of this {@link PagedGUI} as an index. - * - * @return Gets the current page of this {@link PagedGUI} as an index. - */ - int getCurrentPage(); - - /** - * Sets the current page of this {@link PagedGUI}. - * - * @param page The page to set. - */ - void setPage(int page); - - /** - * Checks if there is a next page. - * - * @return Whether there is a next page. - */ - boolean hasNextPage(); - - /** - * Checks if there is a previous page. - * - * @return Whether there is a previous page. - */ - boolean hasPreviousPage(); - - /** - * Gets if there are infinite pages in this {@link PagedGUI}. - * - * @return Whether there are infinite pages in this {@link PagedGUI}. - */ - boolean hasInfinitePages(); - - /** - * Displays the next page if there is one. - */ - void goForward(); - - /** - * Displays the previous page if there is one. - */ - void goBack(); - - /** - * Gets the slot indices that are used to display content in this {@link PagedGUI}. - * - * @return The slot indices that are used to display content in this {@link PagedGUI}. - */ - int[] getContentListSlots(); - - /** - * Sets the content of this {@link PagedGUI} for all pages. - * - * @param content The content to set. - */ - void setContent(List<@Nullable C> content); - - /** - * Gets the registered page change handlers. - * - * @return The registered page change handlers. - */ - @Nullable - List> getPageChangeHandlers(); - - /** - * Replaces the currently registered page change handlers with the given list. - * - * @param handlers The new page change handlers. - */ - void setPageChangeHandlers(@Nullable List> handlers); - - /** - * Registers a page change handler. - * - * @param handler The handler to register. - */ - void registerPageChangeHandler(@NotNull BiConsumer handler); - - /** - * Unregisters a page change handler. - * - * @param handler The handler to unregister. - */ - void unregisterPageChangeHandler(@NotNull BiConsumer handler); - -} diff --git a/invui/src/main/java/de/studiocode/invui/gui/PagedGui.java b/invui/src/main/java/de/studiocode/invui/gui/PagedGui.java new file mode 100644 index 0000000..aece9a0 --- /dev/null +++ b/invui/src/main/java/de/studiocode/invui/gui/PagedGui.java @@ -0,0 +1,158 @@ +package de.studiocode.invui.gui; + +import de.studiocode.invui.gui.impl.PagedItemsGuiImpl; +import de.studiocode.invui.gui.impl.PagedNestedGuiImpl; +import de.studiocode.invui.gui.structure.Structure; +import de.studiocode.invui.item.Item; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.List; +import java.util.function.BiConsumer; + +@SuppressWarnings("deprecation") +public interface PagedGui extends Gui { + + /** + * Creates a new {@link PagedGui}. + * + * @param width The width of the {@link PagedGui}. + * @param height The height of the {@link PagedGui}. + * @param items The {@link Item Items} to use as in pages. + * @param contentListSlots The slots where content should be displayed. + * @return The created {@link PagedGui}. + */ + static @NotNull PagedGui ofItems(int width, int height, @NotNull List<@NotNull Item> items, int... contentListSlots) { + return new PagedItemsGuiImpl(width, height, items, contentListSlots); + } + + /** + * Creates a new {@link PagedGui}. + * + * @param structure The {@link Structure} to use. + * @param items The {@link Item Items} to use as in pages. + * @return The created {@link PagedGui}. + */ + static @NotNull PagedGui ofItems(Structure structure, @NotNull List<@NotNull Item> items) { + return new PagedItemsGuiImpl(items, structure); + } + + /** + * Creates a new {@link PagedGui}. + * + * @param width The width of the {@link PagedGui}. + * @param height The height of the {@link PagedGui}. + * @param guis The {@link Gui Guis} to use as pages. + * @param contentListSlots The slots where content should be displayed. + * @return The created {@link PagedGui}. + */ + static @NotNull PagedGui ofGuis(int width, int height, @NotNull List<@NotNull Gui> guis, int... contentListSlots) { + return new PagedNestedGuiImpl(width, height, guis, contentListSlots); + } + + /** + * Creates a new {@link PagedGui}. + * + * @param structure The {@link Structure} to use. + * @param guis The {@link Gui Guis} to use as pages. + * @return The created {@link PagedGui}. + */ + static @NotNull PagedGui ofGuis(Structure structure, @NotNull List<@NotNull Gui> guis) { + return new PagedNestedGuiImpl(guis, structure); + } + + /** + * Gets the amount of pages this {@link PagedGui} has. + * + * @return The amount of pages this {@link PagedGui} has. + */ + int getPageAmount(); + + /** + * Gets the current page of this {@link PagedGui} as an index. + * + * @return Gets the current page of this {@link PagedGui} as an index. + */ + int getCurrentPage(); + + /** + * Sets the current page of this {@link PagedGui}. + * + * @param page The page to set. + */ + void setPage(int page); + + /** + * Checks if there is a next page. + * + * @return Whether there is a next page. + */ + boolean hasNextPage(); + + /** + * Checks if there is a previous page. + * + * @return Whether there is a previous page. + */ + boolean hasPreviousPage(); + + /** + * Gets if there are infinite pages in this {@link PagedGui}. + * + * @return Whether there are infinite pages in this {@link PagedGui}. + */ + boolean hasInfinitePages(); + + /** + * Displays the next page if there is one. + */ + void goForward(); + + /** + * Displays the previous page if there is one. + */ + void goBack(); + + /** + * Gets the slot indices that are used to display content in this {@link PagedGui}. + * + * @return The slot indices that are used to display content in this {@link PagedGui}. + */ + int[] getContentListSlots(); + + /** + * Sets the content of this {@link PagedGui} for all pages. + * + * @param content The content to set. + */ + void setContent(List<@Nullable C> content); + + /** + * Gets the registered page change handlers. + * + * @return The registered page change handlers. + */ + @Nullable List<@NotNull BiConsumer> getPageChangeHandlers(); + + /** + * Replaces the currently registered page change handlers with the given list. + * + * @param handlers The new page change handlers. + */ + void setPageChangeHandlers(@Nullable List<@NotNull BiConsumer> handlers); + + /** + * Registers a page change handler. + * + * @param handler The handler to register. + */ + void registerPageChangeHandler(@NotNull BiConsumer handler); + + /** + * Unregisters a page change handler. + * + * @param handler The handler to unregister. + */ + void unregisterPageChangeHandler(@NotNull BiConsumer handler); + +} diff --git a/invui/src/main/java/de/studiocode/invui/gui/ScrollGUI.java b/invui/src/main/java/de/studiocode/invui/gui/ScrollGUI.java deleted file mode 100644 index 5fe63e5..0000000 --- a/invui/src/main/java/de/studiocode/invui/gui/ScrollGUI.java +++ /dev/null @@ -1,49 +0,0 @@ -package de.studiocode.invui.gui; - -import java.util.List; - -public interface ScrollGUI extends GUI { - - /** - * Gets the current line of this {@link ScrollGUI}. - * - * @return The current line of this {@link ScrollGUI}. - */ - int getCurrentLine(); - - /** - * Gets the max line index of this {@link ScrollGUI}. - * - * @return The max line index of this {@link ScrollGUI}. - */ - int getMaxLine(); - - /** - * Sets the current line of this {@link ScrollGUI}. - * - * @param line The line to set. - */ - void setCurrentLine(int line); - - /** - * Checks if it is possible to scroll the specified amount of lines. - * - * @return Whether it is possible to scroll the specified amount of lines. - */ - boolean canScroll(int lines); - - /** - * Scrolls the specified amount of lines. - * - * @param lines The amount of lines to scroll. - */ - void scroll(int lines); - - /** - * Sets the content of this {@link ScrollGUI} for all lines. - * - * @param content The content to set. - */ - void setContent(List content); - -} diff --git a/invui/src/main/java/de/studiocode/invui/gui/ScrollGui.java b/invui/src/main/java/de/studiocode/invui/gui/ScrollGui.java new file mode 100644 index 0000000..c5469dd --- /dev/null +++ b/invui/src/main/java/de/studiocode/invui/gui/ScrollGui.java @@ -0,0 +1,130 @@ +package de.studiocode.invui.gui; + +import de.studiocode.invui.gui.impl.ScrollItemsGuiImpl; +import de.studiocode.invui.gui.impl.ScrollNestedGuiImpl; +import de.studiocode.invui.gui.impl.ScrollVIGuiImpl; +import de.studiocode.invui.gui.structure.Structure; +import de.studiocode.invui.item.Item; +import de.studiocode.invui.virtualinventory.VirtualInventory; +import org.jetbrains.annotations.NotNull; + +import java.util.List; + +@SuppressWarnings("deprecation") +public interface ScrollGui extends Gui { + + /** + * Creates a new {@link ScrollGui}. + * + * @param width The width of the {@link ScrollGui}. + * @param height The height of the {@link ScrollGui}. + * @param items The {@link Item Items} to use. + * @param contentListSlots The slots where content should be displayed. + * @return The created {@link ScrollGui}. + */ + static @NotNull ScrollGui ofItems(int width, int height, @NotNull List<@NotNull Item> items, int... contentListSlots) { + return new ScrollItemsGuiImpl(width, height, items, contentListSlots); + } + + /** + * Creates a new {@link ScrollGui}. + * + * @param structure The {@link Structure} to use. + * @param items The {@link Item Items} to use. + * @return The created {@link ScrollGui}. + */ + static @NotNull ScrollGui ofItems(@NotNull Structure structure, @NotNull List<@NotNull Item> items) { + return new ScrollItemsGuiImpl(items, structure); + } + + /** + * Creates a new {@link ScrollGui}. + * + * @param width The width of the {@link ScrollGui}. + * @param height The height of the {@link ScrollGui}. + * @param guis The {@link Gui Guis} to use. + * @param contentListSlots The slots where content should be displayed. + * @return The created {@link ScrollGui}. + */ + static @NotNull ScrollGui ofGuis(int width, int height, @NotNull List<@NotNull Gui> guis, int... contentListSlots) { + return new ScrollNestedGuiImpl(width, height, guis, contentListSlots); + } + + /** + * Creates a new {@link ScrollGui}. + * + * @param structure The {@link Structure} to use. + * @param guis The {@link Gui Guis} to use. + * @return The created {@link ScrollGui}. + */ + static @NotNull ScrollGui ofGuis(Structure structure, @NotNull List<@NotNull Gui> guis) { + return new ScrollNestedGuiImpl(guis, structure); + } + + /** + * Creates a new {@link ScrollGui}. + * + * @param width The width of the {@link ScrollGui}. + * @param height The height of the {@link ScrollGui}. + * @param inventories The {@link VirtualInventory VirtualInventories} to use. + * @param contentListSlots The slots where content should be displayed. + * @return The created {@link ScrollGui}. + */ + static @NotNull ScrollGui ofInventories(int width, int height, @NotNull List<@NotNull VirtualInventory> inventories, int... contentListSlots) { + return new ScrollVIGuiImpl(width, height, inventories, contentListSlots); + } + + /** + * Creates a new {@link ScrollGui}. + * + * @param structure The {@link Structure} to use. + * @param inventories The {@link VirtualInventory VirtualInventories} to use. + * @return The created {@link ScrollGui}. + */ + static @NotNull ScrollGui ofInventories(@NotNull Structure structure, @NotNull List<@NotNull VirtualInventory> inventories) { + return new ScrollVIGuiImpl(inventories, structure); + } + + /** + * Gets the current line of this {@link ScrollGui}. + * + * @return The current line of this {@link ScrollGui}. + */ + int getCurrentLine(); + + /** + * Gets the max line index of this {@link ScrollGui}. + * + * @return The max line index of this {@link ScrollGui}. + */ + int getMaxLine(); + + /** + * Sets the current line of this {@link ScrollGui}. + * + * @param line The line to set. + */ + void setCurrentLine(int line); + + /** + * Checks if it is possible to scroll the specified amount of lines. + * + * @return Whether it is possible to scroll the specified amount of lines. + */ + boolean canScroll(int lines); + + /** + * Scrolls the specified amount of lines. + * + * @param lines The amount of lines to scroll. + */ + void scroll(int lines); + + /** + * Sets the content of this {@link ScrollGui} for all lines. + * + * @param content The content to set. + */ + void setContent(@NotNull List<@NotNull C> content); + +} diff --git a/invui/src/main/java/de/studiocode/invui/gui/SlotElement.java b/invui/src/main/java/de/studiocode/invui/gui/SlotElement.java index 05f6604..0c4668b 100644 --- a/invui/src/main/java/de/studiocode/invui/gui/SlotElement.java +++ b/invui/src/main/java/de/studiocode/invui/gui/SlotElement.java @@ -90,23 +90,23 @@ public interface SlotElement { } /** - * Links to a slot in another {@link GUI} + * Links to a slot in another {@link Gui} */ class LinkedSlotElement implements SlotElement { - private final GUI gui; + private final Gui gui; private final int slot; - public LinkedSlotElement(GUI gui, int slot) { - if (!(gui instanceof AbstractGUI)) - throw new IllegalArgumentException("Illegal GUI implementation"); + public LinkedSlotElement(Gui gui, int slot) { + if (!(gui instanceof AbstractGui)) + throw new IllegalArgumentException("Illegal Gui implementation"); this.gui = gui; this.slot = slot; } - public GUI getGUI() { + public Gui getGui() { return gui; } @@ -118,18 +118,18 @@ public interface SlotElement { public SlotElement getHoldingElement() { LinkedSlotElement element = this; while (true) { - SlotElement below = element.getGUI().getSlotElement(element.getSlotIndex()); + SlotElement below = element.getGui().getSlotElement(element.getSlotIndex()); if (below instanceof LinkedSlotElement) element = (LinkedSlotElement) below; else return below; } } - public List getGUIList() { - ArrayList guis = new ArrayList<>(); + public List getGuiList() { + ArrayList guis = new ArrayList<>(); LinkedSlotElement element = this; while (true) { - guis.add(element.getGUI()); - SlotElement below = element.getGUI().getSlotElement(element.getSlotIndex()); + guis.add(element.getGui()); + SlotElement below = element.getGui().getSlotElement(element.getSlotIndex()); if (below instanceof LinkedSlotElement) element = (LinkedSlotElement) below; else break; diff --git a/invui/src/main/java/de/studiocode/invui/gui/TabGUI.java b/invui/src/main/java/de/studiocode/invui/gui/TabGui.java similarity index 51% rename from invui/src/main/java/de/studiocode/invui/gui/TabGUI.java rename to invui/src/main/java/de/studiocode/invui/gui/TabGui.java index 0dd6797..c1bd6fa 100644 --- a/invui/src/main/java/de/studiocode/invui/gui/TabGUI.java +++ b/invui/src/main/java/de/studiocode/invui/gui/TabGui.java @@ -1,12 +1,39 @@ package de.studiocode.invui.gui; +import de.studiocode.invui.gui.impl.TabGuiImpl; +import de.studiocode.invui.gui.structure.Structure; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.List; import java.util.function.BiConsumer; -public interface TabGUI extends GUI { +@SuppressWarnings("deprecation") +public interface TabGui extends Gui { + + /** + * Creates a new {@link TabGui}. + * + * @param width The width of the {@link TabGui}. + * @param height The height of the {@link TabGui}. + * @param tabs The {@link Gui Guis} to use as tabs. + * @param contentListSlots The slots where content should be displayed. + * @return The created {@link TabGui}. + */ + static @NotNull TabGui of(int width, int height, @NotNull List<@Nullable Gui> tabs, int... contentListSlots) { + return new TabGuiImpl(width, height, tabs, contentListSlots); + } + + /** + * Creates a new {@link TabGui}. + * + * @param structure The {@link Structure} to use. + * @param tabs The {@link Gui Guis} to use as tabs. + * @return The created {@link TabGui}. + */ + static @NotNull TabGui of(Structure structure, @NotNull List<@Nullable Gui> tabs) { + return new TabGuiImpl(tabs, structure); + } /** * Gets the current tab index. @@ -32,24 +59,24 @@ public interface TabGUI extends GUI { /** * Gets the configured tabs. + * * @return The configured tabs. */ - List getTabs(); + @NotNull List<@Nullable Gui> getTabs(); /** * Gets the registered tab change handlers. * * @return The registered tab change handlers. */ - @Nullable - List> getTabChangeHandlers(); + @Nullable List<@NotNull BiConsumer> getTabChangeHandlers(); /** * Replaces the currently registered tab change handlers with the given list. * * @param handlers The new page change handlers. */ - void setTabChangeHandlers(@Nullable List> handlers); + void setTabChangeHandlers(@Nullable List<@NotNull BiConsumer> handlers); /** * Registers a page change handler. diff --git a/invui/src/main/java/de/studiocode/invui/gui/builder/GUIBuilder.java b/invui/src/main/java/de/studiocode/invui/gui/builder/GuiBuilder.java similarity index 65% rename from invui/src/main/java/de/studiocode/invui/gui/builder/GUIBuilder.java rename to invui/src/main/java/de/studiocode/invui/gui/builder/GuiBuilder.java index 93080e9..862f1cc 100644 --- a/invui/src/main/java/de/studiocode/invui/gui/builder/GUIBuilder.java +++ b/invui/src/main/java/de/studiocode/invui/gui/builder/GuiBuilder.java @@ -1,8 +1,8 @@ package de.studiocode.invui.gui.builder; -import de.studiocode.invui.gui.GUI; +import de.studiocode.invui.gui.Gui; import de.studiocode.invui.gui.SlotElement; -import de.studiocode.invui.gui.builder.guitype.GUIType; +import de.studiocode.invui.gui.builder.guitype.GuiType; import de.studiocode.invui.gui.structure.Marker; import de.studiocode.invui.gui.structure.Structure; import de.studiocode.invui.item.Item; @@ -19,85 +19,85 @@ import java.util.function.Supplier; /** - * A builder class to easily construct {@link GUI}s.
+ * A builder class to easily construct {@link Gui}s.
* It provides similar functionality to Bukkit's {@link ShapedRecipe}, as it - * allows for a structure String which defines the layout of the {@link GUI}. + * allows for a structure String which defines the layout of the {@link Gui}. */ -public class GUIBuilder { +public class GuiBuilder { - protected final GUIType guiType; - protected final GUIContext context; + protected final GuiType guiType; + protected final GuiContext context; - public GUIBuilder(@NotNull GUIType guiType) { + public GuiBuilder(@NotNull GuiType guiType) { this.guiType = guiType; - this.context = new GUIContext<>(); + this.context = new GuiContext<>(); } - public GUIBuilder setStructure(int width, int height, @NotNull String structureData) { + public GuiBuilder setStructure(int width, int height, @NotNull String structureData) { context.setStructure(new Structure(width, height, structureData)); return this; } - public GUIBuilder setStructure(@NotNull String... structureData) { + public GuiBuilder setStructure(@NotNull String... structureData) { return setStructure(new Structure(structureData)); } - public GUIBuilder setStructure(@NotNull Structure structure) { + public GuiBuilder setStructure(@NotNull Structure structure) { context.setStructure(structure); return this; } - public GUIBuilder addIngredient(char key, @NotNull ItemStack itemStack) { + public GuiBuilder addIngredient(char key, @NotNull ItemStack itemStack) { context.getStructure().addIngredient(key, itemStack); return this; } - public GUIBuilder addIngredient(char key, @NotNull ItemProvider itemProvider) { + public GuiBuilder addIngredient(char key, @NotNull ItemProvider itemProvider) { context.getStructure().addIngredient(key, itemProvider); return this; } - public GUIBuilder addIngredient(char key, @NotNull Item item) { + public GuiBuilder addIngredient(char key, @NotNull Item item) { context.getStructure().addIngredient(key, item); return this; } - public GUIBuilder addIngredient(char key, @NotNull VirtualInventory inventory) { + public GuiBuilder addIngredient(char key, @NotNull VirtualInventory inventory) { context.getStructure().addIngredient(key, inventory); return this; } - public GUIBuilder addIngredient(char key, @NotNull VirtualInventory inventory, @Nullable ItemProvider background) { + public GuiBuilder addIngredient(char key, @NotNull VirtualInventory inventory, @Nullable ItemProvider background) { context.getStructure().addIngredient(key, inventory, background); return this; } - public GUIBuilder addIngredient(char key, @NotNull SlotElement element) { + public GuiBuilder addIngredient(char key, @NotNull SlotElement element) { context.getStructure().addIngredient(key, element); return this; } - public GUIBuilder addIngredient(char key, @NotNull Marker marker) { + public GuiBuilder addIngredient(char key, @NotNull Marker marker) { context.getStructure().addIngredient(key, marker); return this; } - public GUIBuilder addIngredient(char key, @NotNull Supplier itemSupplier) { + public GuiBuilder addIngredient(char key, @NotNull Supplier itemSupplier) { context.getStructure().addIngredient(key, itemSupplier); return this; } - public GUIBuilder addIngredientElementSupplier(char key, @NotNull Supplier elementSupplier) { + public GuiBuilder addIngredientElementSupplier(char key, @NotNull Supplier elementSupplier) { context.getStructure().addIngredientElementSupplier(key, elementSupplier); return this; } - public GUIBuilder setContent(@NotNull List content) { + public GuiBuilder setContent(@NotNull List content) { context.setContent(content); return this; } - public GUIBuilder addContent(@NotNull C content) { + public GuiBuilder addContent(@NotNull C content) { if (context.getContent() == null) context.setContent(new ArrayList<>()); @@ -107,9 +107,9 @@ public class GUIBuilder { public G build() { if (context.getStructure() == null) - throw new IllegalStateException("GUIContext has not been set yet."); + throw new IllegalStateException("GuiContext has not been set yet."); - return guiType.createGUI(context); + return guiType.createGui(context); } } diff --git a/invui/src/main/java/de/studiocode/invui/gui/builder/GUIContext.java b/invui/src/main/java/de/studiocode/invui/gui/builder/GuiContext.java similarity index 75% rename from invui/src/main/java/de/studiocode/invui/gui/builder/GUIContext.java rename to invui/src/main/java/de/studiocode/invui/gui/builder/GuiContext.java index 3ce15a8..8db6b61 100644 --- a/invui/src/main/java/de/studiocode/invui/gui/builder/GUIContext.java +++ b/invui/src/main/java/de/studiocode/invui/gui/builder/GuiContext.java @@ -1,7 +1,7 @@ package de.studiocode.invui.gui.builder; -import de.studiocode.invui.gui.GUI; -import de.studiocode.invui.gui.builder.guitype.GUIType; +import de.studiocode.invui.gui.Gui; +import de.studiocode.invui.gui.builder.guitype.GuiType; import de.studiocode.invui.gui.structure.Structure; import de.studiocode.invui.item.ItemProvider; import org.jetbrains.annotations.NotNull; @@ -9,10 +9,10 @@ import org.jetbrains.annotations.NotNull; import java.util.List; /** - * The {@link GUIContext} contains all information from the {@link GUIBuilder} to be passed to - * an instance of {@link GUIType} to create a new {@link GUI}. + * The {@link GuiContext} contains all information from the {@link GuiBuilder} to be passed to + * an instance of {@link GuiType} to create a new {@link Gui}. */ -public class GUIContext { +public class GuiContext { private Structure structure; private ItemProvider background; diff --git a/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/GUIType.java b/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/GUIType.java deleted file mode 100644 index 5664bfb..0000000 --- a/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/GUIType.java +++ /dev/null @@ -1,29 +0,0 @@ -package de.studiocode.invui.gui.builder.guitype; - -import de.studiocode.invui.gui.GUI; -import de.studiocode.invui.gui.PagedGUI; -import de.studiocode.invui.gui.ScrollGUI; -import de.studiocode.invui.gui.TabGUI; -import de.studiocode.invui.gui.builder.GUIContext; -import de.studiocode.invui.item.Item; -import de.studiocode.invui.virtualinventory.VirtualInventory; - -public interface GUIType { - - GUIType NORMAL = new NormalGUIType(); - GUIType, Item> PAGED_ITEMS = new PagedItemsGUIType(); - GUIType, GUI> PAGED_GUIs = new PagedGUIsGUIType(); - GUIType TAB = new TabGUIType(); - GUIType, Item> SCROLL_ITEMS = new ScrollItemsGUIType(); - GUIType, GUI> SCROLL_GUIS = new ScrollGUIsGUIType(); - GUIType, VirtualInventory> SCROLL_INVENTORY = new ScrollVIGUIType(); - - /** - * Creates a {@link GUI} of type {@link G} with the given {@link GUIContext} - * - * @param context The {@link GUIContext} to create the {@link G} from. - * @return The created {@link G} - */ - G createGUI(GUIContext context); - -} diff --git a/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/GuiType.java b/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/GuiType.java new file mode 100644 index 0000000..1f71ea0 --- /dev/null +++ b/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/GuiType.java @@ -0,0 +1,29 @@ +package de.studiocode.invui.gui.builder.guitype; + +import de.studiocode.invui.gui.Gui; +import de.studiocode.invui.gui.PagedGui; +import de.studiocode.invui.gui.ScrollGui; +import de.studiocode.invui.gui.TabGui; +import de.studiocode.invui.gui.builder.GuiContext; +import de.studiocode.invui.item.Item; +import de.studiocode.invui.virtualinventory.VirtualInventory; + +public interface GuiType { + + GuiType NORMAL = new NormalGuiType(); + GuiType, Item> PAGED_ITEMS = new PagedItemsGuiType(); + GuiType, Gui> PAGED_Guis = new PagedGuisGuiType(); + GuiType TAB = new TabGuiType(); + GuiType, Item> SCROLL_ITEMS = new ScrollItemsGuiType(); + GuiType, Gui> SCROLL_GuiS = new ScrollGuisGuiType(); + GuiType, VirtualInventory> SCROLL_INVENTORY = new ScrollVIGuiType(); + + /** + * Creates a {@link Gui} of type {@link G} with the given {@link GuiContext} + * + * @param context The {@link GuiContext} to create the {@link G} from. + * @return The created {@link G} + */ + G createGui(GuiContext context); + +} diff --git a/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/NormalGUIType.java b/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/NormalGUIType.java index 263d419..5bb2da2 100644 --- a/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/NormalGUIType.java +++ b/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/NormalGUIType.java @@ -1,14 +1,14 @@ package de.studiocode.invui.gui.builder.guitype; -import de.studiocode.invui.gui.GUI; -import de.studiocode.invui.gui.builder.GUIContext; -import de.studiocode.invui.gui.impl.NormalGUIImpl; +import de.studiocode.invui.gui.Gui; +import de.studiocode.invui.gui.builder.GuiContext; +import de.studiocode.invui.gui.impl.NormalGuiImpl; -class NormalGUIType implements GUIType { +class NormalGuiType implements GuiType { @Override - public NormalGUIImpl createGUI(GUIContext context) { - NormalGUIImpl gui = new NormalGUIImpl(context.getStructure()); + public NormalGuiImpl createGui(GuiContext context) { + NormalGuiImpl gui = new NormalGuiImpl(context.getStructure()); gui.setBackground(context.getBackground()); return gui; } diff --git a/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/PagedGUIsGUIType.java b/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/PagedGUIsGUIType.java index c31f1d5..ae0abf3 100644 --- a/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/PagedGUIsGUIType.java +++ b/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/PagedGUIsGUIType.java @@ -1,15 +1,15 @@ package de.studiocode.invui.gui.builder.guitype; -import de.studiocode.invui.gui.GUI; -import de.studiocode.invui.gui.PagedGUI; -import de.studiocode.invui.gui.builder.GUIContext; -import de.studiocode.invui.gui.impl.PageNestedGUIImpl; +import de.studiocode.invui.gui.Gui; +import de.studiocode.invui.gui.PagedGui; +import de.studiocode.invui.gui.builder.GuiContext; +import de.studiocode.invui.gui.impl.PagedNestedGuiImpl; -class PagedGUIsGUIType implements GUIType, GUI> { +class PagedGuisGuiType implements GuiType, Gui> { @Override - public PageNestedGUIImpl createGUI(GUIContext context) { - PageNestedGUIImpl gui = new PageNestedGUIImpl(context.getContent(), context.getStructure()); + public PagedNestedGuiImpl createGui(GuiContext context) { + PagedNestedGuiImpl gui = new PagedNestedGuiImpl(context.getContent(), context.getStructure()); gui.setBackground(context.getBackground()); return gui; } diff --git a/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/PagedItemsGUIType.java b/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/PagedItemsGUIType.java index 02d83ce..9227b5a 100644 --- a/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/PagedItemsGUIType.java +++ b/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/PagedItemsGUIType.java @@ -1,15 +1,15 @@ package de.studiocode.invui.gui.builder.guitype; -import de.studiocode.invui.gui.PagedGUI; -import de.studiocode.invui.gui.builder.GUIContext; -import de.studiocode.invui.gui.impl.PagedItemsGUIImpl; +import de.studiocode.invui.gui.PagedGui; +import de.studiocode.invui.gui.builder.GuiContext; +import de.studiocode.invui.gui.impl.PagedItemsGuiImpl; import de.studiocode.invui.item.Item; -class PagedItemsGUIType implements GUIType, Item> { +class PagedItemsGuiType implements GuiType, Item> { @Override - public PagedItemsGUIImpl createGUI(GUIContext context) { - PagedItemsGUIImpl gui = new PagedItemsGUIImpl(context.getContent(), context.getStructure()); + public PagedItemsGuiImpl createGui(GuiContext context) { + PagedItemsGuiImpl gui = new PagedItemsGuiImpl(context.getContent(), context.getStructure()); gui.setBackground(context.getBackground()); return gui; } diff --git a/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/ScrollGUIsGUIType.java b/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/ScrollGUIsGUIType.java index 561f144..f57255b 100644 --- a/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/ScrollGUIsGUIType.java +++ b/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/ScrollGUIsGUIType.java @@ -1,15 +1,15 @@ package de.studiocode.invui.gui.builder.guitype; -import de.studiocode.invui.gui.GUI; -import de.studiocode.invui.gui.ScrollGUI; -import de.studiocode.invui.gui.builder.GUIContext; -import de.studiocode.invui.gui.impl.ScrollNestedGUIImpl; +import de.studiocode.invui.gui.Gui; +import de.studiocode.invui.gui.ScrollGui; +import de.studiocode.invui.gui.builder.GuiContext; +import de.studiocode.invui.gui.impl.ScrollNestedGuiImpl; -class ScrollGUIsGUIType implements GUIType, GUI> { +class ScrollGuisGuiType implements GuiType, Gui> { @Override - public ScrollNestedGUIImpl createGUI(GUIContext context) { - ScrollNestedGUIImpl gui = new ScrollNestedGUIImpl(context.getContent(), context.getStructure()); + public ScrollNestedGuiImpl createGui(GuiContext context) { + ScrollNestedGuiImpl gui = new ScrollNestedGuiImpl(context.getContent(), context.getStructure()); gui.setBackground(gui.getBackground()); return gui; } diff --git a/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/ScrollItemsGUIType.java b/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/ScrollItemsGUIType.java index ffc18f9..e0af35d 100644 --- a/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/ScrollItemsGUIType.java +++ b/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/ScrollItemsGUIType.java @@ -1,15 +1,15 @@ package de.studiocode.invui.gui.builder.guitype; -import de.studiocode.invui.gui.ScrollGUI; -import de.studiocode.invui.gui.builder.GUIContext; -import de.studiocode.invui.gui.impl.ScrollItemsGUIImpl; +import de.studiocode.invui.gui.ScrollGui; +import de.studiocode.invui.gui.builder.GuiContext; +import de.studiocode.invui.gui.impl.ScrollItemsGuiImpl; import de.studiocode.invui.item.Item; -class ScrollItemsGUIType implements GUIType, Item> { +class ScrollItemsGuiType implements GuiType, Item> { @Override - public ScrollItemsGUIImpl createGUI(GUIContext context) { - ScrollItemsGUIImpl gui = new ScrollItemsGUIImpl(context.getContent(), context.getStructure()); + public ScrollItemsGuiImpl createGui(GuiContext context) { + ScrollItemsGuiImpl gui = new ScrollItemsGuiImpl(context.getContent(), context.getStructure()); gui.setBackground(context.getBackground()); return gui; } diff --git a/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/ScrollVIGUIType.java b/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/ScrollVIGUIType.java index 1320639..a75ef0b 100644 --- a/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/ScrollVIGUIType.java +++ b/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/ScrollVIGUIType.java @@ -1,15 +1,15 @@ package de.studiocode.invui.gui.builder.guitype; -import de.studiocode.invui.gui.ScrollGUI; -import de.studiocode.invui.gui.builder.GUIContext; -import de.studiocode.invui.gui.impl.ScrollVIGUIImpl; +import de.studiocode.invui.gui.ScrollGui; +import de.studiocode.invui.gui.builder.GuiContext; +import de.studiocode.invui.gui.impl.ScrollVIGuiImpl; import de.studiocode.invui.virtualinventory.VirtualInventory; -class ScrollVIGUIType implements GUIType, VirtualInventory> { +class ScrollVIGuiType implements GuiType, VirtualInventory> { @Override - public ScrollVIGUIImpl createGUI(GUIContext context) { - ScrollVIGUIImpl gui = new ScrollVIGUIImpl(context.getContent(), context.getStructure()); + public ScrollVIGuiImpl createGui(GuiContext context) { + ScrollVIGuiImpl gui = new ScrollVIGuiImpl(context.getContent(), context.getStructure()); gui.setBackground(context.getBackground()); return gui; } diff --git a/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/TabGUIType.java b/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/TabGUIType.java index 6fb6949..d3d851b 100644 --- a/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/TabGUIType.java +++ b/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/TabGUIType.java @@ -1,15 +1,15 @@ package de.studiocode.invui.gui.builder.guitype; -import de.studiocode.invui.gui.GUI; -import de.studiocode.invui.gui.TabGUI; -import de.studiocode.invui.gui.builder.GUIContext; -import de.studiocode.invui.gui.impl.TabGUIImpl; +import de.studiocode.invui.gui.Gui; +import de.studiocode.invui.gui.TabGui; +import de.studiocode.invui.gui.builder.GuiContext; +import de.studiocode.invui.gui.impl.TabGuiImpl; -class TabGUIType implements GUIType { +class TabGuiType implements GuiType { @Override - public TabGUIImpl createGUI(GUIContext context) { - TabGUIImpl gui = new TabGUIImpl(context.getContent(), context.getStructure()); + public TabGuiImpl createGui(GuiContext context) { + TabGuiImpl gui = new TabGuiImpl(context.getContent(), context.getStructure()); gui.setBackground(context.getBackground()); return gui; } diff --git a/invui/src/main/java/de/studiocode/invui/gui/impl/NormalGUIImpl.java b/invui/src/main/java/de/studiocode/invui/gui/impl/NormalGUIImpl.java deleted file mode 100644 index 54afd58..0000000 --- a/invui/src/main/java/de/studiocode/invui/gui/impl/NormalGUIImpl.java +++ /dev/null @@ -1,22 +0,0 @@ -package de.studiocode.invui.gui.impl; - -import de.studiocode.invui.gui.AbstractGUI; -import de.studiocode.invui.gui.GUI; -import de.studiocode.invui.gui.structure.Structure; -import org.jetbrains.annotations.NotNull; - -/** - * A normal {@link GUI} without any special features. - */ -public final class NormalGUIImpl extends AbstractGUI { - - public NormalGUIImpl(int width, int height) { - super(width, height); - } - - public NormalGUIImpl(@NotNull Structure structure) { - super(structure.getWidth(), structure.getHeight()); - applyStructure(structure); - } - -} diff --git a/invui/src/main/java/de/studiocode/invui/gui/impl/NormalGuiImpl.java b/invui/src/main/java/de/studiocode/invui/gui/impl/NormalGuiImpl.java new file mode 100644 index 0000000..c684dc8 --- /dev/null +++ b/invui/src/main/java/de/studiocode/invui/gui/impl/NormalGuiImpl.java @@ -0,0 +1,38 @@ +package de.studiocode.invui.gui.impl; + +import de.studiocode.invui.gui.AbstractGui; +import de.studiocode.invui.gui.Gui; +import de.studiocode.invui.gui.structure.Structure; +import org.jetbrains.annotations.NotNull; + +/** + * A normal {@link Gui} without any special features. + */ +@SuppressWarnings("DeprecatedIsStillUsed") +public final class NormalGuiImpl extends AbstractGui { + + /** + * Creates a new {@link NormalGuiImpl}. + * + * @param width The width of this Gui. + * @param height The height of this Gui. + * @deprecated Use {@link Gui#empty(int, int)} instead. + */ + @Deprecated + public NormalGuiImpl(int width, int height) { + super(width, height); + } + + /** + * Creates a new {@link NormalGuiImpl}. + * + * @param structure The {@link Structure} to use. + * @deprecated Use {@link Gui#of(Structure)} instead. + */ + @Deprecated + public NormalGuiImpl(@NotNull Structure structure) { + super(structure.getWidth(), structure.getHeight()); + applyStructure(structure); + } + +} diff --git a/invui/src/main/java/de/studiocode/invui/gui/impl/PageNestedGUIImpl.java b/invui/src/main/java/de/studiocode/invui/gui/impl/PageNestedGUIImpl.java deleted file mode 100644 index 152834b..0000000 --- a/invui/src/main/java/de/studiocode/invui/gui/impl/PageNestedGUIImpl.java +++ /dev/null @@ -1,59 +0,0 @@ -package de.studiocode.invui.gui.impl; - -import de.studiocode.invui.gui.AbstractPagedGUI; -import de.studiocode.invui.gui.GUI; -import de.studiocode.invui.gui.SlotElement; -import de.studiocode.invui.gui.builder.GUIBuilder; -import de.studiocode.invui.gui.structure.Structure; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.util.ArrayList; -import java.util.List; -import java.util.stream.Collectors; -import java.util.stream.IntStream; - -/** - * A {@link AbstractPagedGUI} where every page is its own {@link GUI}. - * - * @see GUIBuilder - * @see PagedItemsGUIImpl - */ -public final class PageNestedGUIImpl extends AbstractPagedGUI { - - private List guis; - - public PageNestedGUIImpl(int width, int height, @Nullable List guis, int... contentListSlots) { - super(width, height, false, contentListSlots); - setContent(guis); - } - - public PageNestedGUIImpl(@Nullable List guis, @NotNull Structure structure) { - super(structure.getWidth(), structure.getHeight(), false, structure); - setContent(guis); - } - - @Override - public int getPageAmount() { - return guis.size(); - } - - @Override - public void setContent(@Nullable List guis) { - this.guis = guis == null ? new ArrayList<>() : guis; - update(); - } - - @Override - protected List getPageElements(int page) { - if (guis.size() <= page) return new ArrayList<>(); - - GUI gui = guis.get(page); - int size = gui.getSize(); - - return IntStream.range(0, size) - .mapToObj(i -> new SlotElement.LinkedSlotElement(gui, i)) - .collect(Collectors.toList()); - } - -} diff --git a/invui/src/main/java/de/studiocode/invui/gui/impl/PagedItemsGUIImpl.java b/invui/src/main/java/de/studiocode/invui/gui/impl/PagedItemsGuiImpl.java similarity index 55% rename from invui/src/main/java/de/studiocode/invui/gui/impl/PagedItemsGUIImpl.java rename to invui/src/main/java/de/studiocode/invui/gui/impl/PagedItemsGuiImpl.java index cfd3b0d..d8c994d 100644 --- a/invui/src/main/java/de/studiocode/invui/gui/impl/PagedItemsGUIImpl.java +++ b/invui/src/main/java/de/studiocode/invui/gui/impl/PagedItemsGuiImpl.java @@ -1,9 +1,10 @@ package de.studiocode.invui.gui.impl; -import de.studiocode.invui.gui.AbstractPagedGUI; +import de.studiocode.invui.gui.AbstractPagedGui; +import de.studiocode.invui.gui.PagedGui; import de.studiocode.invui.gui.SlotElement; import de.studiocode.invui.gui.SlotElement.ItemSlotElement; -import de.studiocode.invui.gui.builder.GUIBuilder; +import de.studiocode.invui.gui.builder.GuiBuilder; import de.studiocode.invui.gui.structure.Structure; import de.studiocode.invui.item.Item; import org.jetbrains.annotations.NotNull; @@ -15,22 +16,41 @@ import java.util.function.BiConsumer; import java.util.stream.Collectors; /** - * A {@link AbstractPagedGUI} that is filled with {@link Item}s. + * A {@link AbstractPagedGui} that is filled with {@link Item}s. * - * @see GUIBuilder - * @see PageNestedGUIImpl + * @see GuiBuilder + * @see PagedNestedGuiImpl */ -public final class PagedItemsGUIImpl extends AbstractPagedGUI { +@SuppressWarnings("DeprecatedIsStillUsed") +public final class PagedItemsGuiImpl extends AbstractPagedGui { private List items; private List> pageChangeHandlers; - public PagedItemsGUIImpl(int width, int height, @Nullable List items, int... contentListSlots) { + /** + * Creates a new {@link PagedItemsGuiImpl}. + * + * @param width The width of this Gui. + * @param height The height of this Gui. + * @param items The {@link Item Items} to use as pages. + * @param contentListSlots The slots where content should be displayed. + * @deprecated Use {@link PagedGui#ofItems(int, int, List, int...)} instead. + */ + @Deprecated + public PagedItemsGuiImpl(int width, int height, @Nullable List items, int... contentListSlots) { super(width, height, false, contentListSlots); setContent(items); } - public PagedItemsGUIImpl(@Nullable List items, @NotNull Structure structure) { + /** + * Creates a new {@link PagedItemsGuiImpl}. + * + * @param items The {@link Item Items} to use as pages. + * @param structure The {@link Structure} to use. + * @deprecated Use {@link PagedGui#ofItems(Structure, List)} instead. + */ + @Deprecated + public PagedItemsGuiImpl(@Nullable List items, @NotNull Structure structure) { super(structure.getWidth(), structure.getHeight(), false, structure); setContent(items); } diff --git a/invui/src/main/java/de/studiocode/invui/gui/impl/PagedNestedGuiImpl.java b/invui/src/main/java/de/studiocode/invui/gui/impl/PagedNestedGuiImpl.java new file mode 100644 index 0000000..1e0a161 --- /dev/null +++ b/invui/src/main/java/de/studiocode/invui/gui/impl/PagedNestedGuiImpl.java @@ -0,0 +1,79 @@ +package de.studiocode.invui.gui.impl; + +import de.studiocode.invui.gui.AbstractPagedGui; +import de.studiocode.invui.gui.Gui; +import de.studiocode.invui.gui.PagedGui; +import de.studiocode.invui.gui.SlotElement; +import de.studiocode.invui.gui.builder.GuiBuilder; +import de.studiocode.invui.gui.structure.Structure; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +/** + * A {@link AbstractPagedGui} where every page is its own {@link Gui}. + * + * @see GuiBuilder + * @see PagedItemsGuiImpl + */ +@SuppressWarnings("DeprecatedIsStillUsed") +public final class PagedNestedGuiImpl extends AbstractPagedGui { + + private List guis; + + /** + * Creates a new {@link PagedNestedGuiImpl}. + * + * @param width The width of this Gui. + * @param height The height of this Gui. + * @param guis The {@link Gui Guis} to use as pages. + * @param contentListSlots The slots where content should be displayed. + * @deprecated Use {@link PagedGui#ofGuis(int, int, List, int...)} instead. + */ + @Deprecated + public PagedNestedGuiImpl(int width, int height, @Nullable List guis, int... contentListSlots) { + super(width, height, false, contentListSlots); + setContent(guis); + } + + /** + * Creates a new {@link PagedNestedGuiImpl}. + * + * @param guis The {@link Gui Guis} to use as pages. + * @param structure The {@link Structure} to use. + * @deprecated Use {@link PagedGui#ofGuis(Structure, List)} instead. + */ + @Deprecated + public PagedNestedGuiImpl(@Nullable List guis, @NotNull Structure structure) { + super(structure.getWidth(), structure.getHeight(), false, structure); + setContent(guis); + } + + @Override + public int getPageAmount() { + return guis.size(); + } + + @Override + public void setContent(@Nullable List guis) { + this.guis = guis == null ? new ArrayList<>() : guis; + update(); + } + + @Override + protected List getPageElements(int page) { + if (guis.size() <= page) return new ArrayList<>(); + + Gui gui = guis.get(page); + int size = gui.getSize(); + + return IntStream.range(0, size) + .mapToObj(i -> new SlotElement.LinkedSlotElement(gui, i)) + .collect(Collectors.toList()); + } + +} diff --git a/invui/src/main/java/de/studiocode/invui/gui/impl/ScrollItemsGUIImpl.java b/invui/src/main/java/de/studiocode/invui/gui/impl/ScrollItemsGuiImpl.java similarity index 52% rename from invui/src/main/java/de/studiocode/invui/gui/impl/ScrollItemsGUIImpl.java rename to invui/src/main/java/de/studiocode/invui/gui/impl/ScrollItemsGuiImpl.java index 9331995..1d04b85 100644 --- a/invui/src/main/java/de/studiocode/invui/gui/impl/ScrollItemsGUIImpl.java +++ b/invui/src/main/java/de/studiocode/invui/gui/impl/ScrollItemsGuiImpl.java @@ -1,6 +1,7 @@ package de.studiocode.invui.gui.impl; -import de.studiocode.invui.gui.AbstractScrollGUI; +import de.studiocode.invui.gui.AbstractScrollGui; +import de.studiocode.invui.gui.ScrollGui; import de.studiocode.invui.gui.SlotElement; import de.studiocode.invui.gui.structure.Structure; import de.studiocode.invui.item.Item; @@ -11,22 +12,41 @@ import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; -public final class ScrollItemsGUIImpl extends AbstractScrollGUI { +@SuppressWarnings("DeprecatedIsStillUsed") +public final class ScrollItemsGuiImpl extends AbstractScrollGui { private List items; - public ScrollItemsGUIImpl(int width, int height, @Nullable List items, int... contentListSlots) { + /** + * Creates a new {@link ScrollItemsGuiImpl}. + * + * @param width The width of this Gui. + * @param height The height of this Gui. + * @param items The {@link Item Items} to use. + * @param contentListSlots The slots where content should be displayed. + * @deprecated Use {@link ScrollGui#ofItems(int, int, List, int...)} instead. + */ + @Deprecated + public ScrollItemsGuiImpl(int width, int height, @Nullable List items, int... contentListSlots) { super(width, height, false, contentListSlots); setContent(items); } - public ScrollItemsGUIImpl(@Nullable List items, @NotNull Structure structure) { + /** + * Creates a new {@link ScrollItemsGuiImpl}. + * + * @param items The {@link Item Items} to use. + * @param structure The {@link Structure} to use. + * @deprecated Use {@link ScrollGui#ofItems(Structure, List)} instead. + */ + @Deprecated + public ScrollItemsGuiImpl(@Nullable List items, @NotNull Structure structure) { super(structure.getWidth(), structure.getHeight(), false, structure); setContent(items); } @Override - public void setContent(@Nullable List items) { + public void setContent(@NotNull List items) { this.items = items != null ? items : new ArrayList<>(); update(); } diff --git a/invui/src/main/java/de/studiocode/invui/gui/impl/ScrollNestedGUIImpl.java b/invui/src/main/java/de/studiocode/invui/gui/impl/ScrollNestedGuiImpl.java similarity index 51% rename from invui/src/main/java/de/studiocode/invui/gui/impl/ScrollNestedGUIImpl.java rename to invui/src/main/java/de/studiocode/invui/gui/impl/ScrollNestedGuiImpl.java index 4b21a49..c530ceb 100644 --- a/invui/src/main/java/de/studiocode/invui/gui/impl/ScrollNestedGUIImpl.java +++ b/invui/src/main/java/de/studiocode/invui/gui/impl/ScrollNestedGuiImpl.java @@ -1,7 +1,8 @@ package de.studiocode.invui.gui.impl; -import de.studiocode.invui.gui.AbstractScrollGUI; -import de.studiocode.invui.gui.GUI; +import de.studiocode.invui.gui.AbstractScrollGui; +import de.studiocode.invui.gui.Gui; +import de.studiocode.invui.gui.ScrollGui; import de.studiocode.invui.gui.SlotElement; import de.studiocode.invui.gui.structure.Structure; import org.jetbrains.annotations.NotNull; @@ -10,23 +11,42 @@ import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.List; -public final class ScrollNestedGUIImpl extends AbstractScrollGUI { +@SuppressWarnings("DeprecatedIsStillUsed") +public final class ScrollNestedGuiImpl extends AbstractScrollGui { - private List guis; + private List guis; private List elements; - public ScrollNestedGUIImpl(int width, int height, @Nullable List guis, int... contentListSlots) { + /** + * Creates a new {@link ScrollNestedGuiImpl}. + * + * @param width The width of this Gui. + * @param height The height of this Gui. + * @param guis The {@link Gui Guis} to use. + * @param contentListSlots The slots where content should be displayed. + * @deprecated Use {@link ScrollGui#ofGuis(int, int, List, int...)} instead. + */ + @Deprecated + public ScrollNestedGuiImpl(int width, int height, @Nullable List guis, int... contentListSlots) { super(width, height, false, contentListSlots); setContent(guis); } - public ScrollNestedGUIImpl(@Nullable List guis, @NotNull Structure structure) { + /** + * Creates a new {@link ScrollNestedGuiImpl}. + * + * @param guis The {@link Gui Guis} to use. + * @param structure The {@link Structure} to use. + * @deprecated Use {@link ScrollGui#ofGuis(Structure, List)} instead. + */ + @Deprecated + public ScrollNestedGuiImpl(@Nullable List guis, @NotNull Structure structure) { super(structure.getWidth(), structure.getHeight(), false, structure); setContent(guis); } @Override - public void setContent(@Nullable List guis) { + public void setContent(@NotNull List guis) { this.guis = guis != null ? guis : new ArrayList<>(); updateElements(); update(); @@ -34,7 +54,7 @@ public final class ScrollNestedGUIImpl extends AbstractScrollGUI { private void updateElements() { elements = new ArrayList<>(); - for (GUI gui : guis) { + for (Gui gui : guis) { for (int i = 0; i < gui.getSize(); i++) { elements.add(new SlotElement.LinkedSlotElement(gui, i)); } diff --git a/invui/src/main/java/de/studiocode/invui/gui/impl/ScrollVIGUIImpl.java b/invui/src/main/java/de/studiocode/invui/gui/impl/ScrollVIGuiImpl.java similarity index 56% rename from invui/src/main/java/de/studiocode/invui/gui/impl/ScrollVIGUIImpl.java rename to invui/src/main/java/de/studiocode/invui/gui/impl/ScrollVIGuiImpl.java index ec37d30..bc9dbc6 100644 --- a/invui/src/main/java/de/studiocode/invui/gui/impl/ScrollVIGUIImpl.java +++ b/invui/src/main/java/de/studiocode/invui/gui/impl/ScrollVIGuiImpl.java @@ -1,6 +1,7 @@ package de.studiocode.invui.gui.impl; -import de.studiocode.invui.gui.AbstractScrollGUI; +import de.studiocode.invui.gui.AbstractScrollGui; +import de.studiocode.invui.gui.ScrollGui; import de.studiocode.invui.gui.SlotElement; import de.studiocode.invui.gui.structure.Structure; import de.studiocode.invui.virtualinventory.VirtualInventory; @@ -9,23 +10,42 @@ import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.List; -public final class ScrollVIGUIImpl extends AbstractScrollGUI { +@SuppressWarnings("DeprecatedIsStillUsed") +public final class ScrollVIGuiImpl extends AbstractScrollGui { private List inventories; private List elements; - public ScrollVIGUIImpl(int width, int height, @NotNull List inventories, int... contentListSlots) { + /** + * Creates a new {@link ScrollVIGuiImpl}. + * + * @param width The width of this Gui. + * @param height The width of this Gui. + * @param inventories The {@link VirtualInventory VirtualInventories} to use. + * @param contentListSlots The slots where content should be displayed. + * @deprecated Use {@link ScrollGui#ofInventories(int, int, List, int...)} instead. + */ + @Deprecated + public ScrollVIGuiImpl(int width, int height, @NotNull List inventories, int... contentListSlots) { super(width, height, false, contentListSlots); setContent(inventories); } - public ScrollVIGUIImpl(@NotNull List inventories, @NotNull Structure structure) { + /** + * Creates a new {@link ScrollVIGuiImpl}. + * + * @param inventories The {@link VirtualInventory VirtualInventories} to use. + * @param structure The {@link Structure} to use. + * @deprecated Use {@link ScrollGui#ofInventories(Structure, List)} instead. + */ + @Deprecated + public ScrollVIGuiImpl(@NotNull List inventories, @NotNull Structure structure) { super(structure.getWidth(), structure.getHeight(), false, structure); setContent(inventories); } @Override - public void setContent(List inventory) { + public void setContent(@NotNull List inventory) { this.inventories = inventory; updateElements(); update(); diff --git a/invui/src/main/java/de/studiocode/invui/gui/impl/TabGUIImpl.java b/invui/src/main/java/de/studiocode/invui/gui/impl/TabGUIImpl.java deleted file mode 100644 index 34cb054..0000000 --- a/invui/src/main/java/de/studiocode/invui/gui/impl/TabGUIImpl.java +++ /dev/null @@ -1,68 +0,0 @@ -package de.studiocode.invui.gui.impl; - -import de.studiocode.invui.gui.AbstractTabGUI; -import de.studiocode.invui.gui.GUI; -import de.studiocode.invui.gui.SlotElement; -import de.studiocode.invui.gui.SlotElement.LinkedSlotElement; -import de.studiocode.invui.gui.builder.GUIBuilder; -import de.studiocode.invui.gui.structure.Structure; -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.stream.Collectors; - -/** - * A {@link GUI} that has multiple tabs with which users can switch between {@link GUI}s. - * - * @see GUIBuilder - */ -public final class TabGUIImpl extends AbstractTabGUI { - - private final List tabs; - private final List> linkingElements; - - public TabGUIImpl(int width, int height, @NotNull List tabs, int[] listSlots) { - super(width, height, tabs.size(), listSlots); - this.linkingElements = tabs.stream().map(this::getLinkingElements).collect(Collectors.toList()); - this.tabs = tabs; - - update(); - } - - public TabGUIImpl(@NotNull List tabs, @NotNull Structure structure) { - super(structure.getWidth(), structure.getHeight(), tabs.size(), structure); - this.linkingElements = tabs.stream().map(this::getLinkingElements).collect(Collectors.toList()); - this.tabs = tabs; - - update(); - } - - private List getLinkingElements(GUI gui) { - if (gui == null) return null; - - List elements = new ArrayList<>(); - for (int slot = 0; slot < gui.getSize(); slot++) { - SlotElement link = new LinkedSlotElement(gui, slot); - elements.add(link); - } - - return elements; - } - - public List getTabs() { - return Collections.unmodifiableList(tabs); - } - - @Override - public boolean isTabAvailable(int tab) { - return tabs.get(tab) != null; - } - - @Override - protected List getSlotElements(int tab) { - return linkingElements.get(tab); - } - -} diff --git a/invui/src/main/java/de/studiocode/invui/gui/impl/TabGuiImpl.java b/invui/src/main/java/de/studiocode/invui/gui/impl/TabGuiImpl.java new file mode 100644 index 0000000..275aca3 --- /dev/null +++ b/invui/src/main/java/de/studiocode/invui/gui/impl/TabGuiImpl.java @@ -0,0 +1,89 @@ +package de.studiocode.invui.gui.impl; + +import de.studiocode.invui.gui.AbstractTabGui; +import de.studiocode.invui.gui.Gui; +import de.studiocode.invui.gui.SlotElement; +import de.studiocode.invui.gui.SlotElement.LinkedSlotElement; +import de.studiocode.invui.gui.TabGui; +import de.studiocode.invui.gui.builder.GuiBuilder; +import de.studiocode.invui.gui.structure.Structure; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; + +/** + * A {@link Gui} that has multiple tabs with which users can switch between {@link Gui}s. + * + * @see GuiBuilder + */ +@SuppressWarnings("DeprecatedIsStillUsed") +public final class TabGuiImpl extends AbstractTabGui { + + private final List tabs; + private final List> linkingElements; + + /** + * Creates a new {@link TabGuiImpl}. + * + * @param width The width of this Gui. + * @param height The height of this Gui. + * @param tabs The {@link Gui Guis} to use as tabs. + * @param contentListSlots The slots where content should be displayed. + * @deprecated Use {@link TabGui#of(int, int, List, int...)} instead. + */ + @Deprecated + public TabGuiImpl(int width, int height, @NotNull List<@Nullable Gui> tabs, int[] contentListSlots) { + super(width, height, tabs.size(), contentListSlots); + this.linkingElements = tabs.stream().map(this::getLinkingElements).collect(Collectors.toList()); + this.tabs = tabs; + + update(); + } + + /** + * Creates a new {@link TabGuiImpl}. + * + * @param tabs The {@link Gui Guis} to use as tabs. + * @param structure The {@link Structure} to use. + * @deprecated Use {@link TabGui#of(Structure, List)} instead. + */ + @Deprecated + public TabGuiImpl(@NotNull List<@Nullable Gui> tabs, @NotNull Structure structure) { + super(structure.getWidth(), structure.getHeight(), tabs.size(), structure); + this.linkingElements = tabs.stream().map(this::getLinkingElements).collect(Collectors.toList()); + this.tabs = tabs; + + update(); + } + + private List getLinkingElements(Gui gui) { + if (gui == null) return null; + + List elements = new ArrayList<>(); + for (int slot = 0; slot < gui.getSize(); slot++) { + SlotElement link = new LinkedSlotElement(gui, slot); + elements.add(link); + } + + return elements; + } + + public @NotNull List<@Nullable Gui> getTabs() { + return Collections.unmodifiableList(tabs); + } + + @Override + public boolean isTabAvailable(int tab) { + return tabs.get(tab) != null; + } + + @Override + protected List getSlotElements(int tab) { + return linkingElements.get(tab); + } + +} diff --git a/invui/src/main/java/de/studiocode/invui/gui/structure/IngredientList.java b/invui/src/main/java/de/studiocode/invui/gui/structure/IngredientList.java index c13a948..297ac84 100644 --- a/invui/src/main/java/de/studiocode/invui/gui/structure/IngredientList.java +++ b/invui/src/main/java/de/studiocode/invui/gui/structure/IngredientList.java @@ -1,6 +1,6 @@ package de.studiocode.invui.gui.structure; -import de.studiocode.invui.gui.GUI; +import de.studiocode.invui.gui.Gui; import de.studiocode.invui.util.SlotUtils; import java.util.ArrayList; @@ -24,9 +24,9 @@ public class IngredientList extends ArrayList { } } - public void insertIntoGUI(GUI gui) { + public void insertIntoGui(Gui gui) { if (size() != gui.getSize()) - throw new IllegalArgumentException("Structure size does not match GUI size"); + throw new IllegalArgumentException("Structure size does not match Gui size"); for (int i = 0; i < size(); i++) { Ingredient ingredient = get(i); diff --git a/invui/src/main/java/de/studiocode/invui/gui/structure/Markers.java b/invui/src/main/java/de/studiocode/invui/gui/structure/Markers.java index 9d4ed94..7c5a584 100644 --- a/invui/src/main/java/de/studiocode/invui/gui/structure/Markers.java +++ b/invui/src/main/java/de/studiocode/invui/gui/structure/Markers.java @@ -1,8 +1,8 @@ package de.studiocode.invui.gui.structure; -import de.studiocode.invui.gui.AbstractPagedGUI; -import de.studiocode.invui.gui.AbstractScrollGUI; -import de.studiocode.invui.gui.AbstractTabGUI; +import de.studiocode.invui.gui.AbstractPagedGui; +import de.studiocode.invui.gui.AbstractScrollGui; +import de.studiocode.invui.gui.AbstractTabGui; /** * Registry class for default markers @@ -10,14 +10,14 @@ import de.studiocode.invui.gui.AbstractTabGUI; public class Markers { /** - * The marker for horizontal content list slots in {@link AbstractPagedGUI PagedGUIs}, - * {@link AbstractScrollGUI ScrollGUIs} and {@link AbstractTabGUI TabGUIs} + * The marker for horizontal content list slots in {@link AbstractPagedGui PagedGuis}, + * {@link AbstractScrollGui ScrollGuis} and {@link AbstractTabGui TabGuis} */ public static final Marker CONTENT_LIST_SLOT_HORIZONTAL = new Marker(true); /** - * The marker for vertical content list slots in {@link AbstractPagedGUI PagedGUIs}, - * {@link AbstractScrollGUI ScrollGUIs} and {@link AbstractTabGUI TabGUIs} + * The marker for vertical content list slots in {@link AbstractPagedGui PagedGuis}, + * {@link AbstractScrollGui ScrollGuis} and {@link AbstractTabGui TabGuis} */ public static final Marker CONTENT_LIST_SLOT_VERTICAL = new Marker(false); diff --git a/invui/src/main/java/de/studiocode/invui/gui/structure/Structure.java b/invui/src/main/java/de/studiocode/invui/gui/structure/Structure.java index e6f9862..3d32d28 100644 --- a/invui/src/main/java/de/studiocode/invui/gui/structure/Structure.java +++ b/invui/src/main/java/de/studiocode/invui/gui/structure/Structure.java @@ -1,6 +1,6 @@ package de.studiocode.invui.gui.structure; -import de.studiocode.invui.gui.GUI; +import de.studiocode.invui.gui.Gui; import de.studiocode.invui.gui.SlotElement; import de.studiocode.invui.gui.SlotElement.ItemSlotElement; import de.studiocode.invui.item.Item; @@ -17,9 +17,9 @@ import java.util.HashMap; import java.util.function.Supplier; /** - * Provides an easy way to design {@link GUI}s. + * Provides an easy way to design {@link Gui}s. * Inspired by Bukkit's {@link ShapedRecipe}, {@link Structure Structures} will let you - * design a {@link GUI} in a similar way. + * design a {@link Gui} in a similar way. */ public class Structure implements Cloneable { diff --git a/invui/src/main/java/de/studiocode/invui/item/impl/controlitem/ControlItem.java b/invui/src/main/java/de/studiocode/invui/item/impl/controlitem/ControlItem.java index 25c3381..96e39e3 100644 --- a/invui/src/main/java/de/studiocode/invui/item/impl/controlitem/ControlItem.java +++ b/invui/src/main/java/de/studiocode/invui/item/impl/controlitem/ControlItem.java @@ -1,16 +1,16 @@ package de.studiocode.invui.item.impl.controlitem; -import de.studiocode.invui.gui.GUI; +import de.studiocode.invui.gui.Gui; import de.studiocode.invui.item.Item; import de.studiocode.invui.item.ItemProvider; import de.studiocode.invui.item.impl.BaseItem; /** - * A special type of {@link Item} that stores the {@link GUI} in which it is displayed. + * A special type of {@link Item} that stores the {@link Gui} in which it is displayed. * - * @param The GUI Type this {@link ControlItem} will control. Not checked when adding it to a GUI. + * @param The Gui Type this {@link ControlItem} will control. Not checked when adding it to a Gui. */ -public abstract class ControlItem extends BaseItem { +public abstract class ControlItem extends BaseItem { private G gui; @@ -21,12 +21,12 @@ public abstract class ControlItem extends BaseItem { return getItemProvider(gui); } - public G getGUI() { + public G getGui() { return gui; } @SuppressWarnings("unchecked") - public void setGUI(Object gui) { + public void setGui(Object gui) { if (this.gui == null) this.gui = (G) gui; } diff --git a/invui/src/main/java/de/studiocode/invui/item/impl/controlitem/PageItem.java b/invui/src/main/java/de/studiocode/invui/item/impl/controlitem/PageItem.java index 315ead6..8d1f277 100644 --- a/invui/src/main/java/de/studiocode/invui/item/impl/controlitem/PageItem.java +++ b/invui/src/main/java/de/studiocode/invui/item/impl/controlitem/PageItem.java @@ -1,16 +1,16 @@ package de.studiocode.invui.item.impl.controlitem; -import de.studiocode.invui.gui.AbstractPagedGUI; -import de.studiocode.invui.gui.PagedGUI; +import de.studiocode.invui.gui.AbstractPagedGui; +import de.studiocode.invui.gui.PagedGui; import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; import org.bukkit.event.inventory.InventoryClickEvent; import org.jetbrains.annotations.NotNull; /** - * Switches between pages in a {@link AbstractPagedGUI} + * Switches between pages in a {@link AbstractPagedGui} */ -public abstract class PageItem extends ControlItem> { +public abstract class PageItem extends ControlItem> { private final boolean forward; @@ -21,8 +21,8 @@ public abstract class PageItem extends ControlItem> { @Override public void handleClick(@NotNull ClickType clickType, @NotNull Player player, @NotNull InventoryClickEvent event) { if (clickType == ClickType.LEFT) { - if (forward) getGUI().goForward(); - else getGUI().goBack(); + if (forward) getGui().goForward(); + else getGui().goBack(); } } diff --git a/invui/src/main/java/de/studiocode/invui/item/impl/controlitem/ScrollItem.java b/invui/src/main/java/de/studiocode/invui/item/impl/controlitem/ScrollItem.java index d1b08ae..bc4a449 100644 --- a/invui/src/main/java/de/studiocode/invui/item/impl/controlitem/ScrollItem.java +++ b/invui/src/main/java/de/studiocode/invui/item/impl/controlitem/ScrollItem.java @@ -1,7 +1,7 @@ package de.studiocode.invui.item.impl.controlitem; -import de.studiocode.invui.gui.AbstractScrollGUI; -import de.studiocode.invui.gui.ScrollGUI; +import de.studiocode.invui.gui.AbstractScrollGui; +import de.studiocode.invui.gui.ScrollGui; import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; import org.bukkit.event.inventory.InventoryClickEvent; @@ -10,9 +10,9 @@ import org.jetbrains.annotations.NotNull; import java.util.HashMap; /** - * Scrolls in a {@link AbstractScrollGUI} + * Scrolls in a {@link AbstractScrollGui} */ -public abstract class ScrollItem extends ControlItem> { +public abstract class ScrollItem extends ControlItem> { private final HashMap scroll; @@ -27,7 +27,7 @@ public abstract class ScrollItem extends ControlItem> { @Override public void handleClick(@NotNull ClickType clickType, @NotNull Player player, @NotNull InventoryClickEvent event) { - if (scroll.containsKey(clickType)) getGUI().scroll(scroll.get(clickType)); + if (scroll.containsKey(clickType)) getGui().scroll(scroll.get(clickType)); } } diff --git a/invui/src/main/java/de/studiocode/invui/item/impl/controlitem/TabItem.java b/invui/src/main/java/de/studiocode/invui/item/impl/controlitem/TabItem.java index 4ed2199..dbf8b52 100644 --- a/invui/src/main/java/de/studiocode/invui/item/impl/controlitem/TabItem.java +++ b/invui/src/main/java/de/studiocode/invui/item/impl/controlitem/TabItem.java @@ -1,16 +1,16 @@ package de.studiocode.invui.item.impl.controlitem; -import de.studiocode.invui.gui.AbstractTabGUI; -import de.studiocode.invui.gui.TabGUI; +import de.studiocode.invui.gui.AbstractTabGui; +import de.studiocode.invui.gui.TabGui; import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; import org.bukkit.event.inventory.InventoryClickEvent; import org.jetbrains.annotations.NotNull; /** - * Switches between tabs in a {@link AbstractTabGUI} + * Switches between tabs in a {@link AbstractTabGui} */ -public abstract class TabItem extends ControlItem { +public abstract class TabItem extends ControlItem { private final int tab; @@ -20,7 +20,7 @@ public abstract class TabItem extends ControlItem { @Override public void handleClick(@NotNull ClickType clickType, @NotNull Player player, @NotNull InventoryClickEvent event) { - if (clickType == ClickType.LEFT) getGUI().showTab(tab); + if (clickType == ClickType.LEFT) getGui().showTab(tab); } } diff --git a/invui/src/main/java/de/studiocode/invui/util/InventoryUtils.java b/invui/src/main/java/de/studiocode/invui/util/InventoryUtils.java index 1d1e972..7636f04 100644 --- a/invui/src/main/java/de/studiocode/invui/util/InventoryUtils.java +++ b/invui/src/main/java/de/studiocode/invui/util/InventoryUtils.java @@ -1,6 +1,6 @@ package de.studiocode.invui.util; -import de.studiocode.invui.gui.GUI; +import de.studiocode.invui.gui.Gui; import de.studiocode.invui.virtualinventory.StackSizeProvider; import org.bukkit.Bukkit; import org.bukkit.Location; @@ -107,13 +107,13 @@ public class InventoryUtils { return false; } - public static Inventory createMatchingInventory(@NotNull GUI gui, @NotNull String title) { + public static Inventory createMatchingInventory(@NotNull Gui gui, @NotNull String title) { InventoryType type; if (gui.getWidth() == 9) type = null; else if (gui.getWidth() == 3 && gui.getHeight() == 3) type = InventoryType.DROPPER; else if (gui.getWidth() == 5 && gui.getHeight() == 1) type = InventoryType.HOPPER; - else throw new UnsupportedOperationException("Invalid bounds of GUI"); + else throw new UnsupportedOperationException("Invalid bounds of Gui"); if (type == null) return Bukkit.createInventory(null, gui.getSize(), title); else return Bukkit.createInventory(null, type, title); diff --git a/invui/src/main/java/de/studiocode/invui/virtualinventory/VirtualInventory.java b/invui/src/main/java/de/studiocode/invui/virtualinventory/VirtualInventory.java index 14f3119..b912260 100644 --- a/invui/src/main/java/de/studiocode/invui/virtualinventory/VirtualInventory.java +++ b/invui/src/main/java/de/studiocode/invui/virtualinventory/VirtualInventory.java @@ -1,6 +1,6 @@ package de.studiocode.invui.virtualinventory; -import de.studiocode.invui.gui.GUI; +import de.studiocode.invui.gui.Gui; import de.studiocode.invui.util.InventoryUtils; import de.studiocode.invui.util.ArrayUtils; import de.studiocode.invui.virtualinventory.event.InventoryUpdatedEvent; @@ -144,7 +144,7 @@ public class VirtualInventory { } /** - * Gets the priority for shift-clicking {@link ItemStack ItemStacks} into a {@link GUI} + * Gets the priority for shift-clicking {@link ItemStack ItemStacks} into a {@link Gui} * * @return The priority for shift-clicking, {@link VirtualInventory VirtualInventories} with * a higher priority get prioritized. @@ -154,7 +154,7 @@ public class VirtualInventory { } /** - * Sets the priority for shift-clicking {@link ItemStack ItemStacks} into a {@link GUI} + * Sets the priority for shift-clicking {@link ItemStack ItemStacks} into a {@link Gui} * with multiple {@link VirtualInventory}. * Not serialized with {@link VirtualInventoryManager#serializeInventory(VirtualInventory, OutputStream)}. * diff --git a/invui/src/main/java/de/studiocode/invui/window/AbstractDoubleWindow.java b/invui/src/main/java/de/studiocode/invui/window/AbstractDoubleWindow.java index 026701a..4da57b9 100644 --- a/invui/src/main/java/de/studiocode/invui/window/AbstractDoubleWindow.java +++ b/invui/src/main/java/de/studiocode/invui/window/AbstractDoubleWindow.java @@ -2,7 +2,7 @@ package de.studiocode.invui.window; import de.studiocode.inventoryaccess.InventoryAccess; import de.studiocode.inventoryaccess.component.ComponentWrapper; -import de.studiocode.invui.gui.AbstractGUI; +import de.studiocode.invui.gui.AbstractGui; import de.studiocode.invui.gui.SlotElement; import de.studiocode.invui.util.Pair; import de.studiocode.invui.util.SlotUtils; @@ -120,7 +120,7 @@ public abstract class AbstractDoubleWindow extends AbstractWindow { @Override public void handleClick(InventoryClickEvent event) { - Pair clicked = getWhereClicked(event); + Pair clicked = getWhereClicked(event); clicked.getFirst().handleClick(clicked.getSecond(), (Player) event.getWhoClicked(), event.getClick(), event); } @@ -149,6 +149,6 @@ public abstract class AbstractDoubleWindow extends AbstractWindow { protected abstract SlotElement getSlotElement(int index); - protected abstract Pair getWhereClicked(InventoryClickEvent event); + protected abstract Pair getWhereClicked(InventoryClickEvent event); } diff --git a/invui/src/main/java/de/studiocode/invui/window/AbstractMergedWindow.java b/invui/src/main/java/de/studiocode/invui/window/AbstractMergedWindow.java index 94956f4..34cc935 100644 --- a/invui/src/main/java/de/studiocode/invui/window/AbstractMergedWindow.java +++ b/invui/src/main/java/de/studiocode/invui/window/AbstractMergedWindow.java @@ -1,8 +1,8 @@ package de.studiocode.invui.window; import de.studiocode.inventoryaccess.component.ComponentWrapper; -import de.studiocode.invui.gui.AbstractGUI; -import de.studiocode.invui.gui.GUI; +import de.studiocode.invui.gui.AbstractGui; +import de.studiocode.invui.gui.Gui; import de.studiocode.invui.gui.SlotElement; import de.studiocode.invui.util.Pair; import de.studiocode.invui.util.SlotUtils; @@ -11,13 +11,13 @@ import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.inventory.Inventory; /** - * A {@link Window} where top and player {@link Inventory} are affected by the same {@link GUI}. + * A {@link Window} where top and player {@link Inventory} are affected by the same {@link Gui}. */ public abstract class AbstractMergedWindow extends AbstractDoubleWindow { - private final AbstractGUI gui; + private final AbstractGui gui; - public AbstractMergedWindow(Player player, ComponentWrapper title, AbstractGUI gui, Inventory upperInventory, boolean closeable, boolean retain) { + public AbstractMergedWindow(Player player, ComponentWrapper title, AbstractGui gui, Inventory upperInventory, boolean closeable, boolean retain) { super(player, title, gui.getSize(), upperInventory, closeable, retain); this.gui = gui; @@ -26,7 +26,7 @@ public abstract class AbstractMergedWindow extends AbstractDoubleWindow { } @Override - public void handleSlotElementUpdate(GUI child, int slotIndex) { + public void handleSlotElementUpdate(Gui child, int slotIndex) { redrawItem(slotIndex, gui.getSlotElement(slotIndex), true); } @@ -36,7 +36,7 @@ public abstract class AbstractMergedWindow extends AbstractDoubleWindow { } @Override - protected Pair getWhereClicked(InventoryClickEvent event) { + protected Pair getWhereClicked(InventoryClickEvent event) { Inventory clicked = event.getClickedInventory(); int slot = event.getSlot(); int clickedIndex = clicked == getUpperInventory() ? slot @@ -45,13 +45,13 @@ public abstract class AbstractMergedWindow extends AbstractDoubleWindow { } @Override - protected Pair getGUIAt(int index) { + protected Pair getGuiAt(int index) { return index < gui.getSize() ? new Pair<>(gui, index) : null; } @Override - public AbstractGUI[] getGUIs() { - return new AbstractGUI[] {gui}; + public AbstractGui[] getGuis() { + return new AbstractGui[] {gui}; } } diff --git a/invui/src/main/java/de/studiocode/invui/window/AbstractSingleWindow.java b/invui/src/main/java/de/studiocode/invui/window/AbstractSingleWindow.java index 7cb34de..6dbf28d 100644 --- a/invui/src/main/java/de/studiocode/invui/window/AbstractSingleWindow.java +++ b/invui/src/main/java/de/studiocode/invui/window/AbstractSingleWindow.java @@ -1,8 +1,8 @@ package de.studiocode.invui.window; import de.studiocode.inventoryaccess.component.ComponentWrapper; -import de.studiocode.invui.gui.AbstractGUI; -import de.studiocode.invui.gui.GUI; +import de.studiocode.invui.gui.AbstractGui; +import de.studiocode.invui.gui.Gui; import de.studiocode.invui.gui.SlotElement; import de.studiocode.invui.util.InventoryUtils; import de.studiocode.invui.util.Pair; @@ -19,11 +19,11 @@ import java.util.UUID; */ public abstract class AbstractSingleWindow extends AbstractWindow { - private final AbstractGUI gui; + private final AbstractGui gui; private final int size; protected Inventory inventory; - public AbstractSingleWindow(UUID viewerUUID, ComponentWrapper title, AbstractGUI gui, Inventory inventory, boolean initItems, boolean closeable, boolean retain) { + public AbstractSingleWindow(UUID viewerUUID, ComponentWrapper title, AbstractGui gui, Inventory inventory, boolean initItems, boolean closeable, boolean retain) { super(viewerUUID, title, gui.getSize(), closeable, retain); this.gui = gui; this.size = gui.getSize(); @@ -56,7 +56,7 @@ public abstract class AbstractSingleWindow extends AbstractWindow { } @Override - public void handleSlotElementUpdate(GUI child, int slotIndex) { + public void handleSlotElementUpdate(Gui child, int slotIndex) { redrawItem(slotIndex, gui.getSlotElement(slotIndex), true); } @@ -78,7 +78,7 @@ public abstract class AbstractSingleWindow extends AbstractWindow { } @Override - protected Pair getGUIAt(int index) { + protected Pair getGuiAt(int index) { return index < gui.getSize() ? new Pair<>(gui, index) : null; } @@ -98,11 +98,11 @@ public abstract class AbstractSingleWindow extends AbstractWindow { } @Override - public AbstractGUI[] getGUIs() { - return new AbstractGUI[] {gui}; + public AbstractGui[] getGuis() { + return new AbstractGui[] {gui}; } - public AbstractGUI getGUI() { + public AbstractGui getGui() { return gui; } diff --git a/invui/src/main/java/de/studiocode/invui/window/AbstractSplitWindow.java b/invui/src/main/java/de/studiocode/invui/window/AbstractSplitWindow.java index e56a330..bac7300 100644 --- a/invui/src/main/java/de/studiocode/invui/window/AbstractSplitWindow.java +++ b/invui/src/main/java/de/studiocode/invui/window/AbstractSplitWindow.java @@ -1,8 +1,8 @@ package de.studiocode.invui.window; import de.studiocode.inventoryaccess.component.ComponentWrapper; -import de.studiocode.invui.gui.AbstractGUI; -import de.studiocode.invui.gui.GUI; +import de.studiocode.invui.gui.AbstractGui; +import de.studiocode.invui.gui.Gui; import de.studiocode.invui.gui.SlotElement; import de.studiocode.invui.util.Pair; import de.studiocode.invui.util.SlotUtils; @@ -11,14 +11,14 @@ import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.inventory.Inventory; /** - * A {@link Window} where top and player {@link Inventory} are affected by different {@link GUI}s. + * A {@link Window} where top and player {@link Inventory} are affected by different {@link Gui}s. */ public abstract class AbstractSplitWindow extends AbstractDoubleWindow { - private final AbstractGUI upperGui; - private final AbstractGUI lowerGui; + private final AbstractGui upperGui; + private final AbstractGui lowerGui; - public AbstractSplitWindow(Player player, ComponentWrapper title, AbstractGUI upperGui, AbstractGUI lowerGui, Inventory upperInventory, boolean initItems, boolean closeable, boolean retain) { + public AbstractSplitWindow(Player player, ComponentWrapper title, AbstractGui upperGui, AbstractGui lowerGui, Inventory upperInventory, boolean initItems, boolean closeable, boolean retain) { super(player, title, upperGui.getSize() + lowerGui.getSize(), upperInventory, closeable, retain); this.upperGui = upperGui; this.lowerGui = lowerGui; @@ -29,7 +29,7 @@ public abstract class AbstractSplitWindow extends AbstractDoubleWindow { } @Override - public void handleSlotElementUpdate(GUI child, int slotIndex) { + public void handleSlotElementUpdate(Gui child, int slotIndex) { redrawItem(child == upperGui ? slotIndex : upperGui.getSize() + slotIndex, child.getSlotElement(slotIndex), true); } @@ -41,7 +41,7 @@ public abstract class AbstractSplitWindow extends AbstractDoubleWindow { } @Override - protected Pair getWhereClicked(InventoryClickEvent event) { + protected Pair getWhereClicked(InventoryClickEvent event) { Inventory clicked = event.getClickedInventory(); if (clicked == getUpperInventory()) { return new Pair<>(upperGui, event.getSlot()); @@ -52,7 +52,7 @@ public abstract class AbstractSplitWindow extends AbstractDoubleWindow { } @Override - protected Pair getGUIAt(int index) { + protected Pair getGuiAt(int index) { if (index < upperGui.getSize()) return new Pair<>(upperGui, index); else if (index < (upperGui.getSize() + lowerGui.getSize())) return new Pair<>(lowerGui, index - upperGui.getSize()); @@ -60,8 +60,8 @@ public abstract class AbstractSplitWindow extends AbstractDoubleWindow { } @Override - public AbstractGUI[] getGUIs() { - return new AbstractGUI[] {upperGui, lowerGui}; + public AbstractGui[] getGuis() { + return new AbstractGui[] {upperGui, lowerGui}; } } diff --git a/invui/src/main/java/de/studiocode/invui/window/AbstractWindow.java b/invui/src/main/java/de/studiocode/invui/window/AbstractWindow.java index d4532c2..fa39679 100644 --- a/invui/src/main/java/de/studiocode/invui/window/AbstractWindow.java +++ b/invui/src/main/java/de/studiocode/invui/window/AbstractWindow.java @@ -4,9 +4,9 @@ import de.studiocode.inventoryaccess.InventoryAccess; import de.studiocode.inventoryaccess.component.BaseComponentWrapper; import de.studiocode.inventoryaccess.component.ComponentWrapper; import de.studiocode.invui.InvUI; -import de.studiocode.invui.gui.AbstractGUI; -import de.studiocode.invui.gui.GUI; -import de.studiocode.invui.gui.GUIParent; +import de.studiocode.invui.gui.AbstractGui; +import de.studiocode.invui.gui.Gui; +import de.studiocode.invui.gui.GuiParent; import de.studiocode.invui.gui.SlotElement; import de.studiocode.invui.gui.SlotElement.ItemSlotElement; import de.studiocode.invui.gui.SlotElement.LinkedSlotElement; @@ -38,7 +38,7 @@ import org.jetbrains.annotations.Nullable; import java.util.*; -public abstract class AbstractWindow implements Window, GUIParent { +public abstract class AbstractWindow implements Window, GuiParent { private static final NamespacedKey SLOT_KEY = new NamespacedKey(InvUI.getInstance().getPlugin(), "slot"); @@ -70,13 +70,13 @@ public abstract class AbstractWindow implements Window, GUIParent { // put ItemStack in inventory ItemStack itemStack; if (element == null || (element instanceof VISlotElement && element.getItemStack(viewerUUID) == null)) { - ItemProvider background = getGUIAt(index).getFirst().getBackground(); + ItemProvider background = getGuiAt(index).getFirst().getBackground(); itemStack = background == null ? null : background.getFor(viewerUUID); } else if (element instanceof LinkedSlotElement && element.getHoldingElement() == null) { ItemProvider background = null; - List guis = ((LinkedSlotElement) element).getGUIList(); - guis.add(0, getGUIAt(index).getFirst()); + List guis = ((LinkedSlotElement) element).getGuiList(); + guis.add(0, getGuiAt(index).getFirst()); for (int i = guis.size() - 1; i >= 0; i--) { background = guis.get(i).getBackground(); @@ -146,8 +146,8 @@ public abstract class AbstractWindow implements Window, GUIParent { ItemStack currentStack = event.getView().getItem(rawSlot); if (currentStack != null && currentStack.getType() == Material.AIR) currentStack = null; - // get the GUI at that slot and ask for permission to drag an Item there - Pair pair = getGUIAt(rawSlot); + // get the Gui at that slot and ask for permission to drag an Item there + Pair pair = getGuiAt(rawSlot); if (pair != null && !pair.getFirst().handleItemDrag(updateReason, pair.getSecond(), currentStack, newItems.get(rawSlot))) { // the drag was cancelled int currentAmount = currentStack == null ? 0 : currentStack.getAmount(); @@ -160,7 +160,7 @@ public abstract class AbstractWindow implements Window, GUIParent { // Redraw all items after the event so there won't be any Items that aren't actually there Bukkit.getScheduler().runTask(InvUI.getInstance().getPlugin(), () -> event.getRawSlots().forEach(rawSlot -> { - if (getGUIAt(rawSlot) != null) redrawItem(rawSlot); + if (getGuiAt(rawSlot) != null) redrawItem(rawSlot); }) ); @@ -232,7 +232,7 @@ public abstract class AbstractWindow implements Window, GUIParent { } }); - Arrays.stream(getGUIs()) + Arrays.stream(getGuis()) .forEach(gui -> gui.removeParent(this)); if (closeForViewer) close(); @@ -322,9 +322,9 @@ public abstract class AbstractWindow implements Window, GUIParent { protected abstract SlotElement getSlotElement(int index); - protected abstract Pair getGUIAt(int index); + protected abstract Pair getGuiAt(int index); - protected abstract AbstractGUI[] getGUIs(); + protected abstract AbstractGui[] getGuis(); protected abstract Inventory[] getInventories(); diff --git a/invui/src/main/java/de/studiocode/invui/window/Window.java b/invui/src/main/java/de/studiocode/invui/window/Window.java index 0abeb0c..18e7947 100644 --- a/invui/src/main/java/de/studiocode/invui/window/Window.java +++ b/invui/src/main/java/de/studiocode/invui/window/Window.java @@ -1,13 +1,6 @@ package de.studiocode.invui.window; import de.studiocode.inventoryaccess.component.ComponentWrapper; -import de.studiocode.invui.window.impl.AnvilSingleWindowImpl; -import de.studiocode.invui.window.impl.AnvilSplitWindowImpl; -import de.studiocode.invui.window.impl.CartographySingleWindowImpl; -import de.studiocode.invui.window.impl.CartographySplitWindowImpl; -import de.studiocode.invui.window.impl.NormalMergedWindowImpl; -import de.studiocode.invui.window.impl.NormalSingleWindowImpl; -import de.studiocode.invui.window.impl.NormalSplitWindowImpl; import de.studiocode.invui.window.type.WindowType; import net.md_5.bungee.api.chat.BaseComponent; import org.bukkit.entity.Player; @@ -18,7 +11,7 @@ import org.jetbrains.annotations.Nullable; import java.util.UUID; /** - * A Window is the way to show a player a GUI. Windows can only have one viewer. + * A Window is the way to show a player a Gui. Windows can only have one viewer. * The default Window implementations can be instantiated using {@link WindowType}. * * @see WindowType @@ -27,13 +20,6 @@ import java.util.UUID; * @see AbstractDoubleWindow * @see AbstractSplitWindow * @see AbstractMergedWindow - * @see NormalSingleWindowImpl - * @see NormalSplitWindowImpl - * @see NormalMergedWindowImpl - * @see AnvilSingleWindowImpl - * @see AnvilSplitWindowImpl - * @see CartographySingleWindowImpl - * @see CartographySplitWindowImpl */ public interface Window { diff --git a/invui/src/main/java/de/studiocode/invui/window/impl/AnvilSingleWindowImpl.java b/invui/src/main/java/de/studiocode/invui/window/impl/AnvilSingleWindowImpl.java index 4a3ecd1..8c43381 100644 --- a/invui/src/main/java/de/studiocode/invui/window/impl/AnvilSingleWindowImpl.java +++ b/invui/src/main/java/de/studiocode/invui/window/impl/AnvilSingleWindowImpl.java @@ -3,7 +3,7 @@ package de.studiocode.invui.window.impl; import de.studiocode.inventoryaccess.InventoryAccess; import de.studiocode.inventoryaccess.abstraction.inventory.AnvilInventory; import de.studiocode.inventoryaccess.component.ComponentWrapper; -import de.studiocode.invui.gui.AbstractGUI; +import de.studiocode.invui.gui.AbstractGui; import de.studiocode.invui.window.AbstractSingleWindow; import de.studiocode.invui.window.AnvilWindow; import org.bukkit.entity.Player; @@ -15,7 +15,7 @@ public final class AnvilSingleWindowImpl extends AbstractSingleWindow implements private final AnvilInventory anvilInventory; - public AnvilSingleWindowImpl(Player player, ComponentWrapper title, AbstractGUI gui, Consumer renameHandler, boolean closable, boolean retain) { + public AnvilSingleWindowImpl(Player player, ComponentWrapper title, AbstractGui gui, Consumer renameHandler, boolean closable, boolean retain) { super(player.getUniqueId(), title, gui, null, false, closable, retain); anvilInventory = InventoryAccess.createAnvilInventory(player, title, renameHandler); inventory = anvilInventory.getBukkitInventory(); diff --git a/invui/src/main/java/de/studiocode/invui/window/impl/AnvilSplitWindowImpl.java b/invui/src/main/java/de/studiocode/invui/window/impl/AnvilSplitWindowImpl.java index 7f13199..74d910e 100644 --- a/invui/src/main/java/de/studiocode/invui/window/impl/AnvilSplitWindowImpl.java +++ b/invui/src/main/java/de/studiocode/invui/window/impl/AnvilSplitWindowImpl.java @@ -3,7 +3,7 @@ package de.studiocode.invui.window.impl; import de.studiocode.inventoryaccess.InventoryAccess; import de.studiocode.inventoryaccess.abstraction.inventory.AnvilInventory; import de.studiocode.inventoryaccess.component.ComponentWrapper; -import de.studiocode.invui.gui.AbstractGUI; +import de.studiocode.invui.gui.AbstractGui; import de.studiocode.invui.window.AbstractSplitWindow; import de.studiocode.invui.window.AnvilWindow; import org.bukkit.entity.Player; @@ -15,7 +15,7 @@ public final class AnvilSplitWindowImpl extends AbstractSplitWindow implements A private final AnvilInventory anvilInventory; - public AnvilSplitWindowImpl(Player player, ComponentWrapper title, AbstractGUI upperGui, AbstractGUI lowerGui, Consumer renameHandler, boolean closeable, boolean retain) { + public AnvilSplitWindowImpl(Player player, ComponentWrapper title, AbstractGui upperGui, AbstractGui lowerGui, Consumer renameHandler, boolean closeable, boolean retain) { super(player, title, upperGui, lowerGui, null, false, closeable, retain); anvilInventory = InventoryAccess.createAnvilInventory(player, title, renameHandler); diff --git a/invui/src/main/java/de/studiocode/invui/window/impl/CartographySingleWindowImpl.java b/invui/src/main/java/de/studiocode/invui/window/impl/CartographySingleWindowImpl.java index 6d30715..50ef76d 100644 --- a/invui/src/main/java/de/studiocode/invui/window/impl/CartographySingleWindowImpl.java +++ b/invui/src/main/java/de/studiocode/invui/window/impl/CartographySingleWindowImpl.java @@ -5,7 +5,7 @@ import de.studiocode.inventoryaccess.abstraction.inventory.CartographyInventory; import de.studiocode.inventoryaccess.component.ComponentWrapper; import de.studiocode.inventoryaccess.map.MapIcon; import de.studiocode.inventoryaccess.map.MapPatch; -import de.studiocode.invui.gui.AbstractGUI; +import de.studiocode.invui.gui.AbstractGui; import de.studiocode.invui.util.MathUtils; import de.studiocode.invui.window.AbstractSingleWindow; import de.studiocode.invui.window.CartographyWindow; @@ -24,9 +24,9 @@ public final class CartographySingleWindowImpl extends AbstractSingleWindow impl private final CartographyInventory cartographyInventory; private int mapId; - public CartographySingleWindowImpl(Player player, ComponentWrapper title, AbstractGUI gui, boolean closeable, boolean retain) { + public CartographySingleWindowImpl(Player player, ComponentWrapper title, AbstractGui gui, boolean closeable, boolean retain) { super(player.getUniqueId(), title, gui, null, false, closeable, retain); - if (gui.getWidth() != 2 || gui.getHeight() != 1) throw new IllegalArgumentException("GUI has to be 2x1"); + if (gui.getWidth() != 2 || gui.getHeight() != 1) throw new IllegalArgumentException("Gui has to be 2x1"); cartographyInventory = InventoryAccess.createCartographyInventory(player, title); inventory = cartographyInventory.getBukkitInventory(); @@ -60,7 +60,7 @@ public final class CartographySingleWindowImpl extends AbstractSingleWindow impl @Override public void handleClick(InventoryClickEvent event) { if (event.getSlot() != 0) { - getGUI().handleClick(event.getSlot() - 1, (Player) event.getWhoClicked(), event.getClick(), event); + getGui().handleClick(event.getSlot() - 1, (Player) event.getWhoClicked(), event.getClick(), event); } else { event.setCancelled(true); } diff --git a/invui/src/main/java/de/studiocode/invui/window/impl/CartographySplitWindowImpl.java b/invui/src/main/java/de/studiocode/invui/window/impl/CartographySplitWindowImpl.java index 5eb7af1..3164339 100644 --- a/invui/src/main/java/de/studiocode/invui/window/impl/CartographySplitWindowImpl.java +++ b/invui/src/main/java/de/studiocode/invui/window/impl/CartographySplitWindowImpl.java @@ -5,9 +5,9 @@ import de.studiocode.inventoryaccess.abstraction.inventory.CartographyInventory; import de.studiocode.inventoryaccess.component.ComponentWrapper; import de.studiocode.inventoryaccess.map.MapIcon; import de.studiocode.inventoryaccess.map.MapPatch; -import de.studiocode.invui.gui.AbstractGUI; -import de.studiocode.invui.gui.GUI; -import de.studiocode.invui.gui.impl.NormalGUIImpl; +import de.studiocode.invui.gui.AbstractGui; +import de.studiocode.invui.gui.Gui; +import de.studiocode.invui.gui.impl.NormalGuiImpl; import de.studiocode.invui.util.MathUtils; import de.studiocode.invui.window.AbstractSplitWindow; import de.studiocode.invui.window.CartographyWindow; @@ -24,8 +24,8 @@ public final class CartographySplitWindowImpl extends AbstractSplitWindow implem private final CartographyInventory cartographyInventory; private int mapId; - public CartographySplitWindowImpl(Player player, ComponentWrapper title, AbstractGUI upperGui, AbstractGUI lowerGui, boolean closeable, boolean retain) { - super(player, title, createWrappingGUI(upperGui), lowerGui, null, false, closeable, retain); + public CartographySplitWindowImpl(Player player, ComponentWrapper title, AbstractGui upperGui, AbstractGui lowerGui, boolean closeable, boolean retain) { + super(player, title, createWrappingGui(upperGui), lowerGui, null, false, closeable, retain); cartographyInventory = InventoryAccess.createCartographyInventory(player, title); upperInventory = cartographyInventory.getBukkitInventory(); @@ -35,13 +35,13 @@ public final class CartographySplitWindowImpl extends AbstractSplitWindow implem register(); } - private static AbstractGUI createWrappingGUI(GUI upperGui) { + private static AbstractGui createWrappingGui(Gui upperGui) { if (upperGui.getWidth() != 2 || upperGui.getHeight() != 1) - throw new IllegalArgumentException("GUI has to be 2x1"); + throw new IllegalArgumentException("Gui has to be 2x1"); - NormalGUIImpl wrapperGUI = new NormalGUIImpl(3, 1); - wrapperGUI.fillRectangle(1, 0, upperGui, true); - return wrapperGUI; + NormalGuiImpl wrapperGui = new NormalGuiImpl(3, 1); + wrapperGui.fillRectangle(1, 0, upperGui, true); + return wrapperGui; } @Override diff --git a/invui/src/main/java/de/studiocode/invui/window/impl/NormalMergedWindowImpl.java b/invui/src/main/java/de/studiocode/invui/window/impl/NormalMergedWindowImpl.java index d62ca07..8551d46 100644 --- a/invui/src/main/java/de/studiocode/invui/window/impl/NormalMergedWindowImpl.java +++ b/invui/src/main/java/de/studiocode/invui/window/impl/NormalMergedWindowImpl.java @@ -1,8 +1,8 @@ package de.studiocode.invui.window.impl; import de.studiocode.inventoryaccess.component.ComponentWrapper; -import de.studiocode.invui.gui.AbstractGUI; -import de.studiocode.invui.gui.GUI; +import de.studiocode.invui.gui.AbstractGui; +import de.studiocode.invui.gui.Gui; import de.studiocode.invui.window.AbstractMergedWindow; import org.bukkit.Bukkit; import org.bukkit.entity.Player; @@ -10,16 +10,16 @@ import org.bukkit.inventory.Inventory; public final class NormalMergedWindowImpl extends AbstractMergedWindow { - public NormalMergedWindowImpl(Player player, ComponentWrapper title, AbstractGUI gui, boolean closeable, boolean retain) { + public NormalMergedWindowImpl(Player player, ComponentWrapper title, AbstractGui gui, boolean closeable, boolean retain) { super(player, title, gui, createInventory(gui), closeable, retain); register(); } - private static Inventory createInventory(GUI gui) { + private static Inventory createInventory(Gui gui) { if (gui.getWidth() != 9) - throw new IllegalArgumentException("GUI width has to be 9"); + throw new IllegalArgumentException("Gui width has to be 9"); if (gui.getHeight() <= 4) - throw new IllegalArgumentException("GUI height has to be bigger than 4"); + throw new IllegalArgumentException("Gui height has to be bigger than 4"); return Bukkit.createInventory(null, gui.getSize() - 36); } diff --git a/invui/src/main/java/de/studiocode/invui/window/impl/NormalSingleWindowImpl.java b/invui/src/main/java/de/studiocode/invui/window/impl/NormalSingleWindowImpl.java index 40b7205..d085967 100644 --- a/invui/src/main/java/de/studiocode/invui/window/impl/NormalSingleWindowImpl.java +++ b/invui/src/main/java/de/studiocode/invui/window/impl/NormalSingleWindowImpl.java @@ -1,7 +1,7 @@ package de.studiocode.invui.window.impl; import de.studiocode.inventoryaccess.component.ComponentWrapper; -import de.studiocode.invui.gui.AbstractGUI; +import de.studiocode.invui.gui.AbstractGui; import de.studiocode.invui.util.InventoryUtils; import de.studiocode.invui.window.AbstractSingleWindow; @@ -9,7 +9,7 @@ import java.util.UUID; public final class NormalSingleWindowImpl extends AbstractSingleWindow { - public NormalSingleWindowImpl(UUID viewerUUID, ComponentWrapper title, AbstractGUI gui, boolean closeable, boolean retain) { + public NormalSingleWindowImpl(UUID viewerUUID, ComponentWrapper title, AbstractGui gui, boolean closeable, boolean retain) { super(viewerUUID, title, gui, InventoryUtils.createMatchingInventory(gui, ""), true, closeable, retain); register(); } diff --git a/invui/src/main/java/de/studiocode/invui/window/impl/NormalSplitWindowImpl.java b/invui/src/main/java/de/studiocode/invui/window/impl/NormalSplitWindowImpl.java index 8f97629..b0986e4 100644 --- a/invui/src/main/java/de/studiocode/invui/window/impl/NormalSplitWindowImpl.java +++ b/invui/src/main/java/de/studiocode/invui/window/impl/NormalSplitWindowImpl.java @@ -1,14 +1,14 @@ package de.studiocode.invui.window.impl; import de.studiocode.inventoryaccess.component.ComponentWrapper; -import de.studiocode.invui.gui.AbstractGUI; +import de.studiocode.invui.gui.AbstractGui; import de.studiocode.invui.util.InventoryUtils; import de.studiocode.invui.window.AbstractSplitWindow; import org.bukkit.entity.Player; public final class NormalSplitWindowImpl extends AbstractSplitWindow { - public NormalSplitWindowImpl(Player player, ComponentWrapper title, AbstractGUI upperGui, AbstractGUI lowerGui, boolean closeable, boolean retain) { + public NormalSplitWindowImpl(Player player, ComponentWrapper title, AbstractGui upperGui, AbstractGui lowerGui, boolean closeable, boolean retain) { super(player, title, upperGui, lowerGui, InventoryUtils.createMatchingInventory(upperGui, ""), true, closeable, retain); register(); } diff --git a/invui/src/main/java/de/studiocode/invui/window/type/WindowType.java b/invui/src/main/java/de/studiocode/invui/window/type/WindowType.java index 21e6b2f..56d56a3 100644 --- a/invui/src/main/java/de/studiocode/invui/window/type/WindowType.java +++ b/invui/src/main/java/de/studiocode/invui/window/type/WindowType.java @@ -1,6 +1,6 @@ package de.studiocode.invui.window.type; -import de.studiocode.invui.gui.AbstractGUI; +import de.studiocode.invui.gui.AbstractGui; import de.studiocode.invui.window.AnvilWindow; import de.studiocode.invui.window.CartographyWindow; import de.studiocode.invui.window.Window; @@ -24,7 +24,7 @@ public interface WindowType { return new NormalSingleWindowImpl( context.getViewer(), context.getTitle(), - (AbstractGUI) context.getGUI(), + (AbstractGui) context.getGui(), context.isCloseable(), context.isRetain() ); @@ -44,7 +44,7 @@ public interface WindowType { return new NormalMergedWindowImpl( context.getViewer(), context.getTitle(), - (AbstractGUI) context.getGUI(), + (AbstractGui) context.getGui(), context.isCloseable(), context.isRetain() ); @@ -64,8 +64,8 @@ public interface WindowType { return new NormalSplitWindowImpl( context.getViewer(), context.getTitle(), - (AbstractGUI) context.getUpperGUI(), - (AbstractGUI) context.getLowerGUI(), + (AbstractGui) context.getUpperGui(), + (AbstractGui) context.getLowerGui(), context.isCloseable(), context.isRetain() ); @@ -85,7 +85,7 @@ public interface WindowType { return new AnvilSingleWindowImpl( context.getViewer(), context.getTitle(), - (AbstractGUI) context.getGUI(), + (AbstractGui) context.getGui(), context.getRenameHandler(), context.isCloseable(), context.isRetain() @@ -106,8 +106,8 @@ public interface WindowType { return new AnvilSplitWindowImpl( context.getViewer(), context.getTitle(), - (AbstractGUI) context.getUpperGUI(), - (AbstractGUI) context.getLowerGUI(), + (AbstractGui) context.getUpperGui(), + (AbstractGui) context.getLowerGui(), context.getRenameHandler(), context.isCloseable(), context.isRetain() @@ -128,7 +128,7 @@ public interface WindowType { return new CartographySingleWindowImpl( context.getViewer(), context.getTitle(), - (AbstractGUI) context.getGUI(), + (AbstractGui) context.getGui(), context.isCloseable(), context.isRetain() ); @@ -148,8 +148,8 @@ public interface WindowType { return new CartographySplitWindowImpl( context.getViewer(), context.getTitle(), - (AbstractGUI) context.getUpperGUI(), - (AbstractGUI) context.getLowerGUI(), + (AbstractGui) context.getUpperGui(), + (AbstractGui) context.getLowerGui(), context.isCloseable(), context.isRetain() ); diff --git a/invui/src/main/java/de/studiocode/invui/window/type/context/AnvilSingleWindowContext.java b/invui/src/main/java/de/studiocode/invui/window/type/context/AnvilSingleWindowContext.java index 8fbd6dd..1fdc268 100644 --- a/invui/src/main/java/de/studiocode/invui/window/type/context/AnvilSingleWindowContext.java +++ b/invui/src/main/java/de/studiocode/invui/window/type/context/AnvilSingleWindowContext.java @@ -1,7 +1,7 @@ package de.studiocode.invui.window.type.context; -import de.studiocode.invui.gui.GUI; -import de.studiocode.invui.gui.builder.GUIBuilder; +import de.studiocode.invui.gui.Gui; +import de.studiocode.invui.gui.builder.GuiBuilder; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -11,22 +11,22 @@ import java.util.function.Supplier; public final class AnvilSingleWindowContext extends AbstractWindowContext { - private Supplier guiSupplier; + private Supplier guiSupplier; private Consumer renameHandler; - public @Nullable GUI getGUI() { + public @Nullable Gui getGui() { return guiSupplier.get(); } - public void setGUI(@NotNull Supplier guiSupplier) { + public void setGui(@NotNull Supplier guiSupplier) { this.guiSupplier = guiSupplier; } - public void setGUI(@NotNull GUI gui) { + public void setGui(@NotNull Gui gui) { this.guiSupplier = () -> gui; } - public void setGUI(@NotNull GUIBuilder builder) { + public void setGui(@NotNull GuiBuilder builder) { this.guiSupplier = builder::build; } diff --git a/invui/src/main/java/de/studiocode/invui/window/type/context/AnvilSplitWindowContext.java b/invui/src/main/java/de/studiocode/invui/window/type/context/AnvilSplitWindowContext.java index 7c58ca2..bb32346 100644 --- a/invui/src/main/java/de/studiocode/invui/window/type/context/AnvilSplitWindowContext.java +++ b/invui/src/main/java/de/studiocode/invui/window/type/context/AnvilSplitWindowContext.java @@ -1,7 +1,7 @@ package de.studiocode.invui.window.type.context; -import de.studiocode.invui.gui.GUI; -import de.studiocode.invui.gui.builder.GUIBuilder; +import de.studiocode.invui.gui.Gui; +import de.studiocode.invui.gui.builder.GuiBuilder; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -11,39 +11,39 @@ import java.util.function.Supplier; public final class AnvilSplitWindowContext extends AbstractWindowContext { - private Supplier upperGuiSupplier; - private Supplier lowerGuiSupplier; + private Supplier upperGuiSupplier; + private Supplier lowerGuiSupplier; private Consumer renameHandler; - public @Nullable GUI getUpperGUI() { + public @Nullable Gui getUpperGui() { return upperGuiSupplier.get(); } - public void setUpperGUI(@NotNull Supplier guiSupplier) { + public void setUpperGui(@NotNull Supplier guiSupplier) { this.upperGuiSupplier = guiSupplier; } - public void setUpperGUI(@NotNull GUI gui) { + public void setUpperGui(@NotNull Gui gui) { this.upperGuiSupplier = () -> gui; } - public void setUpperGUI(@NotNull GUIBuilder builder) { + public void setUpperGui(@NotNull GuiBuilder builder) { this.upperGuiSupplier = builder::build; } - public @Nullable GUI getLowerGUI() { + public @Nullable Gui getLowerGui() { return lowerGuiSupplier.get(); } - public void setLowerGUI(@NotNull Supplier guiSupplier) { + public void setLowerGui(@NotNull Supplier guiSupplier) { this.lowerGuiSupplier = guiSupplier; } - public void setLowerGUI(@NotNull GUI gui) { + public void setLowerGui(@NotNull Gui gui) { this.lowerGuiSupplier = () -> gui; } - public void setLowerGUI(@NotNull GUIBuilder builder) { + public void setLowerGui(@NotNull GuiBuilder builder) { this.lowerGuiSupplier = builder::build; } diff --git a/invui/src/main/java/de/studiocode/invui/window/type/context/CartographySingleWindowContext.java b/invui/src/main/java/de/studiocode/invui/window/type/context/CartographySingleWindowContext.java index fd1a0a2..21abf8f 100644 --- a/invui/src/main/java/de/studiocode/invui/window/type/context/CartographySingleWindowContext.java +++ b/invui/src/main/java/de/studiocode/invui/window/type/context/CartographySingleWindowContext.java @@ -1,7 +1,7 @@ package de.studiocode.invui.window.type.context; -import de.studiocode.invui.gui.GUI; -import de.studiocode.invui.gui.builder.GUIBuilder; +import de.studiocode.invui.gui.Gui; +import de.studiocode.invui.gui.builder.GuiBuilder; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -10,21 +10,21 @@ import java.util.function.Supplier; public final class CartographySingleWindowContext extends AbstractWindowContext { - private Supplier guiSupplier; + private Supplier guiSupplier; - public @Nullable GUI getGUI() { + public @Nullable Gui getGui() { return guiSupplier.get(); } - public void setGUI(@NotNull Supplier guiSupplier) { + public void setGui(@NotNull Supplier guiSupplier) { this.guiSupplier = guiSupplier; } - public void setGUI(@NotNull GUI gui) { + public void setGui(@NotNull Gui gui) { this.guiSupplier = () -> gui; } - public void setGUI(@NotNull GUIBuilder builder) { + public void setGui(@NotNull GuiBuilder builder) { this.guiSupplier = builder::build; } diff --git a/invui/src/main/java/de/studiocode/invui/window/type/context/CartographySplitWindowContext.java b/invui/src/main/java/de/studiocode/invui/window/type/context/CartographySplitWindowContext.java index 9da1a48..72a7733 100644 --- a/invui/src/main/java/de/studiocode/invui/window/type/context/CartographySplitWindowContext.java +++ b/invui/src/main/java/de/studiocode/invui/window/type/context/CartographySplitWindowContext.java @@ -1,7 +1,7 @@ package de.studiocode.invui.window.type.context; -import de.studiocode.invui.gui.GUI; -import de.studiocode.invui.gui.builder.GUIBuilder; +import de.studiocode.invui.gui.Gui; +import de.studiocode.invui.gui.builder.GuiBuilder; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -10,38 +10,38 @@ import java.util.function.Supplier; public final class CartographySplitWindowContext extends AbstractWindowContext { - private Supplier upperGuiSupplier; - private Supplier lowerGuiSupplier; + private Supplier upperGuiSupplier; + private Supplier lowerGuiSupplier; - public @Nullable GUI getUpperGUI() { + public @Nullable Gui getUpperGui() { return upperGuiSupplier.get(); } - public void setUpperGUI(@NotNull Supplier guiSupplier) { + public void setUpperGui(@NotNull Supplier guiSupplier) { this.upperGuiSupplier = guiSupplier; } - public void setUpperGUI(@NotNull GUI gui) { + public void setUpperGui(@NotNull Gui gui) { this.upperGuiSupplier = () -> gui; } - public void setUpperGUI(@NotNull GUIBuilder builder) { + public void setUpperGui(@NotNull GuiBuilder builder) { this.upperGuiSupplier = builder::build; } - public @Nullable GUI getLowerGUI() { + public @Nullable Gui getLowerGui() { return lowerGuiSupplier.get(); } - public void setLowerGUI(@NotNull Supplier guiSupplier) { + public void setLowerGui(@NotNull Supplier guiSupplier) { this.lowerGuiSupplier = guiSupplier; } - public void setLowerGUI(@NotNull GUI gui) { + public void setLowerGui(@NotNull Gui gui) { this.lowerGuiSupplier = () -> gui; } - public void setLowerGUI(@NotNull GUIBuilder builder) { + public void setLowerGui(@NotNull GuiBuilder builder) { this.lowerGuiSupplier = builder::build; } diff --git a/invui/src/main/java/de/studiocode/invui/window/type/context/NormalCombinedWindowContext.java b/invui/src/main/java/de/studiocode/invui/window/type/context/NormalCombinedWindowContext.java index 074c920..c92d49d 100644 --- a/invui/src/main/java/de/studiocode/invui/window/type/context/NormalCombinedWindowContext.java +++ b/invui/src/main/java/de/studiocode/invui/window/type/context/NormalCombinedWindowContext.java @@ -1,7 +1,7 @@ package de.studiocode.invui.window.type.context; -import de.studiocode.invui.gui.GUI; -import de.studiocode.invui.gui.builder.GUIBuilder; +import de.studiocode.invui.gui.Gui; +import de.studiocode.invui.gui.builder.GuiBuilder; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -10,21 +10,21 @@ import java.util.function.Supplier; public final class NormalCombinedWindowContext extends AbstractWindowContext { - private Supplier guiSupplier; + private Supplier guiSupplier; - public @Nullable GUI getGUI() { + public @Nullable Gui getGui() { return guiSupplier.get(); } - public void setGUI(@NotNull Supplier guiSupplier) { + public void setGui(@NotNull Supplier guiSupplier) { this.guiSupplier = guiSupplier; } - public void setGUI(@NotNull GUI gui) { + public void setGui(@NotNull Gui gui) { this.guiSupplier = () -> gui; } - public void setGUI(@NotNull GUIBuilder builder) { + public void setGui(@NotNull GuiBuilder builder) { this.guiSupplier = builder::build; } diff --git a/invui/src/main/java/de/studiocode/invui/window/type/context/NormalSingleWindowContext.java b/invui/src/main/java/de/studiocode/invui/window/type/context/NormalSingleWindowContext.java index 9c7ecc6..db00b45 100644 --- a/invui/src/main/java/de/studiocode/invui/window/type/context/NormalSingleWindowContext.java +++ b/invui/src/main/java/de/studiocode/invui/window/type/context/NormalSingleWindowContext.java @@ -1,7 +1,7 @@ package de.studiocode.invui.window.type.context; -import de.studiocode.invui.gui.GUI; -import de.studiocode.invui.gui.builder.GUIBuilder; +import de.studiocode.invui.gui.Gui; +import de.studiocode.invui.gui.builder.GuiBuilder; import org.bukkit.OfflinePlayer; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -11,21 +11,21 @@ import java.util.function.Supplier; public final class NormalSingleWindowContext extends AbstractWindowContext { - private Supplier guiSupplier; + private Supplier guiSupplier; - public @Nullable GUI getGUI() { + public @Nullable Gui getGui() { return guiSupplier.get(); } - public void setGUI(@NotNull Supplier guiSupplier) { + public void setGui(@NotNull Supplier guiSupplier) { this.guiSupplier = guiSupplier; } - public void setGUI(@NotNull GUI gui) { + public void setGui(@NotNull Gui gui) { this.guiSupplier = () -> gui; } - public void setGUI(@NotNull GUIBuilder builder) { + public void setGui(@NotNull GuiBuilder builder) { this.guiSupplier = builder::build; } diff --git a/invui/src/main/java/de/studiocode/invui/window/type/context/NormalSplitWindowContext.java b/invui/src/main/java/de/studiocode/invui/window/type/context/NormalSplitWindowContext.java index 078d371..5ee9bf0 100644 --- a/invui/src/main/java/de/studiocode/invui/window/type/context/NormalSplitWindowContext.java +++ b/invui/src/main/java/de/studiocode/invui/window/type/context/NormalSplitWindowContext.java @@ -1,7 +1,7 @@ package de.studiocode.invui.window.type.context; -import de.studiocode.invui.gui.GUI; -import de.studiocode.invui.gui.builder.GUIBuilder; +import de.studiocode.invui.gui.Gui; +import de.studiocode.invui.gui.builder.GuiBuilder; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -10,38 +10,38 @@ import java.util.function.Supplier; public final class NormalSplitWindowContext extends AbstractWindowContext { - private Supplier upperGuiSupplier; - private Supplier lowerGuiSupplier; + private Supplier upperGuiSupplier; + private Supplier lowerGuiSupplier; - public @Nullable GUI getUpperGUI() { + public @Nullable Gui getUpperGui() { return upperGuiSupplier.get(); } - public void setUpperGUI(@NotNull Supplier guiSupplier) { + public void setUpperGui(@NotNull Supplier guiSupplier) { this.upperGuiSupplier = guiSupplier; } - public void setUpperGUI(@NotNull GUI gui) { + public void setUpperGui(@NotNull Gui gui) { this.upperGuiSupplier = () -> gui; } - public void setUpperGUI(@NotNull GUIBuilder builder) { + public void setUpperGui(@NotNull GuiBuilder builder) { this.upperGuiSupplier = builder::build; } - public @Nullable GUI getLowerGUI() { + public @Nullable Gui getLowerGui() { return lowerGuiSupplier.get(); } - public void setLowerGUI(@NotNull Supplier guiSupplier) { + public void setLowerGui(@NotNull Supplier guiSupplier) { this.lowerGuiSupplier = guiSupplier; } - public void setLowerGUI(@NotNull GUI gui) { + public void setLowerGui(@NotNull Gui gui) { this.lowerGuiSupplier = () -> gui; } - public void setLowerGUI(@NotNull GUIBuilder builder) { + public void setLowerGui(@NotNull GuiBuilder builder) { this.lowerGuiSupplier = builder::build; }