From 0f196f59c6a4cb76ab8409da62ff1f35505f94a8 Mon Sep 17 00:00:00 2001 From: Dico Karssiens Date: Sun, 11 Nov 2018 14:06:45 +0000 Subject: Changes I made before breaking my local repository. Hoping this works. --- .../chat/help/defaults/DefaultPageBuilder.java | 230 ++++++++++----------- 1 file changed, 115 insertions(+), 115 deletions(-) (limited to 'dicore3/command/src/main/java/io/dico/dicore/command/chat/help/defaults/DefaultPageBuilder.java') 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 helpTopics, IPageLayout pageLayout, ICommandAddress target, - Permissible viewer, ExecutionContext context, int pageNum, int pageLen) { - if (pageLen <= 0 || pageNum < 0) { - throw new IllegalArgumentException(); - } - - List 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 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 components) { - StringBuilder rv = new StringBuilder(); - - Iterator 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 helpTopics, IPageLayout pageLayout, ICommandAddress target, + Permissible viewer, ExecutionContext context, int pageNum, int pageLen) { + if (pageLen <= 0 || pageNum < 0) { + throw new IllegalArgumentException(); + } + + List 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 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 components) { + StringBuilder rv = new StringBuilder(); + + Iterator iterator = components.iterator(); + if (iterator.hasNext()) { + iterator.next().appendTo(rv); + } + while (iterator.hasNext()) { + rv.append('\n'); + iterator.next().appendTo(rv); + } + + return rv.toString(); + } + +} -- cgit v1.2.3