From 708201c456323ac001ff52d89e6759d22ba90bd9 Mon Sep 17 00:00:00 2001 From: CrushedPixel Date: Sun, 19 Jul 2015 02:32:03 +0200 Subject: [PATCH] Added CheckBoxListener for GuiAdvancedCheckBox --- .../gui/elements/GuiAdvancedCheckBox.java | 31 ++++++++++++++++++- .../elements/listeners/CheckBoxListener.java | 7 +++++ 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 src/main/java/eu/crushedpixel/replaymod/gui/elements/listeners/CheckBoxListener.java diff --git a/src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiAdvancedCheckBox.java b/src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiAdvancedCheckBox.java index dedeb090..c256077f 100644 --- a/src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiAdvancedCheckBox.java +++ b/src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiAdvancedCheckBox.java @@ -1,13 +1,28 @@ package eu.crushedpixel.replaymod.gui.elements; +import eu.crushedpixel.replaymod.gui.elements.listeners.CheckBoxListener; import net.minecraft.client.Minecraft; import net.minecraftforge.fml.client.config.GuiCheckBox; +import java.util.ArrayList; +import java.util.List; + public class GuiAdvancedCheckBox extends GuiCheckBox implements GuiElement { public GuiAdvancedCheckBox(int xPos, int yPos, String displayString, boolean isChecked) { super(0, xPos, yPos, displayString, isChecked); } + public GuiAdvancedCheckBox(String displayString, boolean isChecked, boolean isEnabled) { + this(0, 0, displayString, isChecked); + this.setElementEnabled(isEnabled); + } + + private List listeners = new ArrayList(); + + public void addCheckBoxListener(CheckBoxListener listener) { + this.listeners.add(listener); + } + @Override public void draw(Minecraft mc, int mouseX, int mouseY) { drawButton(mc, mouseX, mouseY); @@ -28,7 +43,9 @@ public class GuiAdvancedCheckBox extends GuiCheckBox implements GuiElement { @Override public boolean mouseClick(Minecraft mc, int mouseX, int mouseY, int button) { - return mousePressed(mc, mouseX, mouseY); + boolean success = mousePressed(mc, mouseX, mouseY); + if(success) fireCheckListeners(); + return success; } @Override @@ -55,4 +72,16 @@ public class GuiAdvancedCheckBox extends GuiCheckBox implements GuiElement { public void setElementEnabled(boolean enabled) { this.enabled = enabled; } + + @Override + public void setIsChecked(boolean isChecked) { + super.setIsChecked(isChecked); + fireCheckListeners(); + } + + private void fireCheckListeners() { + for(CheckBoxListener listener : listeners) { + listener.onCheck(isChecked()); + } + } } diff --git a/src/main/java/eu/crushedpixel/replaymod/gui/elements/listeners/CheckBoxListener.java b/src/main/java/eu/crushedpixel/replaymod/gui/elements/listeners/CheckBoxListener.java new file mode 100644 index 00000000..fcffbc32 --- /dev/null +++ b/src/main/java/eu/crushedpixel/replaymod/gui/elements/listeners/CheckBoxListener.java @@ -0,0 +1,7 @@ +package eu.crushedpixel.replaymod.gui.elements.listeners; + +public interface CheckBoxListener { + + void onCheck(boolean checked); + +}