46 lines
1.5 KiB
Java
46 lines
1.5 KiB
Java
package tc.oc.commons.bukkit.commands;
|
|
|
|
import com.google.common.base.Preconditions;
|
|
import com.sk89q.minecraft.util.commands.CommandException;
|
|
import com.sk89q.minecraft.util.commands.WrappedCommandSender;
|
|
import com.sk89q.minecraft.util.pagination.PaginatedResult;
|
|
import java.util.List;
|
|
import net.md_5.bungee.api.ChatColor;
|
|
import tc.oc.commons.core.chat.ChatUtils;
|
|
|
|
public abstract class PrettyPaginatedResult<T> extends PaginatedResult<T> {
|
|
protected final String header;
|
|
|
|
public PrettyPaginatedResult(String header) {
|
|
this(header, 8);
|
|
}
|
|
|
|
public PrettyPaginatedResult(String header, int resultsPerPage) {
|
|
super(resultsPerPage);
|
|
this.header = Preconditions.checkNotNull(header, "header");
|
|
}
|
|
|
|
@Override
|
|
public void display(WrappedCommandSender sender, List<? extends T> results, int page) throws CommandException {
|
|
if(results.isEmpty()) {
|
|
sender.sendMessage(formatEmpty());
|
|
} else {
|
|
super.display(sender, results, page);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public String formatHeader(int page, int totalPages) {
|
|
ChatColor dashColor = ChatColor.BLUE;
|
|
ChatColor textColor = ChatColor.DARK_AQUA;
|
|
ChatColor highlight = ChatColor.AQUA;
|
|
|
|
String message = this.header + textColor + " (" + highlight + page + textColor + " of " + highlight + totalPages + textColor + ")";
|
|
return ChatUtils.horizontalLineHeading(message, dashColor, ChatUtils.MAX_CHAT_WIDTH);
|
|
}
|
|
|
|
public String formatEmpty() {
|
|
return ChatColor.RED + "No results";
|
|
}
|
|
}
|