Added page system.

This commit is contained in:
Brianna O'Keefe 2019-03-07 20:39:49 -05:00
parent ed58562595
commit fa2ded94b4
6 changed files with 213 additions and 60 deletions

View File

@ -16,6 +16,7 @@ import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
public class GUINotesManager extends AbstractGUI {
@ -23,6 +24,8 @@ public class GUINotesManager extends AbstractGUI {
private final OfflinePlayer toModerate;
private int page = 0;
public GUINotesManager(UltimateModeration plugin, OfflinePlayer toModerate, Player player) {
super(player);
this.plugin = plugin;
@ -34,19 +37,37 @@ public class GUINotesManager extends AbstractGUI {
@Override
protected void constructGUI() {
inventory.clear();
createButton(1, Material.ARROW, plugin.getLocale().getMessage("gui.general.previous"));
createButton(3, Material.ARROW, plugin.getLocale().getMessage("gui.general.next"));
createButton(8, Material.OAK_DOOR, plugin.getLocale().getMessage("gui.general.back"));
createButton(6, Material.REDSTONE, plugin.getLocale().getMessage("gui.notes.create"));
resetClickables();
registerClickables();
for (int i = 0; i < 9; i++)
createButton(9 + i, Material.GRAY_STAINED_GLASS_PANE, "&1");
List<PunishmentNote> notes = plugin.getPunishmentManager().getPlayer(toModerate).getNotes();
int numNotes = plugin.getPunishmentManager().getPlayer(toModerate).getNotes().size();
int maxPage = (int) Math.ceil(numNotes / 36.0);
List<PunishmentNote> notes = plugin.getPunishmentManager().getPlayer(toModerate).getNotes().stream()
.skip(page * 36).limit(36).collect(Collectors.toList());
if (page != 0) {
createButton(1, Material.ARROW, plugin.getLocale().getMessage("gui.general.previous"));
registerClickable(1, ((player1, inventory1, cursor, slot, type) -> {
page --;
constructGUI();
}));
}
if (page != maxPage) {
createButton(3, Material.ARROW, plugin.getLocale().getMessage("gui.general.next"));
registerClickable(3, ((player1, inventory1, cursor, slot, type) -> {
page ++;
constructGUI();
}));
}
createButton(8, Material.OAK_DOOR, plugin.getLocale().getMessage("gui.general.back"));
createButton(6, Material.REDSTONE, plugin.getLocale().getMessage("gui.notes.create"));
for (int i = 0; i < notes.size(); i++) {
PunishmentNote note = notes.get(i);

View File

@ -1,6 +1,7 @@
package com.songoda.ultimatemoderation.gui;
import com.songoda.ultimatemoderation.UltimateModeration;
import com.songoda.ultimatemoderation.punish.PunishmentNote;
import com.songoda.ultimatemoderation.punish.PunishmentType;
import com.songoda.ultimatemoderation.punish.player.PlayerPunishData;
import com.songoda.ultimatemoderation.utils.gui.AbstractGUI;
@ -11,12 +12,15 @@ import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.SkullMeta;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class GUIPlayers extends AbstractGUI {
private final UltimateModeration plugin;
private int task;
private int page = 0;
public GUIPlayers(UltimateModeration plugin, Player player) {
super(player);
@ -31,7 +35,30 @@ public class GUIPlayers extends AbstractGUI {
inventory.clear();
resetClickables();
registerClickables();
ArrayList<Player> players = new ArrayList<>(Bukkit.getOnlinePlayers());
List<Player> players = new ArrayList<>(Bukkit.getOnlinePlayers()).stream()
.skip(page * 36).collect(Collectors.toList());
int sizeLeft = players.size();
players = players.stream().limit(36).collect(Collectors.toList());
if (page != 0) {
createButton(46, Material.ARROW, plugin.getLocale().getMessage("gui.general.previous"));
registerClickable(46, ((player1, inventory1, cursor, slot, type) -> {
page --;
constructGUI();
}));
}
if (sizeLeft >= 36) {
createButton(48, Material.ARROW, plugin.getLocale().getMessage("gui.general.next"));
registerClickable(48, ((player1, inventory1, cursor, slot, type) -> {
page ++;
constructGUI();
}));
}
for (int i = 0; i < players.size(); i++) {
Player pl = players.get(i);
@ -67,11 +94,6 @@ public class GUIPlayers extends AbstractGUI {
for (int i = 0; i < 9; i++)
createButton(36 + i, Material.GRAY_STAINED_GLASS_PANE, "&1");
createButton(46, Material.ARROW, plugin.getLocale().getMessage("gui.general.previous"));
createButton(48, Material.ARROW, plugin.getLocale().getMessage("gui.general.next"));
createButton(51, Material.CHEST, "&7Tickets");
createButton(52, Material.MAP, plugin.getLocale().getMessage("gui.players.button.templatemanager"));
}

View File

@ -2,19 +2,20 @@ package com.songoda.ultimatemoderation.gui;
import com.songoda.ultimatemoderation.UltimateModeration;
import com.songoda.ultimatemoderation.punish.AppliedPunishment;
import com.songoda.ultimatemoderation.punish.Punishment;
import com.songoda.ultimatemoderation.punish.PunishmentType;
import com.songoda.ultimatemoderation.punish.player.PlayerPunishData;
import com.songoda.ultimatemoderation.tickets.TicketResponse;
import com.songoda.ultimatemoderation.utils.Methods;
import com.songoda.ultimatemoderation.utils.gui.AbstractGUI;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player;
import org.omg.PortableInterceptor.ACTIVE;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import java.util.*;
import java.util.stream.Collectors;
public class GUIPunishments extends AbstractGUI {
@ -24,6 +25,8 @@ public class GUIPunishments extends AbstractGUI {
private Activity currentActivity = Activity.BOTH;
private PunishmentType punishmentType = PunishmentType.ALL;
private int page = 0;
public GUIPunishments(UltimateModeration plugin, OfflinePlayer toModerate, Player player) {
super(player);
this.plugin = plugin;
@ -38,6 +41,52 @@ public class GUIPunishments extends AbstractGUI {
resetClickables();
registerClickables();
PlayerPunishData playerPunishData = plugin.getPunishmentManager().getPlayer(toModerate);
List<PunishmentHolder> punishments = new ArrayList<>();
if (currentActivity == Activity.ACTIVE || currentActivity == Activity.BOTH) {
for (AppliedPunishment punishment : playerPunishData.getActivePunishments()) {
if (punishmentType != PunishmentType.ALL) {
if (punishment.getPunishmentType() != punishmentType)
continue;
}
punishments.add(new PunishmentHolder(Activity.ACTIVE, punishment));
}
}
if (currentActivity == Activity.EXPIRED || currentActivity == Activity.BOTH) {
for (AppliedPunishment punishment : playerPunishData.getExpiredPunishments()) {
if (punishmentType != PunishmentType.ALL) {
if (punishment.getPunishmentType() != punishmentType)
continue;
}
punishments.add(new PunishmentHolder(Activity.EXPIRED, punishment));
}
}
int numNotes = punishments.size();
int maxPage = (int) Math.ceil(numNotes / 36.0);
punishments = punishments.stream().skip(page * 36).limit(36)
.collect(Collectors.toList());
if (page != 0) {
createButton(1, Material.ARROW, plugin.getLocale().getMessage("gui.general.previous"));
registerClickable(1, ((player1, inventory1, cursor, slot, type) -> {
page --;
constructGUI();
}));
}
if (page != maxPage) {
createButton(8, Material.ARROW, plugin.getLocale().getMessage("gui.general.next"));
registerClickable(8, ((player1, inventory1, cursor, slot, type) -> {
page ++;
constructGUI();
}));
}
createButton(8, Material.OAK_DOOR, plugin.getLocale().getMessage("gui.general.back"));
createButton(1, Material.ARROW, plugin.getLocale().getMessage("gui.general.previous"));
@ -50,34 +99,10 @@ public class GUIPunishments extends AbstractGUI {
for (int i = 0; i < 9; i++)
createButton(9 + i, Material.GRAY_STAINED_GLASS_PANE, "&1");
PlayerPunishData playerPunishData = plugin.getPunishmentManager().getPlayer(toModerate);
Map<AppliedPunishment, Activity> punishments = new HashMap<>();
if (currentActivity == Activity.ACTIVE || currentActivity == Activity.BOTH) {
for (AppliedPunishment punishment : playerPunishData.getActivePunishments()) {
if (punishmentType != PunishmentType.ALL) {
if (punishment.getPunishmentType() != punishmentType)
continue;
}
punishments.put(punishment, Activity.ACTIVE);
}
}
if (currentActivity == Activity.EXPIRED || currentActivity == Activity.BOTH) {
for (AppliedPunishment punishment : playerPunishData.getExpiredPunishments()) {
if (punishmentType != PunishmentType.ALL) {
if (punishment.getPunishmentType() != punishmentType)
continue;
}
punishments.put(punishment, Activity.EXPIRED);
}
}
int currentSlot = 18;
for (Map.Entry<AppliedPunishment, Activity> entry : punishments.entrySet()) {
AppliedPunishment appliedPunishment = entry.getKey();
Activity activity = entry.getValue();
for (PunishmentHolder punishmentHolder : punishments) {
AppliedPunishment appliedPunishment = punishmentHolder.appliedPunishment;
Activity activity = punishmentHolder.getActivity();
ArrayList<String> lore = new ArrayList<>();
lore.add("");
@ -119,11 +144,13 @@ public class GUIPunishments extends AbstractGUI {
registerClickable(3, ((player1, inventory1, cursor, slot, type) -> {
this.currentActivity = currentActivity.next();
this.page = 0;
constructGUI();
}));
registerClickable(4, ((player1, inventory1, cursor, slot, type) -> {
this.punishmentType = punishmentType.nextFilter();
this.page = 0;
constructGUI();
}));
}
@ -132,6 +159,25 @@ public class GUIPunishments extends AbstractGUI {
protected void registerOnCloses() {
}
private class PunishmentHolder {
private final Activity activity;
private final AppliedPunishment appliedPunishment;
public PunishmentHolder(Activity activity, AppliedPunishment appliedPunishment) {
this.activity = activity;
this.appliedPunishment = appliedPunishment;
}
public Activity getActivity() {
return activity;
}
public AppliedPunishment getAppliedPunishment() {
return appliedPunishment;
}
}
private enum Activity {
BOTH, ACTIVE, EXPIRED;

View File

@ -3,6 +3,7 @@ package com.songoda.ultimatemoderation.gui;
import com.songoda.ultimatemoderation.UltimateModeration;
import com.songoda.ultimatemoderation.punish.PunishmentType;
import com.songoda.ultimatemoderation.punish.template.Template;
import com.songoda.ultimatemoderation.tickets.TicketResponse;
import com.songoda.ultimatemoderation.utils.Methods;
import com.songoda.ultimatemoderation.utils.gui.AbstractGUI;
import org.bukkit.Material;
@ -10,11 +11,15 @@ import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class GUITemplateManager extends AbstractGUI {
private final UltimateModeration plugin;
private int page = 0;
private PunishmentType punishmentType = PunishmentType.ALL;
public GUITemplateManager(UltimateModeration plugin, Player player) {
@ -27,13 +32,33 @@ public class GUITemplateManager extends AbstractGUI {
@Override
protected void constructGUI() {
inventory.clear();
resetClickables();
registerClickables();
createButton(1, Material.ARROW, plugin.getLocale().getMessage("gui.general.previous"));
int numTemplates = plugin.getTemplateManager().getTemplates().size();
int maxPage = (int) Math.ceil(numTemplates / 36.0);
List<Template> templates = plugin.getTemplateManager().getTemplates().values().stream().skip(page * 36).limit(36)
.collect(Collectors.toList());
if (page != 0) {
createButton(1, Material.ARROW, plugin.getLocale().getMessage("gui.general.previous"));
registerClickable(1, ((player1, inventory1, cursor, slot, type) -> {
page --;
constructGUI();
}));
}
if (page != maxPage) {
createButton(5, Material.ARROW, plugin.getLocale().getMessage("gui.general.next"));
registerClickable(5, ((player1, inventory1, cursor, slot, type) -> {
page ++;
constructGUI();
}));
}
createButton(3 ,Material.DIAMOND_SWORD, Methods.formatText("&6" + punishmentType.name()));
createButton(5, Material.ARROW, plugin.getLocale().getMessage("gui.general.next"));
createButton(8, Material.OAK_DOOR, plugin.getLocale().getMessage("gui.general.back"));
createButton(7, Material.REDSTONE, plugin.getLocale().getMessage("gui.templatemanager.create"));
@ -41,7 +66,6 @@ public class GUITemplateManager extends AbstractGUI {
for (int i = 0; i < 9; i++)
createButton(9 + i, Material.GRAY_STAINED_GLASS_PANE, "&1");
ArrayList<Template> templates = new ArrayList<>(plugin.getTemplateManager().getTemplates().values());
if (punishmentType != PunishmentType.ALL)
templates.removeIf(template -> template.getPunishmentType() != punishmentType);
for (int i = 0; i < templates.size(); i++) {
@ -71,6 +95,7 @@ public class GUITemplateManager extends AbstractGUI {
registerClickable(3, ((player1, inventory1, cursor, slot, type) -> {
this.punishmentType = punishmentType.nextFilter();
this.page = 0;
constructGUI();
}));
}

View File

@ -18,6 +18,7 @@ import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
public class GUITicket extends AbstractGUI {
@ -26,6 +27,7 @@ public class GUITicket extends AbstractGUI {
private final Ticket ticket;
private final OfflinePlayer toModerate;
private int page = 0;
public GUITicket(UltimateModeration plugin, Ticket ticket, OfflinePlayer toModerate, Player player) {
super(player);
@ -42,12 +44,30 @@ public class GUITicket extends AbstractGUI {
resetClickables();
registerClickables();
createButton(1, Material.ARROW, plugin.getLocale().getMessage("gui.general.previous"));
int numNotes = ticket.getResponses().size();
int maxPage = (int) Math.ceil(numNotes / 36.0);
List<TicketResponse> responses = ticket.getResponses().stream().skip(page * 36).limit(36)
.collect(Collectors.toList());
if (page != 0) {
createButton(1, Material.ARROW, plugin.getLocale().getMessage("gui.general.previous"));
registerClickable(1, ((player1, inventory1, cursor, slot, type) -> {
page --;
constructGUI();
}));
}
if (page != maxPage) {
createButton(8, Material.ARROW, plugin.getLocale().getMessage("gui.general.next"));
registerClickable(8, ((player1, inventory1, cursor, slot, type) -> {
page ++;
constructGUI();
}));
}
createButton(3, Material.ARROW, plugin.getLocale().getMessage("gui.general.next"));
createButton(8, Material.OAK_DOOR, plugin.getLocale().getMessage("gui.general.back"));
if (player.hasPermission("um.ticket.openclose"))
createButton(5, Material.REDSTONE, "&6" + ticket.getStatus().getStatus());
@ -56,8 +76,6 @@ public class GUITicket extends AbstractGUI {
for (int i = 0; i < 9; i++)
createButton(9 + i, Material.GRAY_STAINED_GLASS_PANE, "&1");
List<TicketResponse> responses = ticket.getResponses();
for (int i = 0; i < responses.size(); i++) {
TicketResponse ticketResponse = responses.get(i);

View File

@ -20,6 +20,7 @@ import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
public class GUITicketManager extends AbstractGUI {
@ -29,6 +30,8 @@ public class GUITicketManager extends AbstractGUI {
private TicketStatus status = TicketStatus.OPEN;
private int page = 0;
public GUITicketManager(UltimateModeration plugin, OfflinePlayer toModerate, Player player) {
super(player);
this.plugin = plugin;
@ -43,12 +46,31 @@ public class GUITicketManager extends AbstractGUI {
resetClickables();
registerClickables();
createButton(1, Material.ARROW, plugin.getLocale().getMessage("gui.general.previous"));
List<Ticket> tickets = toModerate != null ? plugin.getTicketManager().getTicketsAbout(toModerate, status) : plugin.getTicketManager().getTickets(status);
int numTickets = tickets.size();
int maxPage = (int) Math.ceil(numTickets / 36.0);
tickets = tickets.stream().skip(page * 36).limit(36).collect(Collectors.toList());
if (page != 0) {
createButton(1, Material.ARROW, plugin.getLocale().getMessage("gui.general.previous"));
registerClickable(1, ((player1, inventory1, cursor, slot, type) -> {
page --;
constructGUI();
}));
}
if (maxPage >= 36) {
createButton(5, Material.ARROW, plugin.getLocale().getMessage("gui.general.next"));
registerClickable(5, ((player1, inventory1, cursor, slot, type) -> {
page ++;
constructGUI();
}));
}
createButton(3 ,Material.DIAMOND_SWORD, Methods.formatText("&6" + status.getStatus()));
createButton(5, Material.ARROW, plugin.getLocale().getMessage("gui.general.next"));
if (toModerate != null)
createButton(7, Material.REDSTONE, plugin.getLocale().getMessage("gui.tickets.create"));
@ -58,8 +80,6 @@ public class GUITicketManager extends AbstractGUI {
for (int i = 0; i < 9; i++)
createButton(9 + i, Material.GRAY_STAINED_GLASS_PANE, "&1");
List<Ticket> tickets = toModerate != null ? plugin.getTicketManager().getTicketsAbout(toModerate, status) : plugin.getTicketManager().getTickets(status);
for (int i = 0; i < tickets.size(); i++) {
Ticket ticket = tickets.get(i);
@ -115,6 +135,7 @@ public class GUITicketManager extends AbstractGUI {
registerClickable(3, ((player1, inventory1, cursor, slot, type) -> {
this.status = status == TicketStatus.OPEN ? TicketStatus.CLOSED : TicketStatus.OPEN;
this.page = 0;
constructGUI();
}));