package codechicken.nei.recipe;

import codechicken.nei.NEIClientConfig;
import codechicken.nei.NEIClientUtils;
import codechicken.nei.guihook.GuiContainerManager;
import codechicken.nei.guihook.IContainerInputHandler;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.item.ItemStack;

public class RecipeItemInputHandler implements IContainerInputHandler
{
    @Override
    public boolean lastKeyTyped(GuiContainer gui, char keyChar, int keyCode)
    {
        ItemStack stackover = GuiContainerManager.getStackMouseOver(gui);
        if(stackover == null)
            return false;
                
        if(keyCode == NEIClientConfig.getKeyBinding("gui.usage") || (keyCode == NEIClientConfig.getKeyBinding("gui.recipe") && NEIClientUtils.shiftKey()))
            return GuiUsageRecipe.openRecipeGui("item", stackover.copy());
        
        if(keyCode == NEIClientConfig.getKeyBinding("gui.recipe"))
            return GuiCraftingRecipe.openRecipeGui("item", stackover.copy());
        
        return false;
    }

    @Override
    public boolean mouseClicked(GuiContainer gui, int mousex, int mousey, int button)
    {
        ItemStack stackover = GuiContainerManager.getStackMouseOver(gui);
        if(stackover == null || !(gui instanceof GuiRecipe))
            return false;
        
        if(button == 0)
            return GuiCraftingRecipe.openRecipeGui("item", stackover.copy());

        if(button == 1)
            return GuiUsageRecipe.openRecipeGui("item", stackover.copy());
        
        return false;
    }

    @Override
    public void onKeyTyped(GuiContainer gui, char keyChar, int keyID) 
    {
    }

    @Override
    public void onMouseClicked(GuiContainer gui, int mousex, int mousey, int button) 
    {
    }

    @Override
    public void onMouseUp(GuiContainer gui, int mousex, int mousey, int button) 
    {
    }

    @Override
    public boolean keyTyped(GuiContainer gui, char keyChar, int keyID)
    {
        return false;
    }
    
    @Override
    public boolean mouseScrolled(GuiContainer gui, int mousex, int mousey, int scrolled)
    {
        return false;
    }
    
    @Override
    public void onMouseScrolled(GuiContainer gui, int mousex, int mousey, int scrolled)
    {
    }
    
    @Override
    public void onMouseDragged(GuiContainer gui, int mousex, int mousey, int button, long heldTime)
    {
    }
}