diff options
author | Dico200 <dico.karssiens@gmail.com> | 2018-07-27 23:20:44 +0100 |
---|---|---|
committer | Dico200 <dico.karssiens@gmail.com> | 2018-07-27 23:20:44 +0100 |
commit | 2a726e1b618b38e635b249d7d09000ec2ea9ac17 (patch) | |
tree | c370942595e36ffce24e0873c710c06110973a17 /dicore3/command/src/main/java/io/dico/dicore/command/chat/help/HelpPages.java | |
parent | a9c19ff5cfbf6d99d46cc38d0e294275cdc7f61e (diff) |
Work on commands a bit more
Diffstat (limited to 'dicore3/command/src/main/java/io/dico/dicore/command/chat/help/HelpPages.java')
-rw-r--r-- | dicore3/command/src/main/java/io/dico/dicore/command/chat/help/HelpPages.java | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/dicore3/command/src/main/java/io/dico/dicore/command/chat/help/HelpPages.java b/dicore3/command/src/main/java/io/dico/dicore/command/chat/help/HelpPages.java new file mode 100644 index 0000000..5798b3c --- /dev/null +++ b/dicore3/command/src/main/java/io/dico/dicore/command/chat/help/HelpPages.java @@ -0,0 +1,92 @@ +package io.dico.dicore.command.chat.help; + +import io.dico.dicore.command.ExecutionContext; +import io.dico.dicore.command.ICommandAddress; +import io.dico.dicore.command.chat.help.defaults.*; +import org.bukkit.permissions.Permissible; +import org.jetbrains.annotations.NotNull; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class HelpPages { + private @NotNull IPageBuilder pageBuilder; + private @NotNull IPageLayout pageLayout; + private int pageLength; + private @NotNull List<IHelpTopic> helpTopics; + private @NotNull IHelpTopic syntaxTopic; + + public HelpPages(@NotNull IPageBuilder pageBuilder, @NotNull IPageLayout pageLayout, int pageLength, @NotNull IHelpTopic syntaxTopic, @NotNull List<IHelpTopic> helpTopics) { + this.pageBuilder = pageBuilder; + this.pageLayout = pageLayout; + this.pageLength = pageLength; + this.syntaxTopic = syntaxTopic; + this.helpTopics = helpTopics; + } + + public HelpPages(IPageBuilder pageBuilder, IPageLayout pageLayout, int pageLength, IHelpTopic syntaxTopic, IHelpTopic... helpTopics) { + this(pageBuilder, pageLayout, pageLength, syntaxTopic, new ArrayList<>(Arrays.asList(helpTopics))); + } + + @SuppressWarnings("RedundantArrayCreation") + public static HelpPages newDefaultHelpPages() { + IHelpTopic syntaxTopic = new SyntaxHelpTopic(); + return new HelpPages(new DefaultPageBuilder(), new DefaultPageLayout(), 12, + syntaxTopic, new IHelpTopic[]{new DescriptionHelpTopic(), syntaxTopic, new SubcommandsHelpTopic()}); + } + + public @NotNull IPageBuilder getPageBuilder() { + return pageBuilder; + } + + public void setPageBuilder(@NotNull IPageBuilder pageBuilder) { + this.pageBuilder = pageBuilder; + } + + public @NotNull IPageLayout getPageLayout() { + return pageLayout; + } + + public void setPageLayout(@NotNull IPageLayout pageLayout) { + this.pageLayout = pageLayout; + } + + public int getPageLength() { + return pageLength; + } + + public void setPageLength(int pageLength) { + this.pageLength = pageLength; + } + + public @NotNull IHelpTopic getSyntaxTopic() { + return syntaxTopic; + } + + public void setSyntaxTopic(@NotNull IHelpTopic syntaxTopic) { + this.syntaxTopic = syntaxTopic; + } + + @NotNull + public List<IHelpTopic> getHelpTopics() { + return helpTopics; + } + + public void setHelpTopics(@NotNull List<IHelpTopic> helpTopics) { + this.helpTopics = helpTopics; + } + + public @NotNull String getHelpPage(Permissible viewer, ExecutionContext context, ICommandAddress address, int page) { + return pageBuilder.getPage(helpTopics, pageLayout, address, viewer, context, page, pageLength); + } + + public @NotNull String getSyntax(Permissible viewer, ExecutionContext context, ICommandAddress address) { + List<IHelpComponent> components = syntaxTopic.getComponents(address, viewer, context); + if (components.isEmpty()) { + return getHelpPage(viewer, context, address, 1); + } + return DefaultPageBuilder.combine(components); + } + +} |