From 8406efdb66a6e00b65e07ef5c9f7f6d4c2f200f3 Mon Sep 17 00:00:00 2001 From: NichtStudioCode <51272202+NichtStudioCode@users.noreply.github.com> Date: Fri, 3 Mar 2023 17:45:10 +0100 Subject: [PATCH] Change window-related methods to use AbstractWindow --- .../java/xyz/xenondevs/invui/item/Item.java | 17 ++++++------- .../impl/{BaseItem.java => AbstractItem.java} | 16 ++++--------- .../xenondevs/invui/item/impl/AsyncItem.java | 2 +- .../invui/item/impl/AutoCycleItem.java | 2 +- .../xenondevs/invui/item/impl/CycleItem.java | 2 +- .../xenondevs/invui/item/impl/SimpleItem.java | 2 +- .../invui/item/impl/SuppliedItem.java | 2 +- .../item/impl/controlitem/ControlItem.java | 4 ++-- .../virtualinventory/VirtualInventory.java | 22 +++++++---------- .../xenondevs/invui/window/WindowManager.java | 24 +++++++------------ 10 files changed, 37 insertions(+), 56 deletions(-) rename invui/src/main/java/xyz/xenondevs/invui/item/impl/{BaseItem.java => AbstractItem.java} (56%) diff --git a/invui/src/main/java/xyz/xenondevs/invui/item/Item.java b/invui/src/main/java/xyz/xenondevs/invui/item/Item.java index 72dbb8a..de13346 100644 --- a/invui/src/main/java/xyz/xenondevs/invui/item/Item.java +++ b/invui/src/main/java/xyz/xenondevs/invui/item/Item.java @@ -6,6 +6,7 @@ import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import org.jetbrains.annotations.NotNull; +import xyz.xenondevs.invui.window.AbstractWindow; import xyz.xenondevs.invui.window.Window; import java.util.Set; @@ -21,20 +22,20 @@ public interface Item { ItemProvider getItemProvider(); /** - * Adds a {@link Window} to the window set, telling the {@link Item} that it is - * currently being displayed in that {@link Window}. + * Adds an {@link AbstractWindow} to the window set, telling the {@link Item} that it is + * currently being displayed in that {@link AbstractWindow}. * - * @param window The {@link Window} the {@link Item} is currently displayed in. + * @param window The {@link AbstractWindow} the {@link Item} is currently displayed in. */ - void addWindow(Window window); + void addWindow(AbstractWindow window); /** - * Removes a {@link Window} from the window set, telling the {@link Item} that it - * is no longer being displayed in that {@link Window}. + * Removes an {@link AbstractWindow} from the window set, telling the {@link Item} that it + * is no longer being displayed in that {@link AbstractWindow}. * - * @param window The {@link Window} the {@link Item} is no longer displayed in. + * @param window The {@link AbstractWindow} the {@link Item} is no longer displayed in. */ - void removeWindow(Window window); + void removeWindow(AbstractWindow window); /** * Gets an immutable {@link Set} of all the {@link Window}s where this diff --git a/invui/src/main/java/xyz/xenondevs/invui/item/impl/BaseItem.java b/invui/src/main/java/xyz/xenondevs/invui/item/impl/AbstractItem.java similarity index 56% rename from invui/src/main/java/xyz/xenondevs/invui/item/impl/BaseItem.java rename to invui/src/main/java/xyz/xenondevs/invui/item/impl/AbstractItem.java index a6b4d0d..dc07733 100644 --- a/invui/src/main/java/xyz/xenondevs/invui/item/impl/BaseItem.java +++ b/invui/src/main/java/xyz/xenondevs/invui/item/impl/AbstractItem.java @@ -9,25 +9,19 @@ import java.util.HashSet; import java.util.Set; /** - * The base for all {@link Item}s. + * An abstract implementation of the {@link Item} interface. */ -public abstract class BaseItem implements Item { +public abstract class AbstractItem implements Item { private final Set windows = new HashSet<>(); @Override - public void addWindow(Window window) { - if (!(window instanceof AbstractWindow)) - throw new IllegalArgumentException("Illegal window implementation"); - - windows.add((AbstractWindow) window); + public void addWindow(AbstractWindow window) { + windows.add(window); } @Override - public void removeWindow(Window window) { - if (!(window instanceof AbstractWindow)) - throw new IllegalArgumentException("Illegal window implementation"); - + public void removeWindow(AbstractWindow window) { windows.remove(window); } diff --git a/invui/src/main/java/xyz/xenondevs/invui/item/impl/AsyncItem.java b/invui/src/main/java/xyz/xenondevs/invui/item/impl/AsyncItem.java index 6bdd5ac..6252302 100644 --- a/invui/src/main/java/xyz/xenondevs/invui/item/impl/AsyncItem.java +++ b/invui/src/main/java/xyz/xenondevs/invui/item/impl/AsyncItem.java @@ -19,7 +19,7 @@ import java.util.function.Supplier; * An {@link Item} that creates it's {@link ItemProvider} asynchronously and displays * a placeholder {@link ItemProvider} until the actual {@link ItemProvider} has been created. */ -public class AsyncItem extends BaseItem { +public class AsyncItem extends AbstractItem { private volatile ItemProvider itemProvider; diff --git a/invui/src/main/java/xyz/xenondevs/invui/item/impl/AutoCycleItem.java b/invui/src/main/java/xyz/xenondevs/invui/item/impl/AutoCycleItem.java index e869eff..59d5ed8 100644 --- a/invui/src/main/java/xyz/xenondevs/invui/item/impl/AutoCycleItem.java +++ b/invui/src/main/java/xyz/xenondevs/invui/item/impl/AutoCycleItem.java @@ -15,7 +15,7 @@ import xyz.xenondevs.invui.window.Window; * An {@link Item} that automatically cycles through a predefined array of * {@link ItemProvider} at a predefined speed. */ -public class AutoCycleItem extends BaseItem { +public class AutoCycleItem extends AbstractItem { private final ItemProvider[] itemProviders; private final int period; diff --git a/invui/src/main/java/xyz/xenondevs/invui/item/impl/CycleItem.java b/invui/src/main/java/xyz/xenondevs/invui/item/impl/CycleItem.java index e3836ab..7d8ae19 100644 --- a/invui/src/main/java/xyz/xenondevs/invui/item/impl/CycleItem.java +++ b/invui/src/main/java/xyz/xenondevs/invui/item/impl/CycleItem.java @@ -13,7 +13,7 @@ import java.util.function.BiConsumer; /** * An {@link Item} that cycles through a predefined array of {@link ItemProvider}s when clicked. */ -public class CycleItem extends BaseItem { +public class CycleItem extends AbstractItem { private final ItemProvider[] states; diff --git a/invui/src/main/java/xyz/xenondevs/invui/item/impl/SimpleItem.java b/invui/src/main/java/xyz/xenondevs/invui/item/impl/SimpleItem.java index 9048799..768f045 100644 --- a/invui/src/main/java/xyz/xenondevs/invui/item/impl/SimpleItem.java +++ b/invui/src/main/java/xyz/xenondevs/invui/item/impl/SimpleItem.java @@ -14,7 +14,7 @@ import java.util.function.Consumer; /** * A simple {@link Item} that does nothing. */ -public class SimpleItem extends BaseItem { +public class SimpleItem extends AbstractItem { private final ItemProvider itemProvider; private final Consumer clickHandler; diff --git a/invui/src/main/java/xyz/xenondevs/invui/item/impl/SuppliedItem.java b/invui/src/main/java/xyz/xenondevs/invui/item/impl/SuppliedItem.java index 3e0947f..60bf34b 100644 --- a/invui/src/main/java/xyz/xenondevs/invui/item/impl/SuppliedItem.java +++ b/invui/src/main/java/xyz/xenondevs/invui/item/impl/SuppliedItem.java @@ -11,7 +11,7 @@ import xyz.xenondevs.invui.item.ItemProvider; import java.util.function.Function; import java.util.function.Supplier; -public class SuppliedItem extends BaseItem { +public class SuppliedItem extends AbstractItem { private final Supplier builderSupplier; private final Function clickHandler; diff --git a/invui/src/main/java/xyz/xenondevs/invui/item/impl/controlitem/ControlItem.java b/invui/src/main/java/xyz/xenondevs/invui/item/impl/controlitem/ControlItem.java index dc71069..de3f35d 100644 --- a/invui/src/main/java/xyz/xenondevs/invui/item/impl/controlitem/ControlItem.java +++ b/invui/src/main/java/xyz/xenondevs/invui/item/impl/controlitem/ControlItem.java @@ -3,14 +3,14 @@ package xyz.xenondevs.invui.item.impl.controlitem; import xyz.xenondevs.invui.gui.Gui; import xyz.xenondevs.invui.item.Item; import xyz.xenondevs.invui.item.ItemProvider; -import xyz.xenondevs.invui.item.impl.BaseItem; +import xyz.xenondevs.invui.item.impl.AbstractItem; /** * 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. */ -public abstract class ControlItem extends BaseItem { +public abstract class ControlItem extends AbstractItem { private G gui; diff --git a/invui/src/main/java/xyz/xenondevs/invui/virtualinventory/VirtualInventory.java b/invui/src/main/java/xyz/xenondevs/invui/virtualinventory/VirtualInventory.java index 68863d2..e7f41d1 100644 --- a/invui/src/main/java/xyz/xenondevs/invui/virtualinventory/VirtualInventory.java +++ b/invui/src/main/java/xyz/xenondevs/invui/virtualinventory/VirtualInventory.java @@ -77,28 +77,22 @@ public class VirtualInventory { } /** - * Adds a {@link Window} to the set of {@link Window}s, telling the {@link VirtualInventory} that - * its contents are now being displayed in that {@link Window}. + * Adds an {@link AbstractWindow} to the set of {@link AbstractWindow AbstractWindows}, telling the {@link VirtualInventory} that + * its contents are now being displayed in that {@link AbstractWindow}. * * @param window The {@link Window} to be added. */ - public void addWindow(Window window) { - if (!(window instanceof AbstractWindow)) - throw new IllegalArgumentException("Illegal window implementation"); - - windows.add((AbstractWindow) window); + public void addWindow(AbstractWindow window) { + windows.add(window); } /** - * Removes a {@link Window} from the set of {@link Window}s, telling the {@link VirtualInventory} that - * its contents are no longer being displayed in that {@link Window}. + * Removes an {@link AbstractWindow} from the set of {@link AbstractWindow AbstractWindows}, telling the {@link VirtualInventory} that + * its contents are no longer being displayed in that {@link AbstractWindow}. * - * @param window The {@link Window} to be removed. + * @param window The {@link AbstractWindow} to be removed. */ - public void removeWindow(Window window) { - if (!(window instanceof AbstractWindow)) - throw new IllegalArgumentException("Illegal window implementation"); - + public void removeWindow(AbstractWindow window) { windows.remove(window); } diff --git a/invui/src/main/java/xyz/xenondevs/invui/window/WindowManager.java b/invui/src/main/java/xyz/xenondevs/invui/window/WindowManager.java index 3744359..1639083 100644 --- a/invui/src/main/java/xyz/xenondevs/invui/window/WindowManager.java +++ b/invui/src/main/java/xyz/xenondevs/invui/window/WindowManager.java @@ -44,31 +44,23 @@ public class WindowManager implements Listener { } /** - * Adds a {@link Window} to the list of windows. + * Adds an {@link AbstractWindow} to the list of windows. * This method is usually called by the {@link Window} itself. * - * @param window The {@link Window} to add + * @param window The {@link AbstractWindow} to add */ - public void addWindow(Window window) { - if (!(window instanceof AbstractWindow)) - throw new IllegalArgumentException("Illegal window implementation"); - - AbstractWindow abstractWindow = (AbstractWindow) window; - windows.put(abstractWindow.getInventories()[0], abstractWindow); + public void addWindow(AbstractWindow window) { + windows.put(window.getInventories()[0], window); } /** - * Removes a {@link Window} from the list of windows. + * Removes an {@link AbstractWindow} from the list of windows. * This method is usually called by the {@link Window} itself. * - * @param window The {@link Window} to remove + * @param window The {@link AbstractWindow} to remove */ - public void removeWindow(Window window) { - if (!(window instanceof AbstractWindow)) - throw new IllegalArgumentException("Illegal window implementation"); - - AbstractWindow abstractWindow = (AbstractWindow) window; - windows.remove(abstractWindow.getInventories()[0]); + public void removeWindow(AbstractWindow window) { + windows.remove(window.getInventories()[0]); } /**