From 8a030276c5849e221eecafabc8667967ca5a02ce Mon Sep 17 00:00:00 2001 From: EpicKnarvik97 Date: Fri, 25 Feb 2022 20:38:10 +0100 Subject: [PATCH] Removes some redundancy between tab completers --- .../command/AddConditionTabCompleter.java | 8 ++---- .../paidsigns/command/AddTabCompleter.java | 7 ++--- .../command/RemoveConditionTabCompleter.java | 7 ++--- .../command/TokenizedTabCompleter.java | 28 +++++++++++++++++++ 4 files changed, 34 insertions(+), 16 deletions(-) create mode 100644 src/main/java/net/knarcraft/paidsigns/command/TokenizedTabCompleter.java diff --git a/src/main/java/net/knarcraft/paidsigns/command/AddConditionTabCompleter.java b/src/main/java/net/knarcraft/paidsigns/command/AddConditionTabCompleter.java index 0a5c078..352787b 100644 --- a/src/main/java/net/knarcraft/paidsigns/command/AddConditionTabCompleter.java +++ b/src/main/java/net/knarcraft/paidsigns/command/AddConditionTabCompleter.java @@ -1,10 +1,8 @@ package net.knarcraft.paidsigns.command; import net.knarcraft.paidsigns.utility.TabCompleteHelper; -import net.knarcraft.paidsigns.utility.Tokenizer; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; -import org.bukkit.command.TabCompleter; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -14,7 +12,7 @@ import java.util.List; /** * The tab completer for the add paid sign condition command */ -public class AddConditionTabCompleter implements TabCompleter { +public class AddConditionTabCompleter extends TokenizedTabCompleter { private List lineIndices; private List stringsToMatch; @@ -25,12 +23,10 @@ public class AddConditionTabCompleter implements TabCompleter { @Override public List onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, @NotNull String[] args) { + super.onTabComplete(sender, command, alias, args); if (lineIndices == null) { initializeValues(); } - - List arguments = Tokenizer.tokenize(String.join(" ", args)); - int argumentSize = args[args.length - 1].isEmpty() ? arguments.size() : arguments.size() - 1; if (argumentSize < 1) { return TabCompleteHelper.getPaidSignNames(); } else if (argumentSize < 2) { diff --git a/src/main/java/net/knarcraft/paidsigns/command/AddTabCompleter.java b/src/main/java/net/knarcraft/paidsigns/command/AddTabCompleter.java index 7bbc7ce..2c29762 100644 --- a/src/main/java/net/knarcraft/paidsigns/command/AddTabCompleter.java +++ b/src/main/java/net/knarcraft/paidsigns/command/AddTabCompleter.java @@ -1,11 +1,9 @@ package net.knarcraft.paidsigns.command; import net.knarcraft.paidsigns.utility.TabCompleteHelper; -import net.knarcraft.paidsigns.utility.Tokenizer; import org.bukkit.Bukkit; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; -import org.bukkit.command.TabCompleter; import org.bukkit.permissions.Permission; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -19,7 +17,7 @@ import java.util.StringJoiner; /** * The tab completer for the add paid sign command */ -public class AddTabCompleter implements TabCompleter { +public class AddTabCompleter extends TokenizedTabCompleter { private static List names; private static List costs; @@ -31,12 +29,11 @@ public class AddTabCompleter implements TabCompleter { @Override public List onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, @NotNull String[] args) { + super.onTabComplete(sender, command, alias, args); if (names == null) { initializeValues(); loadAvailablePermissions(); } - List arguments = Tokenizer.tokenize(String.join(" ", args)); - int argumentSize = args[args.length - 1].isEmpty() ? arguments.size() : arguments.size() - 1; if (argumentSize < 1) { return names; diff --git a/src/main/java/net/knarcraft/paidsigns/command/RemoveConditionTabCompleter.java b/src/main/java/net/knarcraft/paidsigns/command/RemoveConditionTabCompleter.java index 5fa60db..babbb07 100644 --- a/src/main/java/net/knarcraft/paidsigns/command/RemoveConditionTabCompleter.java +++ b/src/main/java/net/knarcraft/paidsigns/command/RemoveConditionTabCompleter.java @@ -1,10 +1,8 @@ package net.knarcraft.paidsigns.command; import net.knarcraft.paidsigns.utility.TabCompleteHelper; -import net.knarcraft.paidsigns.utility.Tokenizer; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; -import org.bukkit.command.TabCompleter; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -14,7 +12,7 @@ import java.util.List; /** * The tab completer for the remove paid sign condition command */ -public class RemoveConditionTabCompleter implements TabCompleter { +public class RemoveConditionTabCompleter extends TokenizedTabCompleter { private List lineIndices; @@ -22,11 +20,10 @@ public class RemoveConditionTabCompleter implements TabCompleter { @Override public List onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, @NotNull String[] args) { + super.onTabComplete(sender, command, alias, args); if (lineIndices == null) { initializeValues(); } - List arguments = Tokenizer.tokenize(String.join(" ", args)); - int argumentSize = args[args.length - 1].isEmpty() ? arguments.size() : arguments.size() - 1; if (argumentSize < 1) { return TabCompleteHelper.getPaidSignNames(); diff --git a/src/main/java/net/knarcraft/paidsigns/command/TokenizedTabCompleter.java b/src/main/java/net/knarcraft/paidsigns/command/TokenizedTabCompleter.java new file mode 100644 index 0000000..2d78bc0 --- /dev/null +++ b/src/main/java/net/knarcraft/paidsigns/command/TokenizedTabCompleter.java @@ -0,0 +1,28 @@ +package net.knarcraft.paidsigns.command; + +import net.knarcraft.paidsigns.utility.Tokenizer; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.command.TabCompleter; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.List; + +/** + * A tab completer with tokenized arguments + */ +public class TokenizedTabCompleter implements TabCompleter { + + protected List arguments; + protected int argumentSize; + + @Nullable + @Override + public List onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, @NotNull String[] args) { + arguments = Tokenizer.tokenize(String.join(" ", args)); + argumentSize = args[args.length - 1].isEmpty() ? arguments.size() : arguments.size() - 1; + return null; + } + +}