package pneumaticCraft.client.gui.widget;
import java.awt.Rectangle;
import java.util.ArrayList;
import java.util.List;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.Gui;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.resources.I18n;
import org.lwjgl.opengl.GL11;
import cpw.mods.fml.client.FMLClientHandler;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
@SideOnly(Side.CLIENT)
public class GuiCheckBox extends Gui implements IGuiWidget{
public boolean checked, enabled = true;
public int x, y, color;
private final int id;
public String text;
public FontRenderer fontRenderer = FMLClientHandler.instance().getClient().fontRenderer;
private List<String> tooltip = new ArrayList<String>();
private IWidgetListener listener;
private static final int CHECKBOX_WIDTH = 10;
private static final int CHECKBOX_HEIGHT = 10;
public GuiCheckBox(int id, int x, int y, int color, String text){
this.id = id;
this.x = x;
this.y = y;
this.color = color;
this.text = text;
}
@Override
public int getID(){
return id;
}
@Override
public void render(int mouseX, int mouseY, float partialTick){
drawRect(x, y, x + CHECKBOX_WIDTH, y + CHECKBOX_HEIGHT, enabled ? -6250336 : 0xFF999999);
drawRect(x + 1, y + 1, x + CHECKBOX_WIDTH - 1, y + CHECKBOX_HEIGHT - 1, enabled ? -16777216 : 0xFFAAAAAA);
if(checked) {
GL11.glDisable(GL11.GL_TEXTURE_2D);
if(enabled) {
GL11.glColor4d(1, 1, 1, 1);
} else {
GL11.glColor4d(0.8, 0.8, 0.8, 1);
}
Tessellator t = Tessellator.instance;
t.startDrawing(GL11.GL_LINE_STRIP);
t.addVertex(x + 2, y + 5, zLevel);
t.addVertex(x + 5, y + 7, zLevel);
t.addVertex(x + 8, y + 3, zLevel);
t.draw();
GL11.glEnable(GL11.GL_TEXTURE_2D);
}
fontRenderer.drawString(I18n.format(text), x + 1 + CHECKBOX_WIDTH, y + CHECKBOX_HEIGHT / 2 - fontRenderer.FONT_HEIGHT / 2, enabled ? color : 0xFF888888);
}
@Override
public Rectangle getBounds(){
return new Rectangle(x, y, CHECKBOX_WIDTH + fontRenderer.getStringWidth(I18n.format(text)), CHECKBOX_HEIGHT);
}
@Override
public void onMouseClicked(int mouseX, int mouseY, int button){
if(enabled) {
checked = !checked;
listener.actionPerformed(this);
}
}
@Override
public void onMouseClickedOutsideBounds(int mouseX, int mouseY, int button){
}
public GuiCheckBox setTooltip(String tooltip){
this.tooltip.clear();
if(tooltip != null && !tooltip.equals("")) {
this.tooltip.add(tooltip);
}
return this;
}
public GuiCheckBox setTooltip(List<String> tooltip){
this.tooltip = tooltip;
return this;
}
@Override
public void addTooltip(int mouseX, int mouseY, List<String> curTooltip, boolean shiftPressed){
curTooltip.addAll(tooltip);
}
public String getTooltip(){
return tooltip.size() > 0 ? tooltip.get(0) : "";
}
@Override
public boolean onKey(char key, int keyCode){
return false;
}
@Override
public void setListener(IWidgetListener gui){
listener = gui;
}
public GuiCheckBox setChecked(boolean checked){
this.checked = checked;
return this;
}
@Override
public void update(){}
@Override
public void handleMouseInput(){}
@Override
public void postRender(int mouseX, int mouseY, float partialTick){
}
}