diff options
author | Dico Karssiens <dico.karssiens@gmail.com> | 2019-01-10 18:52:51 +0000 |
---|---|---|
committer | Dico Karssiens <dico.karssiens@gmail.com> | 2019-01-10 18:52:51 +0000 |
commit | 37fa1f9bbfc852dfa67862cde3d11a4e5415db11 (patch) | |
tree | 9350ab43d11b294cd7218fec3b61fa83ea3beda8 /dicore3/command/src/main/java/io/dico/dicore/command/chat/help/defaults/DefaultPageBuilder.java | |
parent | d80f69488656485a8b93b4982e678ed62c5df96b (diff) | |
parent | 778e301efc09eb8326146a084bb6788be748e6f1 (diff) |
Diffstat (limited to 'dicore3/command/src/main/java/io/dico/dicore/command/chat/help/defaults/DefaultPageBuilder.java')
-rw-r--r-- | dicore3/command/src/main/java/io/dico/dicore/command/chat/help/defaults/DefaultPageBuilder.java | 230 |
1 files changed, 115 insertions, 115 deletions
diff --git a/dicore3/command/src/main/java/io/dico/dicore/command/chat/help/defaults/DefaultPageBuilder.java b/dicore3/command/src/main/java/io/dico/dicore/command/chat/help/defaults/DefaultPageBuilder.java index a584e7e..e06730f 100644 --- a/dicore3/command/src/main/java/io/dico/dicore/command/chat/help/defaults/DefaultPageBuilder.java +++ b/dicore3/command/src/main/java/io/dico/dicore/command/chat/help/defaults/DefaultPageBuilder.java @@ -1,115 +1,115 @@ -package io.dico.dicore.command.chat.help.defaults; - -import io.dico.dicore.command.ExecutionContext; -import io.dico.dicore.command.ICommandAddress; -import io.dico.dicore.command.chat.help.*; -import org.bukkit.permissions.Permissible; - -import java.util.Iterator; -import java.util.LinkedList; -import java.util.List; -import java.util.ListIterator; - -public class DefaultPageBuilder implements IPageBuilder { - - @Override - public String getPage(List<IHelpTopic> helpTopics, IPageLayout pageLayout, ICommandAddress target, - Permissible viewer, ExecutionContext context, int pageNum, int pageLen) { - if (pageLen <= 0 || pageNum < 0) { - throw new IllegalArgumentException(); - } - - List<IHelpComponent> components = new LinkedList<>(); - for (IHelpTopic topic : helpTopics) { - components.addAll(topic.getComponents(target, viewer, context, true)); - } - - PageBorders pageBorders = null; - int componentStartIdx = -1; - int componentEndIdx = -1; - int totalPageCount = 0; - int curPageLines = 0; - - ListIterator<IHelpComponent> iterator = components.listIterator(); - - while (iterator.hasNext()) { - if (curPageLines == 0) { - - if (pageBorders != null) { - iterator.add(pageBorders.getFooter()); - } - - if (pageNum == totalPageCount) { - componentStartIdx = iterator.nextIndex(); - } else if (pageNum + 1 == totalPageCount) { - componentEndIdx = iterator.nextIndex(); - } - - pageBorders = pageLayout.getPageBorders(target, viewer, context, totalPageCount + 1); - - if (pageBorders != null) { - iterator.add(pageBorders.getHeader()); - iterator.previous(); - - curPageLines += pageBorders.getFooter().lineCount(); - } - - totalPageCount++; - } - - IHelpComponent component = iterator.next(); - int lineCount = component.lineCount(); - curPageLines += lineCount; - - if (curPageLines >= pageLen) { - curPageLines = 0; - } - } - - if (componentStartIdx == -1) { - // page does not exist - return ""; - } - - if (componentEndIdx == -1) { - componentEndIdx = components.size(); - } - - StringBuilder sb = new StringBuilder(); - iterator = components.listIterator(componentStartIdx); - int count = componentEndIdx - componentStartIdx; - boolean first = true; - - while (count-- > 0) { - IHelpComponent component = iterator.next(); - if (component instanceof IPageBorder) { - ((IPageBorder) component).setPageCount(totalPageCount); - } - if (first) { - first = false; - } else { - sb.append('\n'); - } - component.appendTo(sb); - - } - - return sb.toString(); - } - - public static String combine(List<IHelpComponent> components) { - StringBuilder rv = new StringBuilder(); - - Iterator<IHelpComponent> iterator = components.iterator(); - if (iterator.hasNext()) { - iterator.next().appendTo(rv); - } - while (iterator.hasNext()) { - rv.append('\n'); - iterator.next().appendTo(rv); - } - - return rv.toString(); - } - -} +package io.dico.dicore.command.chat.help.defaults;
+
+import io.dico.dicore.command.ExecutionContext;
+import io.dico.dicore.command.ICommandAddress;
+import io.dico.dicore.command.chat.help.*;
+import org.bukkit.permissions.Permissible;
+
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.ListIterator;
+
+public class DefaultPageBuilder implements IPageBuilder {
+
+ @Override
+ public String getPage(List<IHelpTopic> helpTopics, IPageLayout pageLayout, ICommandAddress target,
+ Permissible viewer, ExecutionContext context, int pageNum, int pageLen) {
+ if (pageLen <= 0 || pageNum < 0) {
+ throw new IllegalArgumentException();
+ }
+
+ List<IHelpComponent> components = new LinkedList<>();
+ for (IHelpTopic topic : helpTopics) {
+ components.addAll(topic.getComponents(target, viewer, context, true));
+ }
+
+ PageBorders pageBorders = null;
+ int componentStartIdx = -1;
+ int componentEndIdx = -1;
+ int totalPageCount = 0;
+ int curPageLines = 0;
+
+ ListIterator<IHelpComponent> iterator = components.listIterator();
+
+ while (iterator.hasNext()) {
+ if (curPageLines == 0) {
+
+ if (pageBorders != null) {
+ iterator.add(pageBorders.getFooter());
+ }
+
+ if (pageNum == totalPageCount) {
+ componentStartIdx = iterator.nextIndex();
+ } else if (pageNum + 1 == totalPageCount) {
+ componentEndIdx = iterator.nextIndex();
+ }
+
+ pageBorders = pageLayout.getPageBorders(target, viewer, context, totalPageCount + 1);
+
+ if (pageBorders != null) {
+ iterator.add(pageBorders.getHeader());
+ iterator.previous();
+
+ curPageLines += pageBorders.getFooter().lineCount();
+ }
+
+ totalPageCount++;
+ }
+
+ IHelpComponent component = iterator.next();
+ int lineCount = component.lineCount();
+ curPageLines += lineCount;
+
+ if (curPageLines >= pageLen) {
+ curPageLines = 0;
+ }
+ }
+
+ if (componentStartIdx == -1) {
+ // page does not exist
+ return "";
+ }
+
+ if (componentEndIdx == -1) {
+ componentEndIdx = components.size();
+ }
+
+ StringBuilder sb = new StringBuilder();
+ iterator = components.listIterator(componentStartIdx);
+ int count = componentEndIdx - componentStartIdx;
+ boolean first = true;
+
+ while (count-- > 0) {
+ IHelpComponent component = iterator.next();
+ if (component instanceof IPageBorder) {
+ ((IPageBorder) component).setPageCount(totalPageCount);
+ }
+ if (first) {
+ first = false;
+ } else {
+ sb.append('\n');
+ }
+ component.appendTo(sb);
+
+ }
+
+ return sb.toString();
+ }
+
+ public static String combine(List<IHelpComponent> components) {
+ StringBuilder rv = new StringBuilder();
+
+ Iterator<IHelpComponent> iterator = components.iterator();
+ if (iterator.hasNext()) {
+ iterator.next().appendTo(rv);
+ }
+ while (iterator.hasNext()) {
+ rv.append('\n');
+ iterator.next().appendTo(rv);
+ }
+
+ return rv.toString();
+ }
+
+}
|