diff options
author | Dico200 <dico.karssiens@gmail.com> | 2018-07-25 01:53:23 +0100 |
---|---|---|
committer | Dico200 <dico.karssiens@gmail.com> | 2018-07-25 01:53:23 +0100 |
commit | 44587e49ff1840219d9bc44844d4a3a6cd8ac5de (patch) | |
tree | 276ae9625795e9d79fc7db8592dbcb3a1af60928 /dicore3/command/src/main/java/io/dico/dicore/command/chat/help/PageBorders.java | |
parent | 5e168847c2624b767deb9da310ecfdf169e0f43c (diff) |
Add dicore3-command
Diffstat (limited to 'dicore3/command/src/main/java/io/dico/dicore/command/chat/help/PageBorders.java')
-rw-r--r-- | dicore3/command/src/main/java/io/dico/dicore/command/chat/help/PageBorders.java | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/dicore3/command/src/main/java/io/dico/dicore/command/chat/help/PageBorders.java b/dicore3/command/src/main/java/io/dico/dicore/command/chat/help/PageBorders.java new file mode 100644 index 0000000..43c0514 --- /dev/null +++ b/dicore3/command/src/main/java/io/dico/dicore/command/chat/help/PageBorders.java @@ -0,0 +1,76 @@ +package io.dico.dicore.command.chat.help; + +import java.util.Arrays; + +public class PageBorders { + private final IPageBorder header, footer; + + public PageBorders(IPageBorder header, IPageBorder footer) { + this.header = header; + this.footer = footer; + } + + public IPageBorder getHeader() { + return header; + } + + public IPageBorder getFooter() { + return footer; + } + + public static IPageBorder simpleBorder(String... lines) { + return new SimplePageBorder(lines); + } + + public static IPageBorder disappearingBorder(int pageNum, String... lines) { + return disappearingBorder(pageNum, 0, lines); + } + + public static IPageBorder disappearingBorder(int pageNum, int keptLines, String... lines) { + return new DisappearingPageBorder(pageNum, keptLines, lines); + } + + static class SimplePageBorder extends SimpleHelpComponent implements IPageBorder { + private final String replacedSequence; + + public SimplePageBorder(String replacedSequence, String... lines) { + super(lines); + this.replacedSequence = replacedSequence; + } + + public SimplePageBorder(String... lines) { + super(lines); + this.replacedSequence = "%pageCount%"; + } + + @Override + public void setPageCount(int pageCount) { + String[] lines = this.lines; + for (int i = 0; i < lines.length; i++) { + lines[i] = lines[i].replace(replacedSequence, Integer.toString(pageCount)); + } + } + + } + + static class DisappearingPageBorder extends SimpleHelpComponent implements IPageBorder { + private final int pageNum; + private final int keptLines; + + public DisappearingPageBorder(int pageNum, int keptLines, String... lines) { + super(lines); + this.pageNum = pageNum; + this.keptLines = keptLines; + } + + @Override + public void setPageCount(int pageCount) { + if (pageCount == pageNum) { + String[] lines = this.lines; + this.lines = Arrays.copyOfRange(lines, Math.max(0, lines.length - keptLines), lines.length); + } + } + + } + +} |