package jas.client.gui.elements; import java.util.HashMap; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; import org.lwjgl.util.Point; /** * GuiScreen Designed to Hold Several Child Elements that Whose Elements are Positioned Together */ public abstract class GuiPanel extends GuiScreen { public final GuiPanel parent; public final HashMap<String, GuiPanel> children = new HashMap<String, GuiPanel>(); public PanelPoint panelPoint; private boolean enabled = true; public GuiPanel(GuiPanel parent) { super(); this.parent = parent; enabled = parent != null ? parent.enabled : true; } public void setEnabled(boolean enabled) { this.enabled = enabled; for (GuiPanel childPanel : children.values()) { childPanel.setEnabled(enabled); } } public boolean isEnabled() { return enabled; } @Override public void setWorldAndResolution(Minecraft minecraft, int width, int height) { super.setWorldAndResolution(minecraft, width, height); for (GuiPanel childPanel : children.values()) { childPanel.setWorldAndResolution(minecraft, width, height); } } @Override public void initGui() { super.initGui(); panelPoint = new PanelPoint(new Point(width / 2, height / 2), new Point(256, 244)); } @Override public void updateScreen() { super.updateScreen(); for (GuiPanel childPanel : children.values()) { if (childPanel.enabled) { childPanel.updateScreen(); } } } @Override protected void actionPerformed(GuiButton button) { super.actionPerformed(button); for (GuiPanel childPanel : children.values()) { if (childPanel.enabled) { childPanel.actionPerformed(button); } } } @Override protected void keyTyped(char keyChar, int keyID) { super.keyTyped(keyChar, keyID); for (GuiPanel childPanel : children.values()) { if (childPanel.enabled) { childPanel.keyTyped(keyChar, keyID); } } } @Override protected void mouseClicked(int clickedX, int clickedY, int mouseState) { super.mouseClicked(clickedX, clickedY, mouseState); for (GuiPanel childPanel : children.values()) { if (childPanel.enabled) { childPanel.mouseClicked(clickedX, clickedY, mouseState); } } } @Override public void drawScreen(int mouseX, int mouseY, float par3) { super.drawScreen(mouseX, mouseY, par3); for (GuiPanel childPanel : children.values()) { if (childPanel.enabled) { childPanel.drawScreen(mouseX, mouseY, par3); } } } @Override public void onGuiClosed() { for (GuiPanel childPanel : children.values()) { childPanel.onGuiClosed(); } super.onGuiClosed(); } }