max.hubbard.bettershops.Menus.ShopMenus.History.java Source code

Java tutorial

Introduction

Here is the source code for max.hubbard.bettershops.Menus.ShopMenus.History.java

Source

package max.hubbard.bettershops.Menus.ShopMenus;

import com.google.common.collect.Lists;
import max.hubbard.bettershops.Configurations.Language;
import max.hubbard.bettershops.Menus.MenuType;
import max.hubbard.bettershops.Menus.ShopMenu;
import max.hubbard.bettershops.Shops.FileShop;
import max.hubbard.bettershops.Shops.Items.Actions.ClickableItem;
import max.hubbard.bettershops.Shops.Items.Actions.LeftClickAction;
import max.hubbard.bettershops.Shops.Items.Actions.ShopItemStack;
import max.hubbard.bettershops.Shops.Shop;
import max.hubbard.bettershops.Utils.Transaction;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.scheduler.BukkitRunnable;

import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;

/**
 * ***********************************************************************
 * Copyright Max Hubbard (c) 2015. All Rights Reserved.
 * Any code contained within this document, and any associated documents with similar branding
 * are the sole property of Max. Distribution, reproduction, taking snippets, or
 * claiming any contents as your own will break the terms of the license, and void any
 * agreements with you, the third party.
 * ************************************************************************
 */
public class History implements ShopMenu {

    Shop shop;
    Inventory inv;

    public History(Shop shop) {
        this.shop = shop;
        inv = Bukkit.createInventory(null, 54, Language.getString("MainGUI", "ShopHeader") + shop.getName());

    }

    @Override
    public MenuType getType() {
        return MenuType.HISTORY;
    }

    @Override
    public Shop getAttachedShop() {
        return shop;
    }

    @Override
    public void draw(final Player p, final int page, final Object... obj) {
        inv.clear();

        ItemStack item = new ItemStack(Material.STAINED_GLASS_PANE, 1, shop.getFrameColor());
        ItemMeta m = item.getItemMeta();
        m.setDisplayName(" ");
        item.setItemMeta(m);
        for (int i = 0; i < 18; i++) {
            inv.setItem(i, item);
        }

        ItemStack info = new ItemStack(Material.ENDER_CHEST);
        ItemMeta infoMeta = info.getItemMeta();
        infoMeta.setDisplayName(Language.getString("History", "History"));
        infoMeta.setLore(Arrays.asList(Language.getString("MainGUI", "Page") + " 7" + page));
        info.setItemMeta(infoMeta);

        ItemStack clear = new ItemStack(Material.STAINED_GLASS_PANE, 1, (byte) 14);
        ItemMeta clearMeta = clear.getItemMeta();
        clearMeta.setDisplayName(Language.getString("History", "ClearHistory"));
        clearMeta.setLore(Arrays.asList(Language.getString("History", "ClearHistoryLore")));
        clear.setItemMeta(clearMeta);
        ClickableItem clearClick = new ClickableItem(new ShopItemStack(clear), inv, p);
        clearClick.addLeftClickAction(new LeftClickAction() {
            @Override
            public void onAction(InventoryClickEvent e) {
                shop.getHistory().clearHistory();
                draw(p, page, obj);
            }
        });

        ItemStack back = new ItemStack(Material.ARROW);
        ItemMeta backMeta = back.getItemMeta();
        backMeta.setDisplayName(Language.getString("MainGUI", "BackArrow"));
        back.setItemMeta(backMeta);
        ClickableItem backClick = new ClickableItem(new ShopItemStack(back), inv, p);
        backClick.addLeftClickAction(new LeftClickAction() {
            @Override
            public void onAction(InventoryClickEvent e) {
                shop.getMenu(MenuType.OWNER_BUYING).draw(p, page, obj);
            }
        });

        ItemStack arrow = new ItemStack(Material.ARROW);
        ItemMeta arrowMeta = arrow.getItemMeta();
        arrowMeta.setDisplayName(Language.getString("MainGUI", "NextPage"));
        arrow.setItemMeta(arrowMeta);
        ClickableItem arrowClick = new ClickableItem(new ShopItemStack(arrow), inv, p);
        arrowClick.addLeftClickAction(new LeftClickAction() {
            @Override
            public void onAction(InventoryClickEvent e) {
                draw(p, page + 1, obj);
            }
        });

        ItemStack barrow = new ItemStack(Material.ARROW);
        ItemMeta barrowMeta = barrow.getItemMeta();
        barrowMeta.setDisplayName(Language.getString("MainGUI", "PreviousPage"));
        barrow.setItemMeta(barrowMeta);
        ClickableItem barrowClick = new ClickableItem(new ShopItemStack(barrow), inv, p);
        barrowClick.addLeftClickAction(new LeftClickAction() {
            @Override
            public void onAction(InventoryClickEvent e) {
                draw(p, page - 1, obj);
            }
        });

        if (page > 1) {
            inv.setItem(1, barrow);
        }

        inv.setItem(0, back);

        inv.setItem(4, info);
        if (shop instanceof FileShop)
            inv.setItem(7, clear);

        int maxPage = (int) Math.ceil((double) (shop.getHistory().getAllTransactions().size()) / 36);

        if (maxPage == 0) {
            maxPage = 1;
        }

        if (page != maxPage) {
            inv.setItem(8, arrow);
        }

        int j = 0;

        if (page > 1) {
            j = 36 * (page - 1);
        }

        int k = shop.getHistory().getAllTransactions().size();

        if (page != maxPage) {
            k = k - (j + (shop.getHistory().getAllTransactions().size() - 36));
        }

        LinkedList<Transaction> list = shop.getHistory().getAllTransactions();

        List<Transaction> l = Lists.reverse(list);

        if (list.size() > 0) {
            for (int i = j; i < k; i++) {
                Transaction trans = l.get(i);
                ItemStack it = new ItemStack(Material.EMERALD);
                ItemMeta sk = it.getItemMeta();
                String s = "Buying";
                if (trans.isSell()) {
                    it = new ItemStack(Material.EMERALD_BLOCK);
                    s = "Selling";
                }

                sk.setDisplayName("a" + trans.getPlayerName());

                sk.setLore(Arrays.asList(
                        Language.getString("History", "Date") + " 8" + trans.getDate().toLocaleString(),
                        Language.getString("History", "Item") + " 8" + trans.getItem(),
                        Language.getString("History", "Price") + " 8" + trans.getPrice(),
                        Language.getString("History", "Amount") + " 8" + trans.getAmount(),
                        Language.getString("History", "Shop") + " 8" + s));

                it.setItemMeta(sk);

                if (inv.firstEmpty() > 0)
                    inv.setItem(inv.firstEmpty(), it);
            }
        }

        new BukkitRunnable() {

            @Override
            public void run() {
                p.openInventory(inv);
            }

        }.runTask(Bukkit.getPluginManager().getPlugin("BetterShops"));
    }

    @Override
    public Inventory getInventory() {
        return inv;
    }
}