aboutsummaryrefslogtreecommitdiff
path: root/src/Java/binnie/craftgui/controls/ControlTextEdit.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/Java/binnie/craftgui/controls/ControlTextEdit.java')
-rw-r--r--src/Java/binnie/craftgui/controls/ControlTextEdit.java154
1 files changed, 154 insertions, 0 deletions
diff --git a/src/Java/binnie/craftgui/controls/ControlTextEdit.java b/src/Java/binnie/craftgui/controls/ControlTextEdit.java
new file mode 100644
index 0000000000..8c07a12d7c
--- /dev/null
+++ b/src/Java/binnie/craftgui/controls/ControlTextEdit.java
@@ -0,0 +1,154 @@
+package binnie.craftgui.controls;
+
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.controls.core.IControlValue;
+import binnie.craftgui.core.Attribute;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.events.EventHandler.Origin;
+import binnie.craftgui.events.EventKey.Down;
+import binnie.craftgui.events.EventKey.Down.Handler;
+import binnie.craftgui.events.EventMouse.Down;
+import binnie.craftgui.events.EventMouse.Down.Handler;
+import binnie.craftgui.events.EventTextEdit;
+import binnie.craftgui.events.EventWidget.GainFocus;
+import binnie.craftgui.events.EventWidget.GainFocus.Handler;
+import binnie.craftgui.events.EventWidget.LoseFocus;
+import binnie.craftgui.events.EventWidget.LoseFocus.Handler;
+import binnie.craftgui.minecraft.GuiCraftGUI;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.resource.minecraft.CraftGUITexture;
+import net.minecraft.client.gui.GuiTextField;
+
+public class ControlTextEdit
+ extends Control
+ implements IControlValue<String>
+{
+ GuiTextField field;
+
+ public ControlTextEdit(IWidget parent, float x, float y, float width, float height)
+ {
+ super(parent, x, y, width, height);
+
+ this.field = new GuiTextField(getWindow().getGui().getFontRenderer(), 0, 0, 10, 10);
+ addAttribute(Attribute.CanFocus);
+ addAttribute(Attribute.MouseOver);
+ this.field.setEnableBackgroundDrawing(false);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ addEventHandler(new EventKey.Down.Handler()
+ {
+ public void onEvent(EventKey.Down event)
+ {
+ ControlTextEdit.this.field.textboxKeyTyped(event.getCharacter(), event.getKey());
+ String text = ControlTextEdit.this.getValue();
+ if (!text.equals(ControlTextEdit.this.cachedValue))
+ {
+ ControlTextEdit.this.cachedValue = text;
+ ControlTextEdit.this.callEvent(new EventTextEdit(ControlTextEdit.this, ControlTextEdit.this.cachedValue));
+ ControlTextEdit.this.onTextEdit(ControlTextEdit.this.cachedValue);
+ }
+ }
+ }.setOrigin(EventHandler.Origin.Self, this));
+
+
+
+
+ addEventHandler(new EventMouse.Down.Handler()
+ {
+ public void onEvent(EventMouse.Down event)
+ {
+ ControlTextEdit.this.field.mouseClicked((int)ControlTextEdit.this.getRelativeMousePosition().x(), (int)ControlTextEdit.this.getRelativeMousePosition().y(), event.getButton());
+ }
+ }.setOrigin(EventHandler.Origin.Self, this));
+
+
+
+ addEventHandler(new EventWidget.GainFocus.Handler()
+ {
+ public void onEvent(EventWidget.GainFocus event)
+ {
+ ControlTextEdit.this.field.setFocused(true);
+ }
+ }.setOrigin(EventHandler.Origin.Self, this));
+
+
+
+ addEventHandler(new EventWidget.LoseFocus.Handler()
+ {
+ public void onEvent(EventWidget.LoseFocus event)
+ {
+ ControlTextEdit.this.field.setFocused(false);
+ }
+ }.setOrigin(EventHandler.Origin.Self, this));
+ }
+
+ public String getValue()
+ {
+ return this.field.getText() == null ? "" : this.field.getText();
+ }
+
+ public void setValue(String value)
+ {
+ if (!getValue().equals(value))
+ {
+ this.field.setText(value);
+ this.field.setCursorPosition(0);
+ }
+ }
+
+ private String cachedValue = "";
+
+ public void onUpdateClient() {}
+
+ protected void onTextEdit(String value) {}
+
+ public void onRenderBackground()
+ {
+ CraftGUI.Render.texture(CraftGUITexture.Slot, getArea());
+ renderTextField();
+ }
+
+ protected void renderTextField()
+ {
+ this.field.width = ((int)w());
+ this.field.height = ((int)h());
+ this.field.xPosition = ((int)((h() - 8.0F) / 2.0F));
+ this.field.yPosition = ((int)((h() - 8.0F) / 2.0F));
+ this.field.drawTextBox();
+ }
+}