From 18113cc68ac111274f32cc091a9fc69f8d40f86d Mon Sep 17 00:00:00 2001 From: NichtStudioCode <51272202+NichtStudioCode@users.noreply.github.com> Date: Sat, 28 Jan 2023 17:55:26 +0100 Subject: [PATCH] Improved WindowBuilder --- .../kotlin/xyz/xenondevs/invui/Windows.kt | 11 +- .../adventure/AdventureWindowContexts.kt | 3 +- .../invui/gui/builder/GuiBuilder.java | 2 +- .../invui/gui/builder/guitype/GuiType.java | 19 +- .../gui/builder/guitype/NormalGUIType.java | 3 +- .../gui/builder/guitype/PagedGUIsGUIType.java | 3 +- .../builder/guitype/PagedItemsGUIType.java | 3 +- .../builder/guitype/ScrollGUIsGUIType.java | 3 +- .../builder/guitype/ScrollItemsGUIType.java | 3 +- .../gui/builder/guitype/ScrollVIGUIType.java | 3 +- .../invui/gui/builder/guitype/TabGUIType.java | 3 +- .../xyz/xenondevs/invui/window/Window.java | 2 +- .../builder/AbstractSingleWindowBuilder.java | 30 ++++ .../builder/AbstractSplitWindowBuilder.java | 45 +++++ .../window/builder/AbstractWindowBuilder.java | 72 ++++++++ .../builder/AnvilSingleWindowBuilder.java | 43 +++++ .../builder/AnvilSplitWindowBuilder.java | 45 +++++ .../CartographySingleWindowBuilder.java | 34 ++++ .../CartographySplitWindowBuilder.java | 35 ++++ .../builder/NormalMergedWindowBuilder.java | 34 ++++ .../builder/NormalSingleWindowBuilder.java | 41 +++++ .../builder/NormalSplitWindowBuilder.java | 35 ++++ .../invui/window/builder/WindowBuilder.java | 10 ++ .../invui/window/builder/WindowType.java | 39 ++++ .../invui/window/type/WindowType.java | 170 ------------------ .../type/context/AbstractWindowContext.java | 59 ------ .../context/AnvilSingleWindowContext.java | 41 ----- .../type/context/AnvilSplitWindowContext.java | 58 ------ .../CartographySingleWindowContext.java | 31 ---- .../CartographySplitWindowContext.java | 48 ----- .../context/NormalCombinedWindowContext.java | 31 ---- .../context/NormalSingleWindowContext.java | 36 ---- .../context/NormalSplitWindowContext.java | 48 ----- .../window/type/context/WindowContext.java | 4 - 34 files changed, 502 insertions(+), 545 deletions(-) create mode 100644 invui/src/main/java/xyz/xenondevs/invui/window/builder/AbstractSingleWindowBuilder.java create mode 100644 invui/src/main/java/xyz/xenondevs/invui/window/builder/AbstractSplitWindowBuilder.java create mode 100644 invui/src/main/java/xyz/xenondevs/invui/window/builder/AbstractWindowBuilder.java create mode 100644 invui/src/main/java/xyz/xenondevs/invui/window/builder/AnvilSingleWindowBuilder.java create mode 100644 invui/src/main/java/xyz/xenondevs/invui/window/builder/AnvilSplitWindowBuilder.java create mode 100644 invui/src/main/java/xyz/xenondevs/invui/window/builder/CartographySingleWindowBuilder.java create mode 100644 invui/src/main/java/xyz/xenondevs/invui/window/builder/CartographySplitWindowBuilder.java create mode 100644 invui/src/main/java/xyz/xenondevs/invui/window/builder/NormalMergedWindowBuilder.java create mode 100644 invui/src/main/java/xyz/xenondevs/invui/window/builder/NormalSingleWindowBuilder.java create mode 100644 invui/src/main/java/xyz/xenondevs/invui/window/builder/NormalSplitWindowBuilder.java create mode 100644 invui/src/main/java/xyz/xenondevs/invui/window/builder/WindowBuilder.java create mode 100644 invui/src/main/java/xyz/xenondevs/invui/window/builder/WindowType.java delete mode 100644 invui/src/main/java/xyz/xenondevs/invui/window/type/WindowType.java delete mode 100644 invui/src/main/java/xyz/xenondevs/invui/window/type/context/AbstractWindowContext.java delete mode 100644 invui/src/main/java/xyz/xenondevs/invui/window/type/context/AnvilSingleWindowContext.java delete mode 100644 invui/src/main/java/xyz/xenondevs/invui/window/type/context/AnvilSplitWindowContext.java delete mode 100644 invui/src/main/java/xyz/xenondevs/invui/window/type/context/CartographySingleWindowContext.java delete mode 100644 invui/src/main/java/xyz/xenondevs/invui/window/type/context/CartographySplitWindowContext.java delete mode 100644 invui/src/main/java/xyz/xenondevs/invui/window/type/context/NormalCombinedWindowContext.java delete mode 100644 invui/src/main/java/xyz/xenondevs/invui/window/type/context/NormalSingleWindowContext.java delete mode 100644 invui/src/main/java/xyz/xenondevs/invui/window/type/context/NormalSplitWindowContext.java delete mode 100644 invui/src/main/java/xyz/xenondevs/invui/window/type/context/WindowContext.java diff --git a/invui-kotlin/src/main/kotlin/xyz/xenondevs/invui/Windows.kt b/invui-kotlin/src/main/kotlin/xyz/xenondevs/invui/Windows.kt index e5ca1e1..ccd7ffe 100644 --- a/invui-kotlin/src/main/kotlin/xyz/xenondevs/invui/Windows.kt +++ b/invui-kotlin/src/main/kotlin/xyz/xenondevs/invui/Windows.kt @@ -3,10 +3,11 @@ package xyz.xenondevs.invui.window.type import xyz.xenondevs.invui.window.Window -import xyz.xenondevs.invui.window.type.context.WindowContext +import xyz.xenondevs.invui.window.builder.WindowBuilder +import xyz.xenondevs.invui.window.builder.WindowType -fun WindowType.create(contextConsumer: C.() -> Unit): W { - val ctx = createContext() - ctx.contextConsumer() - return createWindow(ctx) +fun > WindowType.create(builderConsumer: B.() -> Unit): W { + val builder = builder() + builder.builderConsumer() + return builder.build() } \ No newline at end of file diff --git a/invui-kotlin/src/main/kotlin/xyz/xenondevs/invui/adventure/AdventureWindowContexts.kt b/invui-kotlin/src/main/kotlin/xyz/xenondevs/invui/adventure/AdventureWindowContexts.kt index 175f778..175baed 100644 --- a/invui-kotlin/src/main/kotlin/xyz/xenondevs/invui/adventure/AdventureWindowContexts.kt +++ b/invui-kotlin/src/main/kotlin/xyz/xenondevs/invui/adventure/AdventureWindowContexts.kt @@ -4,8 +4,9 @@ package xyz.xenondevs.invui.window.type.context import net.kyori.adventure.text.Component import xyz.xenondevs.inventoryaccess.component.AdventureComponentWrapper +import xyz.xenondevs.invui.window.builder.AbstractWindowBuilder /** * Sets the title of the window. */ -fun AbstractWindowContext<*>.setTitle(title: Component) = setTitle(AdventureComponentWrapper(title)) \ No newline at end of file +fun AbstractWindowBuilder<*, *, *>.setTitle(title: Component) = setTitle(AdventureComponentWrapper(title)) \ No newline at end of file diff --git a/invui/src/main/java/xyz/xenondevs/invui/gui/builder/GuiBuilder.java b/invui/src/main/java/xyz/xenondevs/invui/gui/builder/GuiBuilder.java index e437dfa..4122446 100644 --- a/invui/src/main/java/xyz/xenondevs/invui/gui/builder/GuiBuilder.java +++ b/invui/src/main/java/xyz/xenondevs/invui/gui/builder/GuiBuilder.java @@ -116,7 +116,7 @@ public class GuiBuilder { return this; } - public G build() { + public @NotNull G build() { if (context.getStructure() == null) throw new IllegalStateException("GuiContext has not been set yet."); diff --git a/invui/src/main/java/xyz/xenondevs/invui/gui/builder/guitype/GuiType.java b/invui/src/main/java/xyz/xenondevs/invui/gui/builder/guitype/GuiType.java index 4d0e200..58b05b2 100644 --- a/invui/src/main/java/xyz/xenondevs/invui/gui/builder/guitype/GuiType.java +++ b/invui/src/main/java/xyz/xenondevs/invui/gui/builder/guitype/GuiType.java @@ -1,9 +1,11 @@ package xyz.xenondevs.invui.gui.builder.guitype; +import org.jetbrains.annotations.NotNull; import xyz.xenondevs.invui.gui.Gui; import xyz.xenondevs.invui.gui.PagedGui; import xyz.xenondevs.invui.gui.ScrollGui; import xyz.xenondevs.invui.gui.TabGui; +import xyz.xenondevs.invui.gui.builder.GuiBuilder; import xyz.xenondevs.invui.gui.builder.GuiContext; import xyz.xenondevs.invui.item.Item; import xyz.xenondevs.invui.virtualinventory.VirtualInventory; @@ -19,11 +21,20 @@ public interface GuiType { GuiType, VirtualInventory> SCROLL_INVENTORY = new ScrollVIGuiType(); /** - * Creates a {@link Gui} of type {@link G} with the given {@link GuiContext} + * 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} + * @param context The {@link GuiContext} to create the {@link Gui} from. + * @return The created {@link Gui} */ - G createGui(GuiContext context); + @NotNull G createGui(@NotNull GuiContext context); + + /** + * Creates a new {@link GuiBuilder} for this {@link GuiType}. + * + * @return The created {@link GuiBuilder}. + */ + default @NotNull GuiBuilder builder() { + return new GuiBuilder<>(this); + } } diff --git a/invui/src/main/java/xyz/xenondevs/invui/gui/builder/guitype/NormalGUIType.java b/invui/src/main/java/xyz/xenondevs/invui/gui/builder/guitype/NormalGUIType.java index fdf6092..234b61a 100644 --- a/invui/src/main/java/xyz/xenondevs/invui/gui/builder/guitype/NormalGUIType.java +++ b/invui/src/main/java/xyz/xenondevs/invui/gui/builder/guitype/NormalGUIType.java @@ -1,5 +1,6 @@ package xyz.xenondevs.invui.gui.builder.guitype; +import org.jetbrains.annotations.NotNull; import xyz.xenondevs.invui.gui.Gui; import xyz.xenondevs.invui.gui.builder.GuiContext; import xyz.xenondevs.invui.gui.impl.NormalGuiImpl; @@ -7,7 +8,7 @@ import xyz.xenondevs.invui.gui.impl.NormalGuiImpl; class NormalGuiType implements GuiType { @Override - public NormalGuiImpl createGui(GuiContext context) { + public @NotNull NormalGuiImpl createGui(@NotNull GuiContext context) { NormalGuiImpl gui = new NormalGuiImpl(context.getStructure()); gui.setBackground(context.getBackground()); return gui; diff --git a/invui/src/main/java/xyz/xenondevs/invui/gui/builder/guitype/PagedGUIsGUIType.java b/invui/src/main/java/xyz/xenondevs/invui/gui/builder/guitype/PagedGUIsGUIType.java index d6642cc..78c5060 100644 --- a/invui/src/main/java/xyz/xenondevs/invui/gui/builder/guitype/PagedGUIsGUIType.java +++ b/invui/src/main/java/xyz/xenondevs/invui/gui/builder/guitype/PagedGUIsGUIType.java @@ -1,5 +1,6 @@ package xyz.xenondevs.invui.gui.builder.guitype; +import org.jetbrains.annotations.NotNull; import xyz.xenondevs.invui.gui.Gui; import xyz.xenondevs.invui.gui.PagedGui; import xyz.xenondevs.invui.gui.builder.GuiContext; @@ -8,7 +9,7 @@ import xyz.xenondevs.invui.gui.impl.PagedNestedGuiImpl; class PagedGuisGuiType implements GuiType, Gui> { @Override - public PagedNestedGuiImpl createGui(GuiContext context) { + public @NotNull PagedNestedGuiImpl createGui(@NotNull GuiContext context) { PagedNestedGuiImpl gui = new PagedNestedGuiImpl(context.getContent(), context.getStructure()); gui.setBackground(context.getBackground()); return gui; diff --git a/invui/src/main/java/xyz/xenondevs/invui/gui/builder/guitype/PagedItemsGUIType.java b/invui/src/main/java/xyz/xenondevs/invui/gui/builder/guitype/PagedItemsGUIType.java index ce91483..6c90b68 100644 --- a/invui/src/main/java/xyz/xenondevs/invui/gui/builder/guitype/PagedItemsGUIType.java +++ b/invui/src/main/java/xyz/xenondevs/invui/gui/builder/guitype/PagedItemsGUIType.java @@ -1,5 +1,6 @@ package xyz.xenondevs.invui.gui.builder.guitype; +import org.jetbrains.annotations.NotNull; import xyz.xenondevs.invui.gui.PagedGui; import xyz.xenondevs.invui.gui.builder.GuiContext; import xyz.xenondevs.invui.gui.impl.PagedItemsGuiImpl; @@ -8,7 +9,7 @@ import xyz.xenondevs.invui.item.Item; class PagedItemsGuiType implements GuiType, Item> { @Override - public PagedItemsGuiImpl createGui(GuiContext context) { + public @NotNull PagedItemsGuiImpl createGui(@NotNull GuiContext context) { PagedItemsGuiImpl gui = new PagedItemsGuiImpl(context.getContent(), context.getStructure()); gui.setBackground(context.getBackground()); return gui; diff --git a/invui/src/main/java/xyz/xenondevs/invui/gui/builder/guitype/ScrollGUIsGUIType.java b/invui/src/main/java/xyz/xenondevs/invui/gui/builder/guitype/ScrollGUIsGUIType.java index 11a50d0..d203dca 100644 --- a/invui/src/main/java/xyz/xenondevs/invui/gui/builder/guitype/ScrollGUIsGUIType.java +++ b/invui/src/main/java/xyz/xenondevs/invui/gui/builder/guitype/ScrollGUIsGUIType.java @@ -1,5 +1,6 @@ package xyz.xenondevs.invui.gui.builder.guitype; +import org.jetbrains.annotations.NotNull; import xyz.xenondevs.invui.gui.Gui; import xyz.xenondevs.invui.gui.ScrollGui; import xyz.xenondevs.invui.gui.builder.GuiContext; @@ -8,7 +9,7 @@ import xyz.xenondevs.invui.gui.impl.ScrollNestedGuiImpl; class ScrollGuisGuiType implements GuiType, Gui> { @Override - public ScrollNestedGuiImpl createGui(GuiContext context) { + public @NotNull ScrollNestedGuiImpl createGui(@NotNull GuiContext context) { ScrollNestedGuiImpl gui = new ScrollNestedGuiImpl(context.getContent(), context.getStructure()); gui.setBackground(gui.getBackground()); return gui; diff --git a/invui/src/main/java/xyz/xenondevs/invui/gui/builder/guitype/ScrollItemsGUIType.java b/invui/src/main/java/xyz/xenondevs/invui/gui/builder/guitype/ScrollItemsGUIType.java index f300fa7..dd374b2 100644 --- a/invui/src/main/java/xyz/xenondevs/invui/gui/builder/guitype/ScrollItemsGUIType.java +++ b/invui/src/main/java/xyz/xenondevs/invui/gui/builder/guitype/ScrollItemsGUIType.java @@ -1,5 +1,6 @@ package xyz.xenondevs.invui.gui.builder.guitype; +import org.jetbrains.annotations.NotNull; import xyz.xenondevs.invui.gui.ScrollGui; import xyz.xenondevs.invui.gui.builder.GuiContext; import xyz.xenondevs.invui.gui.impl.ScrollItemsGuiImpl; @@ -8,7 +9,7 @@ import xyz.xenondevs.invui.item.Item; class ScrollItemsGuiType implements GuiType, Item> { @Override - public ScrollItemsGuiImpl createGui(GuiContext context) { + public @NotNull ScrollItemsGuiImpl createGui(@NotNull GuiContext context) { ScrollItemsGuiImpl gui = new ScrollItemsGuiImpl(context.getContent(), context.getStructure()); gui.setBackground(context.getBackground()); return gui; diff --git a/invui/src/main/java/xyz/xenondevs/invui/gui/builder/guitype/ScrollVIGUIType.java b/invui/src/main/java/xyz/xenondevs/invui/gui/builder/guitype/ScrollVIGUIType.java index a1944f6..5dfa5b9 100644 --- a/invui/src/main/java/xyz/xenondevs/invui/gui/builder/guitype/ScrollVIGUIType.java +++ b/invui/src/main/java/xyz/xenondevs/invui/gui/builder/guitype/ScrollVIGUIType.java @@ -1,5 +1,6 @@ package xyz.xenondevs.invui.gui.builder.guitype; +import org.jetbrains.annotations.NotNull; import xyz.xenondevs.invui.gui.ScrollGui; import xyz.xenondevs.invui.gui.builder.GuiContext; import xyz.xenondevs.invui.gui.impl.ScrollVIGuiImpl; @@ -8,7 +9,7 @@ import xyz.xenondevs.invui.virtualinventory.VirtualInventory; class ScrollVIGuiType implements GuiType, VirtualInventory> { @Override - public ScrollVIGuiImpl createGui(GuiContext context) { + public @NotNull ScrollVIGuiImpl createGui(@NotNull GuiContext context) { ScrollVIGuiImpl gui = new ScrollVIGuiImpl(context.getContent(), context.getStructure()); gui.setBackground(context.getBackground()); return gui; diff --git a/invui/src/main/java/xyz/xenondevs/invui/gui/builder/guitype/TabGUIType.java b/invui/src/main/java/xyz/xenondevs/invui/gui/builder/guitype/TabGUIType.java index 71c70b1..8a16d4e 100644 --- a/invui/src/main/java/xyz/xenondevs/invui/gui/builder/guitype/TabGUIType.java +++ b/invui/src/main/java/xyz/xenondevs/invui/gui/builder/guitype/TabGUIType.java @@ -1,5 +1,6 @@ package xyz.xenondevs.invui.gui.builder.guitype; +import org.jetbrains.annotations.NotNull; import xyz.xenondevs.invui.gui.Gui; import xyz.xenondevs.invui.gui.TabGui; import xyz.xenondevs.invui.gui.builder.GuiContext; @@ -8,7 +9,7 @@ import xyz.xenondevs.invui.gui.impl.TabGuiImpl; class TabGuiType implements GuiType { @Override - public TabGuiImpl createGui(GuiContext context) { + public @NotNull TabGuiImpl createGui(@NotNull GuiContext context) { TabGuiImpl gui = new TabGuiImpl(context.getContent(), context.getStructure()); gui.setBackground(context.getBackground()); return gui; diff --git a/invui/src/main/java/xyz/xenondevs/invui/window/Window.java b/invui/src/main/java/xyz/xenondevs/invui/window/Window.java index b260f14..3a5bca9 100644 --- a/invui/src/main/java/xyz/xenondevs/invui/window/Window.java +++ b/invui/src/main/java/xyz/xenondevs/invui/window/Window.java @@ -6,7 +6,7 @@ import org.bukkit.inventory.Inventory; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import xyz.xenondevs.inventoryaccess.component.ComponentWrapper; -import xyz.xenondevs.invui.window.type.WindowType; +import xyz.xenondevs.invui.window.builder.WindowType; import java.util.UUID; diff --git a/invui/src/main/java/xyz/xenondevs/invui/window/builder/AbstractSingleWindowBuilder.java b/invui/src/main/java/xyz/xenondevs/invui/window/builder/AbstractSingleWindowBuilder.java new file mode 100644 index 0000000..c34662e --- /dev/null +++ b/invui/src/main/java/xyz/xenondevs/invui/window/builder/AbstractSingleWindowBuilder.java @@ -0,0 +1,30 @@ +package xyz.xenondevs.invui.window.builder; + +import org.jetbrains.annotations.NotNull; +import xyz.xenondevs.invui.gui.Gui; +import xyz.xenondevs.invui.gui.builder.GuiBuilder; +import xyz.xenondevs.invui.window.Window; + +import java.util.function.Supplier; + +public abstract class AbstractSingleWindowBuilder> extends AbstractWindowBuilder { + + protected Supplier guiSupplier; + + public S setGui(@NotNull Supplier guiSupplier) { + this.guiSupplier = guiSupplier; + return getThis(); + } + + public S setGui(@NotNull Gui gui) { + this.guiSupplier = () -> gui; + return getThis(); + } + + public S setGui(@NotNull GuiBuilder builder) { + this.guiSupplier = builder::build; + return getThis(); + } + + +} diff --git a/invui/src/main/java/xyz/xenondevs/invui/window/builder/AbstractSplitWindowBuilder.java b/invui/src/main/java/xyz/xenondevs/invui/window/builder/AbstractSplitWindowBuilder.java new file mode 100644 index 0000000..95a497f --- /dev/null +++ b/invui/src/main/java/xyz/xenondevs/invui/window/builder/AbstractSplitWindowBuilder.java @@ -0,0 +1,45 @@ +package xyz.xenondevs.invui.window.builder; + +import org.jetbrains.annotations.NotNull; +import xyz.xenondevs.invui.gui.Gui; +import xyz.xenondevs.invui.gui.builder.GuiBuilder; +import xyz.xenondevs.invui.window.Window; + +import java.util.function.Supplier; + +public abstract class AbstractSplitWindowBuilder> extends AbstractWindowBuilder { + + protected Supplier upperGuiSupplier; + protected Supplier lowerGuiSupplier; + + public S setUpperGui(@NotNull Supplier guiSupplier) { + this.upperGuiSupplier = guiSupplier; + return getThis(); + } + + public S setUpperGui(@NotNull Gui gui) { + this.upperGuiSupplier = () -> gui; + return getThis(); + } + + public S setUpperGui(@NotNull GuiBuilder builder) { + this.upperGuiSupplier = builder::build; + return getThis(); + } + + public S setLowerGui(@NotNull Supplier guiSupplier) { + this.lowerGuiSupplier = guiSupplier; + return getThis(); + } + + public S setLowerGui(@NotNull Gui gui) { + this.lowerGuiSupplier = () -> gui; + return getThis(); + } + + public S setLowerGui(@NotNull GuiBuilder builder) { + this.lowerGuiSupplier = builder::build; + return getThis(); + } + +} diff --git a/invui/src/main/java/xyz/xenondevs/invui/window/builder/AbstractWindowBuilder.java b/invui/src/main/java/xyz/xenondevs/invui/window/builder/AbstractWindowBuilder.java new file mode 100644 index 0000000..b74645f --- /dev/null +++ b/invui/src/main/java/xyz/xenondevs/invui/window/builder/AbstractWindowBuilder.java @@ -0,0 +1,72 @@ +package xyz.xenondevs.invui.window.builder; + +import net.md_5.bungee.api.chat.BaseComponent; +import net.md_5.bungee.api.chat.TextComponent; +import org.jetbrains.annotations.NotNull; +import xyz.xenondevs.inventoryaccess.component.BaseComponentWrapper; +import xyz.xenondevs.inventoryaccess.component.ComponentWrapper; +import xyz.xenondevs.invui.window.Window; + +import java.util.ArrayList; +import java.util.List; + +public abstract class AbstractWindowBuilder> implements WindowBuilder { + + protected V viewer; + protected ComponentWrapper title; + protected boolean closeable = true; + protected boolean retain = false; + protected List closeHandlers; + + public S setViewer(@NotNull V viewer) { + this.viewer = viewer; + return getThis(); + } + + public S setTitle(@NotNull ComponentWrapper title) { + this.title = title; + return getThis(); + } + + public S setTitle(@NotNull BaseComponent @NotNull [] title) { + this.title = new BaseComponentWrapper(title); + return getThis(); + } + + public S setTitle(@NotNull String title) { + this.title = new BaseComponentWrapper(TextComponent.fromLegacyText(title)); + return getThis(); + } + + public S setCloseable(boolean closeable) { + this.closeable = closeable; + return getThis(); + } + + public S setRetain(boolean retain) { + this.retain = retain; + return getThis(); + } + + public S setCloseHandlers(List closeHandlers) { + this.closeHandlers = closeHandlers; + return getThis(); + } + + public S addCloseHandler(Runnable closeHandler) { + if (closeHandlers == null) + closeHandlers = new ArrayList<>(); + + closeHandlers.add(closeHandler); + return getThis(); + } + + protected void applyChanges(W window) { + if (closeHandlers != null) { + closeHandlers.forEach(window::addCloseHandler); + } + } + + protected abstract S getThis(); + +} diff --git a/invui/src/main/java/xyz/xenondevs/invui/window/builder/AnvilSingleWindowBuilder.java b/invui/src/main/java/xyz/xenondevs/invui/window/builder/AnvilSingleWindowBuilder.java new file mode 100644 index 0000000..aea0df3 --- /dev/null +++ b/invui/src/main/java/xyz/xenondevs/invui/window/builder/AnvilSingleWindowBuilder.java @@ -0,0 +1,43 @@ +package xyz.xenondevs.invui.window.builder; + +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; +import xyz.xenondevs.invui.gui.AbstractGui; +import xyz.xenondevs.invui.window.AnvilWindow; +import xyz.xenondevs.invui.window.impl.AnvilSingleWindowImpl; + +import java.util.function.Consumer; + +public final class AnvilSingleWindowBuilder extends AbstractSingleWindowBuilder { + + private Consumer renameHandler; + + AnvilSingleWindowBuilder() { + } + + public void setRenameHandler(@NotNull Consumer renameHandler) { + this.renameHandler = renameHandler; + } + + @Override + public @NotNull AnvilWindow build() { + var window = new AnvilSingleWindowImpl( + viewer, + title, + (AbstractGui) guiSupplier.get(), + renameHandler, + closeable, + retain + ); + + applyChanges(window); + + return window; + } + + @Override + protected AnvilSingleWindowBuilder getThis() { + return null; + } + +} diff --git a/invui/src/main/java/xyz/xenondevs/invui/window/builder/AnvilSplitWindowBuilder.java b/invui/src/main/java/xyz/xenondevs/invui/window/builder/AnvilSplitWindowBuilder.java new file mode 100644 index 0000000..563ec74 --- /dev/null +++ b/invui/src/main/java/xyz/xenondevs/invui/window/builder/AnvilSplitWindowBuilder.java @@ -0,0 +1,45 @@ +package xyz.xenondevs.invui.window.builder; + +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; +import xyz.xenondevs.invui.gui.AbstractGui; +import xyz.xenondevs.invui.window.AnvilWindow; +import xyz.xenondevs.invui.window.impl.AnvilSplitWindowImpl; + +import java.util.function.Consumer; + +public final class AnvilSplitWindowBuilder extends AbstractSplitWindowBuilder { + + private Consumer renameHandler; + + AnvilSplitWindowBuilder() { + } + + public AnvilSplitWindowBuilder setRenameHandler(@NotNull Consumer renameHandler) { + this.renameHandler = renameHandler; + return this; + } + + @Override + public @NotNull AnvilWindow build() { + var window = new AnvilSplitWindowImpl( + viewer, + title, + (AbstractGui) upperGuiSupplier.get(), + (AbstractGui) lowerGuiSupplier.get(), + renameHandler, + closeable, + retain + ); + + applyChanges(window); + + return window; + } + + @Override + protected AnvilSplitWindowBuilder getThis() { + return this; + } + +} diff --git a/invui/src/main/java/xyz/xenondevs/invui/window/builder/CartographySingleWindowBuilder.java b/invui/src/main/java/xyz/xenondevs/invui/window/builder/CartographySingleWindowBuilder.java new file mode 100644 index 0000000..3445c34 --- /dev/null +++ b/invui/src/main/java/xyz/xenondevs/invui/window/builder/CartographySingleWindowBuilder.java @@ -0,0 +1,34 @@ +package xyz.xenondevs.invui.window.builder; + +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; +import xyz.xenondevs.invui.gui.AbstractGui; +import xyz.xenondevs.invui.window.CartographyWindow; +import xyz.xenondevs.invui.window.impl.CartographySingleWindowImpl; + +public final class CartographySingleWindowBuilder extends AbstractSingleWindowBuilder { + + CartographySingleWindowBuilder() { + } + + @Override + public @NotNull CartographyWindow build() { + var window = new CartographySingleWindowImpl( + viewer, + title, + (AbstractGui) guiSupplier.get(), + closeable, + retain + ); + + applyChanges(window); + + return window; + } + + @Override + protected CartographySingleWindowBuilder getThis() { + return this; + } + +} diff --git a/invui/src/main/java/xyz/xenondevs/invui/window/builder/CartographySplitWindowBuilder.java b/invui/src/main/java/xyz/xenondevs/invui/window/builder/CartographySplitWindowBuilder.java new file mode 100644 index 0000000..0a93fdc --- /dev/null +++ b/invui/src/main/java/xyz/xenondevs/invui/window/builder/CartographySplitWindowBuilder.java @@ -0,0 +1,35 @@ +package xyz.xenondevs.invui.window.builder; + +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; +import xyz.xenondevs.invui.gui.AbstractGui; +import xyz.xenondevs.invui.window.CartographyWindow; +import xyz.xenondevs.invui.window.impl.CartographySplitWindowImpl; + +public final class CartographySplitWindowBuilder extends AbstractSplitWindowBuilder { + + CartographySplitWindowBuilder() { + } + + @Override + public @NotNull CartographyWindow build() { + var window = new CartographySplitWindowImpl( + viewer, + title, + (AbstractGui) upperGuiSupplier.get(), + (AbstractGui) lowerGuiSupplier.get(), + closeable, + retain + ); + + applyChanges(window); + + return window; + } + + @Override + protected CartographySplitWindowBuilder getThis() { + return this; + } + +} diff --git a/invui/src/main/java/xyz/xenondevs/invui/window/builder/NormalMergedWindowBuilder.java b/invui/src/main/java/xyz/xenondevs/invui/window/builder/NormalMergedWindowBuilder.java new file mode 100644 index 0000000..5b51e80 --- /dev/null +++ b/invui/src/main/java/xyz/xenondevs/invui/window/builder/NormalMergedWindowBuilder.java @@ -0,0 +1,34 @@ +package xyz.xenondevs.invui.window.builder; + +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; +import xyz.xenondevs.invui.gui.AbstractGui; +import xyz.xenondevs.invui.window.Window; +import xyz.xenondevs.invui.window.impl.NormalMergedWindowImpl; + +public final class NormalMergedWindowBuilder extends AbstractSingleWindowBuilder { + + NormalMergedWindowBuilder() { + } + + @Override + public @NotNull Window build() { + var window = new NormalMergedWindowImpl( + viewer, + title, + (AbstractGui) guiSupplier.get(), + closeable, + retain + ); + + applyChanges(window); + + return window; + } + + @Override + protected NormalMergedWindowBuilder getThis() { + return this; + } + +} diff --git a/invui/src/main/java/xyz/xenondevs/invui/window/builder/NormalSingleWindowBuilder.java b/invui/src/main/java/xyz/xenondevs/invui/window/builder/NormalSingleWindowBuilder.java new file mode 100644 index 0000000..6548c6d --- /dev/null +++ b/invui/src/main/java/xyz/xenondevs/invui/window/builder/NormalSingleWindowBuilder.java @@ -0,0 +1,41 @@ +package xyz.xenondevs.invui.window.builder; + +import org.bukkit.OfflinePlayer; +import org.jetbrains.annotations.NotNull; +import xyz.xenondevs.invui.gui.AbstractGui; +import xyz.xenondevs.invui.window.Window; +import xyz.xenondevs.invui.window.impl.NormalSingleWindowImpl; + +import java.util.UUID; + +public final class NormalSingleWindowBuilder extends AbstractSingleWindowBuilder { + + NormalSingleWindowBuilder() { + } + + public NormalSingleWindowBuilder setViewer(@NotNull OfflinePlayer player) { + setViewer(player.getUniqueId()); + return this; + } + + @Override + public @NotNull Window build() { + var window = new NormalSingleWindowImpl( + viewer, + title, + (AbstractGui) guiSupplier.get(), + closeable, + retain + ); + + applyChanges(window); + + return window; + } + + @Override + protected NormalSingleWindowBuilder getThis() { + return this; + } + +} diff --git a/invui/src/main/java/xyz/xenondevs/invui/window/builder/NormalSplitWindowBuilder.java b/invui/src/main/java/xyz/xenondevs/invui/window/builder/NormalSplitWindowBuilder.java new file mode 100644 index 0000000..53473e6 --- /dev/null +++ b/invui/src/main/java/xyz/xenondevs/invui/window/builder/NormalSplitWindowBuilder.java @@ -0,0 +1,35 @@ +package xyz.xenondevs.invui.window.builder; + +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; +import xyz.xenondevs.invui.gui.AbstractGui; +import xyz.xenondevs.invui.window.Window; +import xyz.xenondevs.invui.window.impl.NormalSplitWindowImpl; + +public final class NormalSplitWindowBuilder extends AbstractSplitWindowBuilder { + + NormalSplitWindowBuilder() { + } + + @Override + public @NotNull Window build() { + var window = new NormalSplitWindowImpl( + viewer, + title, + (AbstractGui) upperGuiSupplier.get(), + (AbstractGui) lowerGuiSupplier.get(), + closeable, + retain + ); + + applyChanges(window); + + return window; + } + + @Override + protected NormalSplitWindowBuilder getThis() { + return this; + } + +} diff --git a/invui/src/main/java/xyz/xenondevs/invui/window/builder/WindowBuilder.java b/invui/src/main/java/xyz/xenondevs/invui/window/builder/WindowBuilder.java new file mode 100644 index 0000000..850949e --- /dev/null +++ b/invui/src/main/java/xyz/xenondevs/invui/window/builder/WindowBuilder.java @@ -0,0 +1,10 @@ +package xyz.xenondevs.invui.window.builder; + +import org.jetbrains.annotations.NotNull; +import xyz.xenondevs.invui.window.Window; + +public interface WindowBuilder { + + @NotNull W build(); + +} diff --git a/invui/src/main/java/xyz/xenondevs/invui/window/builder/WindowType.java b/invui/src/main/java/xyz/xenondevs/invui/window/builder/WindowType.java new file mode 100644 index 0000000..0a22c9b --- /dev/null +++ b/invui/src/main/java/xyz/xenondevs/invui/window/builder/WindowType.java @@ -0,0 +1,39 @@ +package xyz.xenondevs.invui.window.builder; + +import org.jetbrains.annotations.NotNull; +import xyz.xenondevs.invui.window.AnvilWindow; +import xyz.xenondevs.invui.window.CartographyWindow; +import xyz.xenondevs.invui.window.Window; + +import java.util.function.Consumer; + +public interface WindowType> { + + WindowType NORMAL = NormalSingleWindowBuilder::new; + WindowType NORMAL_MERGED = NormalMergedWindowBuilder::new; + WindowType NORMAL_SPLIT = NormalSplitWindowBuilder::new; + WindowType ANVIL = AnvilSingleWindowBuilder::new; + WindowType ANVIL_SPLIT = AnvilSplitWindowBuilder::new; + WindowType CARTOGRAPHY = CartographySingleWindowBuilder::new; + WindowType CARTOGRAPHY_SPLIT = CartographySplitWindowBuilder::new; + + /** + * Creates a new {@link WindowBuilder} for this {@link WindowType}. + * + * @return The new {@link WindowBuilder}. + */ + @NotNull B builder(); + + /** + * Creates a new {@link Window} after modifying the {@link WindowBuilder} with the given {@link Consumer}. + * + * @param builderConsumer The {@link Consumer} which modifies the {@link WindowBuilder}. + * @return The new {@link Window}. + */ + default @NotNull W createWindow(Consumer builderConsumer) { + B builder = builder(); + builderConsumer.accept(builder); + return builder.build(); + } + +} diff --git a/invui/src/main/java/xyz/xenondevs/invui/window/type/WindowType.java b/invui/src/main/java/xyz/xenondevs/invui/window/type/WindowType.java deleted file mode 100644 index f7f29fc..0000000 --- a/invui/src/main/java/xyz/xenondevs/invui/window/type/WindowType.java +++ /dev/null @@ -1,170 +0,0 @@ -package xyz.xenondevs.invui.window.type; - -import org.jetbrains.annotations.NotNull; -import xyz.xenondevs.invui.gui.AbstractGui; -import xyz.xenondevs.invui.window.AnvilWindow; -import xyz.xenondevs.invui.window.CartographyWindow; -import xyz.xenondevs.invui.window.Window; -import xyz.xenondevs.invui.window.impl.*; -import xyz.xenondevs.invui.window.type.context.*; - -import java.util.function.Consumer; - -public interface WindowType { - - WindowType NORMAL = new WindowType<>() { - - @Override - public @NotNull NormalSingleWindowContext createContext() { - return new NormalSingleWindowContext(); - } - - @Override - public @NotNull Window createWindow(@NotNull NormalSingleWindowContext context) { - return new NormalSingleWindowImpl( - context.getViewer(), - context.getTitle(), - (AbstractGui) context.getGui(), - context.isCloseable(), - context.isRetain() - ); - } - - }; - - WindowType NORMAL_MERGED = new WindowType<>() { - - @Override - public @NotNull NormalCombinedWindowContext createContext() { - return new NormalCombinedWindowContext(); - } - - @Override - public @NotNull Window createWindow(@NotNull NormalCombinedWindowContext context) { - return new NormalMergedWindowImpl( - context.getViewer(), - context.getTitle(), - (AbstractGui) context.getGui(), - context.isCloseable(), - context.isRetain() - ); - } - - }; - - WindowType NORMAL_SPLIT = new WindowType<>() { - - @Override - public @NotNull NormalSplitWindowContext createContext() { - return new NormalSplitWindowContext(); - } - - @Override - public @NotNull Window createWindow(@NotNull NormalSplitWindowContext context) { - return new NormalSplitWindowImpl( - context.getViewer(), - context.getTitle(), - (AbstractGui) context.getUpperGui(), - (AbstractGui) context.getLowerGui(), - context.isCloseable(), - context.isRetain() - ); - } - - }; - - WindowType ANVIL = new WindowType<>() { - - @Override - public @NotNull AnvilSingleWindowContext createContext() { - return new AnvilSingleWindowContext(); - } - - @Override - public @NotNull AnvilWindow createWindow(@NotNull AnvilSingleWindowContext context) { - return new AnvilSingleWindowImpl( - context.getViewer(), - context.getTitle(), - (AbstractGui) context.getGui(), - context.getRenameHandler(), - context.isCloseable(), - context.isRetain() - ); - } - - }; - - WindowType ANVIL_SPLIT = new WindowType<>() { - - @Override - public @NotNull AnvilSplitWindowContext createContext() { - return new AnvilSplitWindowContext(); - } - - @Override - public @NotNull AnvilWindow createWindow(@NotNull AnvilSplitWindowContext context) { - return new AnvilSplitWindowImpl( - context.getViewer(), - context.getTitle(), - (AbstractGui) context.getUpperGui(), - (AbstractGui) context.getLowerGui(), - context.getRenameHandler(), - context.isCloseable(), - context.isRetain() - ); - } - - }; - - WindowType CARTOGRAPHY = new WindowType<>() { - - @Override - public @NotNull CartographySingleWindowContext createContext() { - return new CartographySingleWindowContext(); - } - - @Override - public @NotNull CartographyWindow createWindow(@NotNull CartographySingleWindowContext context) { - return new CartographySingleWindowImpl( - context.getViewer(), - context.getTitle(), - (AbstractGui) context.getGui(), - context.isCloseable(), - context.isRetain() - ); - } - - }; - - WindowType CARTOGRAPHY_SPLIT = new WindowType<>() { - - @Override - public @NotNull CartographySplitWindowContext createContext() { - return new CartographySplitWindowContext(); - } - - @Override - public @NotNull CartographyWindow createWindow(@NotNull CartographySplitWindowContext context) { - return new CartographySplitWindowImpl( - context.getViewer(), - context.getTitle(), - (AbstractGui) context.getUpperGui(), - (AbstractGui) context.getLowerGui(), - context.isCloseable(), - context.isRetain() - ); - } - - }; - - @NotNull C createContext(); - - @NotNull W createWindow(@NotNull C context); - - default @NotNull W createWindow(Consumer contextConsumer) { - C context = createContext(); - contextConsumer.accept(context); - return createWindow(context); - } - -} diff --git a/invui/src/main/java/xyz/xenondevs/invui/window/type/context/AbstractWindowContext.java b/invui/src/main/java/xyz/xenondevs/invui/window/type/context/AbstractWindowContext.java deleted file mode 100644 index e888bf2..0000000 --- a/invui/src/main/java/xyz/xenondevs/invui/window/type/context/AbstractWindowContext.java +++ /dev/null @@ -1,59 +0,0 @@ -package xyz.xenondevs.invui.window.type.context; - -import net.md_5.bungee.api.chat.BaseComponent; -import net.md_5.bungee.api.chat.TextComponent; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; -import xyz.xenondevs.inventoryaccess.component.BaseComponentWrapper; -import xyz.xenondevs.inventoryaccess.component.ComponentWrapper; - -public abstract class AbstractWindowContext implements WindowContext { - - protected boolean closeable = true; - protected boolean retain = false; - protected ComponentWrapper title; - protected V viewer; - - public boolean isCloseable() { - return closeable; - } - - public void setCloseable(boolean closeable) { - this.closeable = closeable; - } - - public boolean isRetain() { - return retain; - } - - public void setRetain(boolean retain) { - this.retain = retain; - } - - @Nullable - public ComponentWrapper getTitle() { - return title; - } - - public void setTitle(@NotNull ComponentWrapper title) { - this.title = title; - } - - public void setTitle(@NotNull BaseComponent @NotNull [] title) { - this.title = new BaseComponentWrapper(title); - } - - public void setTitle(@NotNull String title) { - this.title = new BaseComponentWrapper(TextComponent.fromLegacyText(title)); - } - - @Nullable - public V getViewer() { - return viewer; - } - - public void setViewer(@NotNull V viewer) { - this.viewer = viewer; - } - -} diff --git a/invui/src/main/java/xyz/xenondevs/invui/window/type/context/AnvilSingleWindowContext.java b/invui/src/main/java/xyz/xenondevs/invui/window/type/context/AnvilSingleWindowContext.java deleted file mode 100644 index c220dbf..0000000 --- a/invui/src/main/java/xyz/xenondevs/invui/window/type/context/AnvilSingleWindowContext.java +++ /dev/null @@ -1,41 +0,0 @@ -package xyz.xenondevs.invui.window.type.context; - -import org.bukkit.entity.Player; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; -import xyz.xenondevs.invui.gui.Gui; -import xyz.xenondevs.invui.gui.builder.GuiBuilder; - -import java.util.function.Consumer; -import java.util.function.Supplier; - -public final class AnvilSingleWindowContext extends AbstractWindowContext { - - private Supplier guiSupplier; - private Consumer renameHandler; - - public @Nullable Gui getGui() { - return guiSupplier.get(); - } - - public void setGui(@NotNull Supplier guiSupplier) { - this.guiSupplier = guiSupplier; - } - - public void setGui(@NotNull Gui gui) { - this.guiSupplier = () -> gui; - } - - public void setGui(@NotNull GuiBuilder builder) { - this.guiSupplier = builder::build; - } - - public @Nullable Consumer getRenameHandler() { - return renameHandler; - } - - public void setRenameHandler(@NotNull Consumer renameHandler) { - this.renameHandler = renameHandler; - } - -} diff --git a/invui/src/main/java/xyz/xenondevs/invui/window/type/context/AnvilSplitWindowContext.java b/invui/src/main/java/xyz/xenondevs/invui/window/type/context/AnvilSplitWindowContext.java deleted file mode 100644 index 7755b58..0000000 --- a/invui/src/main/java/xyz/xenondevs/invui/window/type/context/AnvilSplitWindowContext.java +++ /dev/null @@ -1,58 +0,0 @@ -package xyz.xenondevs.invui.window.type.context; - -import org.bukkit.entity.Player; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; -import xyz.xenondevs.invui.gui.Gui; -import xyz.xenondevs.invui.gui.builder.GuiBuilder; - -import java.util.function.Consumer; -import java.util.function.Supplier; - -public final class AnvilSplitWindowContext extends AbstractWindowContext { - - private Supplier upperGuiSupplier; - private Supplier lowerGuiSupplier; - private Consumer renameHandler; - - public @Nullable Gui getUpperGui() { - return upperGuiSupplier.get(); - } - - public void setUpperGui(@NotNull Supplier guiSupplier) { - this.upperGuiSupplier = guiSupplier; - } - - public void setUpperGui(@NotNull Gui gui) { - this.upperGuiSupplier = () -> gui; - } - - public void setUpperGui(@NotNull GuiBuilder builder) { - this.upperGuiSupplier = builder::build; - } - - public @Nullable Gui getLowerGui() { - return lowerGuiSupplier.get(); - } - - public void setLowerGui(@NotNull Supplier guiSupplier) { - this.lowerGuiSupplier = guiSupplier; - } - - public void setLowerGui(@NotNull Gui gui) { - this.lowerGuiSupplier = () -> gui; - } - - public void setLowerGui(@NotNull GuiBuilder builder) { - this.lowerGuiSupplier = builder::build; - } - - public @Nullable Consumer getRenameHandler() { - return renameHandler; - } - - public void setRenameHandler(@NotNull Consumer renameHandler) { - this.renameHandler = renameHandler; - } - -} diff --git a/invui/src/main/java/xyz/xenondevs/invui/window/type/context/CartographySingleWindowContext.java b/invui/src/main/java/xyz/xenondevs/invui/window/type/context/CartographySingleWindowContext.java deleted file mode 100644 index b162863..0000000 --- a/invui/src/main/java/xyz/xenondevs/invui/window/type/context/CartographySingleWindowContext.java +++ /dev/null @@ -1,31 +0,0 @@ -package xyz.xenondevs.invui.window.type.context; - -import org.bukkit.entity.Player; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; -import xyz.xenondevs.invui.gui.Gui; -import xyz.xenondevs.invui.gui.builder.GuiBuilder; - -import java.util.function.Supplier; - -public final class CartographySingleWindowContext extends AbstractWindowContext { - - private Supplier guiSupplier; - - public @Nullable Gui getGui() { - return guiSupplier.get(); - } - - public void setGui(@NotNull Supplier guiSupplier) { - this.guiSupplier = guiSupplier; - } - - public void setGui(@NotNull Gui gui) { - this.guiSupplier = () -> gui; - } - - public void setGui(@NotNull GuiBuilder builder) { - this.guiSupplier = builder::build; - } - -} diff --git a/invui/src/main/java/xyz/xenondevs/invui/window/type/context/CartographySplitWindowContext.java b/invui/src/main/java/xyz/xenondevs/invui/window/type/context/CartographySplitWindowContext.java deleted file mode 100644 index 4af2ee3..0000000 --- a/invui/src/main/java/xyz/xenondevs/invui/window/type/context/CartographySplitWindowContext.java +++ /dev/null @@ -1,48 +0,0 @@ -package xyz.xenondevs.invui.window.type.context; - -import org.bukkit.entity.Player; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; -import xyz.xenondevs.invui.gui.Gui; -import xyz.xenondevs.invui.gui.builder.GuiBuilder; - -import java.util.function.Supplier; - -public final class CartographySplitWindowContext extends AbstractWindowContext { - - private Supplier upperGuiSupplier; - private Supplier lowerGuiSupplier; - - public @Nullable Gui getUpperGui() { - return upperGuiSupplier.get(); - } - - public void setUpperGui(@NotNull Supplier guiSupplier) { - this.upperGuiSupplier = guiSupplier; - } - - public void setUpperGui(@NotNull Gui gui) { - this.upperGuiSupplier = () -> gui; - } - - public void setUpperGui(@NotNull GuiBuilder builder) { - this.upperGuiSupplier = builder::build; - } - - public @Nullable Gui getLowerGui() { - return lowerGuiSupplier.get(); - } - - public void setLowerGui(@NotNull Supplier guiSupplier) { - this.lowerGuiSupplier = guiSupplier; - } - - public void setLowerGui(@NotNull Gui gui) { - this.lowerGuiSupplier = () -> gui; - } - - public void setLowerGui(@NotNull GuiBuilder builder) { - this.lowerGuiSupplier = builder::build; - } - -} diff --git a/invui/src/main/java/xyz/xenondevs/invui/window/type/context/NormalCombinedWindowContext.java b/invui/src/main/java/xyz/xenondevs/invui/window/type/context/NormalCombinedWindowContext.java deleted file mode 100644 index 909fa96..0000000 --- a/invui/src/main/java/xyz/xenondevs/invui/window/type/context/NormalCombinedWindowContext.java +++ /dev/null @@ -1,31 +0,0 @@ -package xyz.xenondevs.invui.window.type.context; - -import org.bukkit.entity.Player; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; -import xyz.xenondevs.invui.gui.Gui; -import xyz.xenondevs.invui.gui.builder.GuiBuilder; - -import java.util.function.Supplier; - -public final class NormalCombinedWindowContext extends AbstractWindowContext { - - private Supplier guiSupplier; - - public @Nullable Gui getGui() { - return guiSupplier.get(); - } - - public void setGui(@NotNull Supplier guiSupplier) { - this.guiSupplier = guiSupplier; - } - - public void setGui(@NotNull Gui gui) { - this.guiSupplier = () -> gui; - } - - public void setGui(@NotNull GuiBuilder builder) { - this.guiSupplier = builder::build; - } - -} diff --git a/invui/src/main/java/xyz/xenondevs/invui/window/type/context/NormalSingleWindowContext.java b/invui/src/main/java/xyz/xenondevs/invui/window/type/context/NormalSingleWindowContext.java deleted file mode 100644 index 431ab9e..0000000 --- a/invui/src/main/java/xyz/xenondevs/invui/window/type/context/NormalSingleWindowContext.java +++ /dev/null @@ -1,36 +0,0 @@ -package xyz.xenondevs.invui.window.type.context; - -import org.bukkit.OfflinePlayer; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; -import xyz.xenondevs.invui.gui.Gui; -import xyz.xenondevs.invui.gui.builder.GuiBuilder; - -import java.util.UUID; -import java.util.function.Supplier; - -public final class NormalSingleWindowContext extends AbstractWindowContext { - - private Supplier guiSupplier; - - public @Nullable Gui getGui() { - return guiSupplier.get(); - } - - public void setGui(@NotNull Supplier guiSupplier) { - this.guiSupplier = guiSupplier; - } - - public void setGui(@NotNull Gui gui) { - this.guiSupplier = () -> gui; - } - - public void setGui(@NotNull GuiBuilder builder) { - this.guiSupplier = builder::build; - } - - public void setViewer(@NotNull OfflinePlayer player) { - this.viewer = player.getUniqueId(); - } - -} diff --git a/invui/src/main/java/xyz/xenondevs/invui/window/type/context/NormalSplitWindowContext.java b/invui/src/main/java/xyz/xenondevs/invui/window/type/context/NormalSplitWindowContext.java deleted file mode 100644 index 3b4006a..0000000 --- a/invui/src/main/java/xyz/xenondevs/invui/window/type/context/NormalSplitWindowContext.java +++ /dev/null @@ -1,48 +0,0 @@ -package xyz.xenondevs.invui.window.type.context; - -import org.bukkit.entity.Player; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; -import xyz.xenondevs.invui.gui.Gui; -import xyz.xenondevs.invui.gui.builder.GuiBuilder; - -import java.util.function.Supplier; - -public final class NormalSplitWindowContext extends AbstractWindowContext { - - private Supplier upperGuiSupplier; - private Supplier lowerGuiSupplier; - - public @Nullable Gui getUpperGui() { - return upperGuiSupplier.get(); - } - - public void setUpperGui(@NotNull Supplier guiSupplier) { - this.upperGuiSupplier = guiSupplier; - } - - public void setUpperGui(@NotNull Gui gui) { - this.upperGuiSupplier = () -> gui; - } - - public void setUpperGui(@NotNull GuiBuilder builder) { - this.upperGuiSupplier = builder::build; - } - - public @Nullable Gui getLowerGui() { - return lowerGuiSupplier.get(); - } - - public void setLowerGui(@NotNull Supplier guiSupplier) { - this.lowerGuiSupplier = guiSupplier; - } - - public void setLowerGui(@NotNull Gui gui) { - this.lowerGuiSupplier = () -> gui; - } - - public void setLowerGui(@NotNull GuiBuilder builder) { - this.lowerGuiSupplier = builder::build; - } - -} diff --git a/invui/src/main/java/xyz/xenondevs/invui/window/type/context/WindowContext.java b/invui/src/main/java/xyz/xenondevs/invui/window/type/context/WindowContext.java deleted file mode 100644 index 0448f28..0000000 --- a/invui/src/main/java/xyz/xenondevs/invui/window/type/context/WindowContext.java +++ /dev/null @@ -1,4 +0,0 @@ -package xyz.xenondevs.invui.window.type.context; - -public interface WindowContext { -}