package gtclassic.common.gui;

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

import gtclassic.api.gui.GTGuiButton;
import gtclassic.common.GTLang;
import gtclassic.common.container.GTContainerWorktable;
import gtclassic.common.tile.GTTileWorktable;
import ic2.core.inventory.gui.GuiIC2;
import ic2.core.inventory.gui.components.GuiComponent;
import ic2.core.util.math.Box2D;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.resources.I18n;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;

public class GTGuiCompWorktable extends GuiComponent {

	GTContainerWorktable container;
	GTTileWorktable block;
	private static final Box2D BOX = new Box2D(135, 25, 36, 20);

	public GTGuiCompWorktable(GTTileWorktable tile, GTContainerWorktable container) {
		super(BOX);
		this.block = tile;
		this.container = container;
	}

	@Override
	public List<ActionRequest> getNeededRequests() {
		return Arrays.asList(ActionRequest.GuiInit, ActionRequest.ButtonNotify, ActionRequest.ToolTip);
	}

	@Override
	@SideOnly(Side.CLIENT)
	public void onGuiInit(GuiIC2 gui) {
		gui.registerButton((new GTGuiButton(2, bX(gui, 153), bY(gui, 25), 18, 20)));// shift crafting grid items into
																					// player inventory
		gui.registerButton((new GTGuiButton(1, bX(gui, 135), bY(gui, 25), 18, 20)));// shift crafting grid items into
																					// main inventory
	}

	@Override
	@SideOnly(Side.CLIENT)
	public void onButtonClick(GuiIC2 gui, GuiButton button) {
		if (button.id == 2) {
			this.block.getNetwork().initiateClientTileEntityEvent(this.block, 2);
		}
		if (button.id == 1) {
			this.block.getNetwork().initiateClientTileEntityEvent(this.block, 1);
		}
	}

	@Override
	@SideOnly(Side.CLIENT)
	public void onToolTipCollecting(GuiIC2 gui, int mouseX, int mouseY, List<String> tooltips) {
		if (this.isMouseOver(mouseX, mouseY)) {
			if (mouseX > 153) {
				tooltips.add(I18n.format(GTLang.BUTTON_WORKTABLE_SHIFTPLAYER));
			} else {
				tooltips.add(I18n.format(GTLang.BUTTON_WORKTABLE_SHIFTINV));
			}
		}
	}

	private int bX(GuiIC2 gui, int position) {
		return gui.getXOffset() + position;
	}

	private int bY(GuiIC2 gui, int position) {
		return gui.getYOffset() + position;
	}
}