2012-02-29 12:39:08 +01:00
|
|
|
package net.citizensnpcs.util;
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.List;
|
|
|
|
|
2012-03-12 00:26:40 +01:00
|
|
|
import org.bukkit.command.CommandSender;
|
2012-02-29 12:39:08 +01:00
|
|
|
|
|
|
|
public class Paginator {
|
2012-03-12 00:26:40 +01:00
|
|
|
private String header;
|
2012-03-27 16:42:15 +02:00
|
|
|
|
2012-03-02 11:36:54 +01:00
|
|
|
private final List<String> lines = new ArrayList<String>();
|
2012-03-12 00:26:40 +01:00
|
|
|
|
2012-02-29 12:39:08 +01:00
|
|
|
public void addLine(String line) {
|
|
|
|
lines.add(line);
|
|
|
|
}
|
|
|
|
|
2012-03-27 16:42:15 +02:00
|
|
|
public Paginator header(String header) {
|
|
|
|
this.header = header;
|
|
|
|
return this;
|
|
|
|
}
|
|
|
|
|
2012-03-12 00:26:40 +01:00
|
|
|
public boolean sendPage(CommandSender sender, int page) {
|
2012-09-16 06:29:08 +02:00
|
|
|
int pages = (int) ((lines.size() / LINES_PER_PAGE == 0) ? 1 : Math.ceil((double) lines.size()
|
|
|
|
/ LINES_PER_PAGE));
|
2012-02-29 12:39:08 +01:00
|
|
|
if (page < 0 || page > pages)
|
|
|
|
return false;
|
|
|
|
|
|
|
|
int startIndex = LINES_PER_PAGE * page - LINES_PER_PAGE;
|
|
|
|
int endIndex = page * LINES_PER_PAGE;
|
|
|
|
|
2012-03-12 00:26:40 +01:00
|
|
|
Messaging.send(sender, StringHelper.wrapHeader("<e>" + header + " <f>" + page + "/" + pages));
|
2012-02-29 12:39:08 +01:00
|
|
|
|
|
|
|
if (lines.size() < endIndex)
|
|
|
|
endIndex = lines.size();
|
|
|
|
for (String line : lines.subList(startIndex, endIndex))
|
2012-03-12 00:26:40 +01:00
|
|
|
Messaging.send(sender, line);
|
2012-02-29 12:39:08 +01:00
|
|
|
return true;
|
|
|
|
}
|
2012-03-02 11:36:54 +01:00
|
|
|
|
2012-03-27 16:42:15 +02:00
|
|
|
private static final int LINES_PER_PAGE = 9;
|
2012-02-29 12:39:08 +01:00
|
|
|
}
|