package codechicken.nei.guihook;
import net.minecraft.client.gui.inventory.GuiContainer;
import org.lwjgl.input.Keyboard;
public interface IContainerInputHandler {
/**
* Only use this for things like input boxes that have to be 'focused' first and will not conflict with others
*
* @param gui An instance of the currentscreen
* @param keyChar The character representing the keyPress
* @param keyCode The KeyCode as defined in {@link Keyboard}
* @return true to terminate further processing of this event.
*/
public boolean keyTyped(GuiContainer gui, char keyChar, int keyCode);
/**
* This version of keyTyped is passive and will be called on every input handler before keyTyped is processed
*
* @param gui An instance of the currentscreen
* @param keyChar The character representing the keyPress
* @param keyID The KeyCode as defined in {@link Keyboard}
*/
public void onKeyTyped(GuiContainer gui, char keyChar, int keyID);
/**
* This version of keyTyped is called if the key event has not been handled by the first pass, use this for key bindings that work globally
*
* @param gui An instance of the currentscreen
* @param keyChar The character representing the keyPress
* @param keyID The KeyCode as defined in {@link Keyboard}
* @return true to terminate further processing of this event.
*/
public boolean lastKeyTyped(GuiContainer gui, char keyChar, int keyID);
/**
* Called when the mouse is clicked in the gui
*
* @param gui An instance of the currentscreen
* @param mousex The x position of the mouse in pixels from left
* @param mousey The y position of the mouse in pixels from top
* @param button The button index being pressed, {0 = Left Click, 1 = Right Click, 2 = Middle Click}
* @return true to terminate further processing of this event.
*/
public boolean mouseClicked(GuiContainer gui, int mousex, int mousey, int button);
/**
* This version of mouseClicked is passive and will be called on every input handler before mouseClicked is processed
*
* @param gui An instance of the currentscreen
* @param mousex The x position of the mouse in pixels from left
* @param mousey The y position of the mouse in pixels from top
* @param button The button index being pressed, {0 = Left Click, 1 = Right Click, 2 = Middle Click}
*/
public void onMouseClicked(GuiContainer gui, int mousex, int mousey, int button);
/**
* @param gui An instance of the currentscreen
* @param mousex The x position of the mouse in pixels from left
* @param mousey The y position of the mouse in pixels from top
* @param button The button index being released, {0 = Left Click, 1 = Right Click, 2 = Middle Click}
*/
public void onMouseUp(GuiContainer gui, int mousex, int mousey, int button);
/**
* @param gui An instance of the currentscreen
* @param mousex The x position of the mouse in pixels from left
* @param mousey The y position of the mouse in pixels from top
* @param scrolled The number of notches scrolled. Positive for up.
* @return true to terminate further processing of this event.
*/
public boolean mouseScrolled(GuiContainer gui, int mousex, int mousey, int scrolled);
/**
* This version of mouseScrolled is passive and will be called on every input handler before mouseScrolled is processed
*
* @param gui An instance of the currentscreen
* @param mousex The x position of the mouse in pixels from left
* @param mousey The y position of the mouse in pixels from top
* @param scrolled The number of notches scrolled. Positive for up.
*/
public void onMouseScrolled(GuiContainer gui, int mousex, int mousey, int scrolled);
/**
* This version of mouseClicked is passive and will be called on every input handler before mouseClicked is processed
*
* @param gui An instance of the currentscreen
* @param mousex The x position of the mouse in pixels from left
* @param mousey The y position of the mouse in pixels from top
* @param button The button index being pressed, {0 = Left Click, 1 = Right Click, 2 = Middle Click}
* @param heldTime The number of milliseconds since the button was first pressed
*/
public void onMouseDragged(GuiContainer gui, int mousex, int mousey, int button, long heldTime);
}