uk.co.hexeption.darkforge.gui.alt.GuiPasswordField.java Source code

Java tutorial

Introduction

Here is the source code for uk.co.hexeption.darkforge.gui.alt.GuiPasswordField.java

Source

/*******************************************************************************
 *     DarkForge a Forge Hacked Client
 *     Copyright (C) 2017  Hexeption (Keir Davis)
 *
 *     This program is free software: you can redistribute it and/or modify
 *     it under the terms of the GNU General Public License as published by
 *     the Free Software Foundation, either version 3 of the License, or
 *     (at your option) any later version.
 *
 *     This program is distributed in the hope that it will be useful,
 *     but WITHOUT ANY WARRANTY; without even the implied warranty of
 *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *     GNU General Public License for more details.
 *
 *     You should have received a copy of the GNU General Public License
 *     along with this program.  If not, see <http://www.gnu.org/licenses/>.
 ******************************************************************************/

package uk.co.hexeption.darkforge.gui.alt;

import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.Gui;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.VertexBuffer;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
import net.minecraft.util.ChatAllowedCharacters;
import org.lwjgl.opengl.GL11;

public class GuiPasswordField extends Gui {

    private final FontRenderer field_146211_a;

    private final int field_146209_f;

    private final int field_146210_g;

    private final int field_146218_h;

    private final int field_146219_i;

    private String field_146216_j = "";

    private int field_146217_k = 32;

    private int field_146214_l;

    private boolean field_146215_m = true;

    private boolean field_146212_n = true;

    private boolean field_146213_o;

    private boolean field_146226_p = true;

    private int field_146225_q;

    private int field_146224_r;

    private int field_146223_s;

    private int field_146222_t = 14737632;

    private int field_146221_u = 7368816;

    private boolean field_146220_v = true;

    public GuiPasswordField(FontRenderer par1FontRenderer, int par2, int par3, int par4, int par5) {

        this.field_146211_a = par1FontRenderer;
        this.field_146209_f = par2;
        this.field_146210_g = par3;
        this.field_146218_h = par4;
        this.field_146219_i = par5;
    }

    public void updateCursorCounter() {

        this.field_146214_l += 1;
    }

    public String getText() {

        return this.field_146216_j;
    }

    public void setText(String p_146180_1_) {

        if (p_146180_1_.length() > this.field_146217_k) {
            this.field_146216_j = p_146180_1_.substring(0, this.field_146217_k);
        } else {
            this.field_146216_j = p_146180_1_;
        }

        func_146202_e();
    }

    public String func_146207_c() {

        int var1 = this.field_146224_r < this.field_146223_s ? this.field_146224_r : this.field_146223_s;
        int var2 = this.field_146224_r < this.field_146223_s ? this.field_146223_s : this.field_146224_r;
        return this.field_146216_j.substring(var1, var2);
    }

    public void func_146191_b(String p_146191_1_) {

        String var2 = "";
        String var3 = ChatAllowedCharacters.filterAllowedCharacters(p_146191_1_);
        int var4 = this.field_146224_r < this.field_146223_s ? this.field_146224_r : this.field_146223_s;
        int var5 = this.field_146224_r < this.field_146223_s ? this.field_146223_s : this.field_146224_r;
        int var6 = this.field_146217_k - this.field_146216_j.length() - (var4 - this.field_146223_s);

        if (this.field_146216_j.length() > 0) {
            var2 = var2 + this.field_146216_j.substring(0, var4);
        }

        int var8;

        if (var6 < var3.length()) {
            var2 = var2 + var3.substring(0, var6);
            var8 = var6;
        } else {
            var2 = var2 + var3;
            var8 = var3.length();
        }

        if ((this.field_146216_j.length() > 0) && (var5 < this.field_146216_j.length())) {
            var2 = var2 + this.field_146216_j.substring(var5);
        }

        this.field_146216_j = var2;
        func_146182_d(var4 - this.field_146223_s + var8);
    }

    public void func_146177_a(int p_146177_1_) {

        if (this.field_146216_j.length() != 0) {
            if (this.field_146223_s != this.field_146224_r) {
                func_146191_b("");
            } else {
                func_146175_b(func_146187_c(p_146177_1_) - this.field_146224_r);
            }
        }
    }

    public void func_146175_b(int p_146175_1_) {

        if (this.field_146216_j.length() != 0) {
            if (this.field_146223_s != this.field_146224_r) {
                func_146191_b("");
            } else {
                boolean var2 = p_146175_1_ < 0;
                int var3 = var2 ? this.field_146224_r + p_146175_1_ : this.field_146224_r;
                int var4 = var2 ? this.field_146224_r : this.field_146224_r + p_146175_1_;
                String var5 = "";

                if (var3 >= 0) {
                    var5 = this.field_146216_j.substring(0, var3);
                }

                if (var4 < this.field_146216_j.length()) {
                    var5 = var5 + this.field_146216_j.substring(var4);
                }

                this.field_146216_j = var5;

                if (var2) {
                    func_146182_d(p_146175_1_);
                }
            }
        }
    }

    public int func_146187_c(int p_146187_1_) {

        return func_146183_a(p_146187_1_, func_146198_h());
    }

    public int func_146183_a(int p_146183_1_, int p_146183_2_) {

        return func_146197_a(p_146183_1_, func_146198_h(), true);
    }

    public int func_146197_a(int p_146197_1_, int p_146197_2_, boolean p_146197_3_) {

        int var4 = p_146197_2_;
        boolean var5 = p_146197_1_ < 0;
        int var6 = Math.abs(p_146197_1_);

        for (int var7 = 0; var7 < var6; var7++) {
            if (var5) {
                for (;;) {
                    var4--;

                    if ((p_146197_3_) && (var4 > 0)) {
                        if (this.field_146216_j.charAt(var4 - 1) != ' ') {
                            break;
                        }
                    }
                }

                do {
                    var4--;

                    if (var4 <= 0) {
                        break;
                    }
                } while (this.field_146216_j.charAt(var4 - 1) != ' ');
            } else {
                int var8 = this.field_146216_j.length();
                var4 = this.field_146216_j.indexOf(' ', var4);

                if (var4 == -1) {
                    var4 = var8;
                } else {
                    while ((p_146197_3_) && (var4 < var8) && (this.field_146216_j.charAt(var4) == ' ')) {
                        var4++;
                    }
                }
            }
        }

        return var4;
    }

    public void func_146182_d(int p_146182_1_) {

        func_146190_e(this.field_146223_s + p_146182_1_);
    }

    public void func_146190_e(int p_146190_1_) {

        this.field_146224_r = p_146190_1_;
        int var2 = this.field_146216_j.length();

        if (this.field_146224_r < 0) {
            this.field_146224_r = 0;
        }

        if (this.field_146224_r > var2) {
            this.field_146224_r = var2;
        }

        func_146199_i(this.field_146224_r);
    }

    public void func_146196_d() {

        func_146190_e(0);
    }

    public void func_146202_e() {

        func_146190_e(this.field_146216_j.length());
    }

    public boolean textboxKeyTyped(char p_146201_1_, int p_146201_2_) {

        if (!this.field_146213_o) {
            return false;
        }

        switch (p_146201_1_) {
        case '\001':
            func_146202_e();
            func_146199_i(0);
            return true;

        case '\003':
            GuiScreen.setClipboardString(func_146207_c());
            return true;

        case '\026':
            if (this.field_146226_p) {
                func_146191_b(GuiScreen.getClipboardString());
            }

            return true;

        case '\030':
            GuiScreen.setClipboardString(func_146207_c());

            if (this.field_146226_p) {
                func_146191_b("");
            }

            return true;
        }

        switch (p_146201_2_) {
        case 14:
            if (GuiScreen.isCtrlKeyDown()) {
                if (this.field_146226_p) {
                    func_146177_a(-1);
                }
            } else if (this.field_146226_p) {
                func_146175_b(-1);
            }

            return true;

        case 199:
            if (GuiScreen.isShiftKeyDown()) {
                func_146199_i(0);
            } else {
                func_146196_d();
            }

            return true;

        case 203:
            if (GuiScreen.isShiftKeyDown()) {
                if (GuiScreen.isCtrlKeyDown()) {
                    func_146199_i(func_146183_a(-1, func_146186_n()));
                } else {
                    func_146199_i(func_146186_n() - 1);
                }
            } else if (GuiScreen.isCtrlKeyDown()) {
                func_146190_e(func_146187_c(-1));
            } else {
                func_146182_d(-1);
            }

            return true;

        case 205:
            if (GuiScreen.isShiftKeyDown()) {
                if (GuiScreen.isCtrlKeyDown()) {
                    func_146199_i(func_146183_a(1, func_146186_n()));
                } else {
                    func_146199_i(func_146186_n() + 1);
                }
            } else if (GuiScreen.isCtrlKeyDown()) {
                func_146190_e(func_146187_c(1));
            } else {
                func_146182_d(1);
            }

            return true;

        case 207:
            if (GuiScreen.isShiftKeyDown()) {
                func_146199_i(this.field_146216_j.length());
            } else {
                func_146202_e();
            }

            return true;

        case 211:
            if (GuiScreen.isCtrlKeyDown()) {
                if (this.field_146226_p) {
                    func_146177_a(1);
                }
            } else if (this.field_146226_p) {
                func_146175_b(1);
            }

            return true;
        }

        if (ChatAllowedCharacters.isAllowedCharacter(p_146201_1_)) {
            if (this.field_146226_p) {
                func_146191_b(Character.toString(p_146201_1_));
            }

            return true;
        }

        return false;
    }

    public void mouseClicked(int p_146192_1_, int p_146192_2_, int p_146192_3_) {

        boolean var4 = (p_146192_1_ >= this.field_146209_f)
                && (p_146192_1_ < this.field_146209_f + this.field_146218_h) && (p_146192_2_ >= this.field_146210_g)
                && (p_146192_2_ < this.field_146210_g + this.field_146219_i);

        if (this.field_146212_n) {
            setFocused(var4);
        }

        if ((this.field_146213_o) && (p_146192_3_ == 0)) {
            int var5 = p_146192_1_ - this.field_146209_f;

            if (this.field_146215_m) {
                var5 -= 4;
            }

            String var6 = this.field_146211_a.trimStringToWidth(this.field_146216_j.substring(this.field_146225_q),
                    func_146200_o());
            func_146190_e(this.field_146211_a.trimStringToWidth(var6, var5).length() + this.field_146225_q);
        }
    }

    public void drawTextBox() {

        if (func_146176_q()) {
            if (func_146181_i()) {
                drawRect(this.field_146209_f - 1, this.field_146210_g - 1,
                        this.field_146209_f + this.field_146218_h + 1,
                        this.field_146210_g + this.field_146219_i + 1, -6250336);
                drawRect(this.field_146209_f, this.field_146210_g, this.field_146209_f + this.field_146218_h,
                        this.field_146210_g + this.field_146219_i, -16777216);
            }

            int var1 = this.field_146226_p ? this.field_146222_t : this.field_146221_u;
            int var2 = this.field_146224_r - this.field_146225_q;
            int var3 = this.field_146223_s - this.field_146225_q;
            String var4 = this.field_146211_a.trimStringToWidth(this.field_146216_j.substring(this.field_146225_q),
                    func_146200_o());
            boolean var5 = (var2 >= 0) && (var2 <= var4.length());
            boolean var6 = (this.field_146213_o) && (this.field_146214_l / 6 % 2 == 0) && (var5);
            int var7 = this.field_146215_m ? this.field_146209_f + 4 : this.field_146209_f;
            int var8 = this.field_146215_m ? this.field_146210_g + (this.field_146219_i - 8) / 2
                    : this.field_146210_g;
            int var9 = var7;

            if (var3 > var4.length()) {
                var3 = var4.length();
            }

            if (var4.length() > 0) {
                String var10 = var5 ? var4.substring(0, var2) : var4;
                String stars = "";

                for (int i = 0; i < var10.length(); i++) {
                    stars = stars.concat("*");
                }

                var9 = this.field_146211_a.drawString(stars, var7, var8, var1);
            }

            boolean var13 = (this.field_146224_r < this.field_146216_j.length())
                    || (this.field_146216_j.length() >= func_146208_g());
            int var11 = var9;

            if (!var5) {
                var11 = var2 > 0 ? var7 + this.field_146218_h : var7;
            } else if (var13) {
                var11 = var9 - 1;
                var9--;
            }

            if ((var4.length() > 0) && (var5) && (var2 < var4.length())) {
                String stars = "";

                for (int i = 0; i < var4.substring(var2).length(); i++) {
                    stars = stars.concat("*");
                }

                this.field_146211_a.drawString(stars, var9, var8, var1);
            }

            if (var6) {
                if (var13) {
                    Gui.drawRect(var11, var8 - 1, var11 + 1, var8 + 1 + this.field_146211_a.FONT_HEIGHT, -3092272);
                } else {
                    this.field_146211_a.drawString("_", var11, var8, var1);
                }
            }

            if (var3 != var2) {
                String stars = "";

                for (int i = 0; i < var4.substring(0, var3).length(); i++) {
                    stars = stars.concat("*");
                }

                int var12 = var7 + this.field_146211_a.getStringWidth(stars);
                func_146188_c(var11, var8 - 1, var12 - 1, var8 + 1 + this.field_146211_a.FONT_HEIGHT);
            }
        }
    }

    private void func_146188_c(int p_146188_1_, int p_146188_2_, int p_146188_3_, int p_146188_4_) {

        if (p_146188_1_ < p_146188_3_) {
            int var5 = p_146188_1_;
            p_146188_1_ = p_146188_3_;
            p_146188_3_ = var5;
        }

        if (p_146188_2_ < p_146188_4_) {
            int var5 = p_146188_2_;
            p_146188_2_ = p_146188_4_;
            p_146188_4_ = var5;
        }

        if (p_146188_3_ > this.field_146209_f + this.field_146218_h) {
            p_146188_3_ = this.field_146209_f + this.field_146218_h;
        }

        if (p_146188_1_ > this.field_146209_f + this.field_146218_h) {
            p_146188_1_ = this.field_146209_f + this.field_146218_h;
        }

        Tessellator tessellator = Tessellator.getInstance();
        VertexBuffer vertexbuffer = tessellator.getBuffer();
        GL11.glColor4f(50.0F, 50.0F, 150.0F, 255.0F);
        GL11.glDisable(GL11.GL_TEXTURE_2D);
        GL11.glEnable(GL11.GL_COLOR_LOGIC_OP);
        GL11.glLogicOp(GL11.GL_OR_REVERSE);
        vertexbuffer.begin(7, DefaultVertexFormats.POSITION_COLOR);
        vertexbuffer.pos(p_146188_1_, p_146188_4_, 0.0D);
        vertexbuffer.pos(p_146188_3_, p_146188_4_, 0.0D);
        vertexbuffer.pos(p_146188_3_, p_146188_2_, 0.0D);
        vertexbuffer.pos(p_146188_1_, p_146188_2_, 0.0D);
        tessellator.draw();
        GL11.glDisable(GL11.GL_COLOR_LOGIC_OP);
        GL11.glEnable(GL11.GL_TEXTURE_2D);
    }

    public void func_146203_f(int p_146203_1_) {

        this.field_146217_k = p_146203_1_;

        if (this.field_146216_j.length() > p_146203_1_) {
            this.field_146216_j = this.field_146216_j.substring(0, p_146203_1_);
        }
    }

    public int func_146208_g() {

        return this.field_146217_k;
    }

    public int func_146198_h() {

        return this.field_146224_r;
    }

    public boolean func_146181_i() {

        return this.field_146215_m;
    }

    public void func_146185_a(boolean p_146185_1_) {

        this.field_146215_m = p_146185_1_;
    }

    public void func_146193_g(int p_146193_1_) {

        this.field_146222_t = p_146193_1_;
    }

    public void func_146204_h(int p_146204_1_) {

        this.field_146221_u = p_146204_1_;
    }

    public boolean isFocused() {

        return this.field_146213_o;
    }

    public void setFocused(boolean p_146195_1_) {

        if ((p_146195_1_) && (!this.field_146213_o)) {
            this.field_146214_l = 0;
        }

        this.field_146213_o = p_146195_1_;
    }

    public void func_146184_c(boolean p_146184_1_) {

        this.field_146226_p = p_146184_1_;
    }

    public int func_146186_n() {

        return this.field_146223_s;
    }

    public int func_146200_o() {

        return func_146181_i() ? this.field_146218_h - 8 : this.field_146218_h;
    }

    public void func_146199_i(int p_146199_1_) {

        int var2 = this.field_146216_j.length();

        if (p_146199_1_ > var2) {
            p_146199_1_ = var2;
        }

        if (p_146199_1_ < 0) {
            p_146199_1_ = 0;
        }

        this.field_146223_s = p_146199_1_;

        if (this.field_146211_a != null) {
            if (this.field_146225_q > var2) {
                this.field_146225_q = var2;
            }

            int var3 = func_146200_o();
            String var4 = this.field_146211_a.trimStringToWidth(this.field_146216_j.substring(this.field_146225_q),
                    var3);
            int var5 = var4.length() + this.field_146225_q;

            if (p_146199_1_ == this.field_146225_q) {
                this.field_146225_q = (this.field_146225_q
                        - this.field_146211_a.trimStringToWidth(this.field_146216_j, var3, true).length());
            }

            if (p_146199_1_ > var5) {
                this.field_146225_q += p_146199_1_ - var5;
            } else if (p_146199_1_ <= this.field_146225_q) {
                this.field_146225_q -= this.field_146225_q - p_146199_1_;
            }

            if (this.field_146225_q < 0) {
                this.field_146225_q = 0;
            }

            if (this.field_146225_q > var2) {
                this.field_146225_q = var2;
            }
        }
    }

    public void func_146205_d(boolean p_146205_1_) {

        this.field_146212_n = p_146205_1_;
    }

    public boolean func_146176_q() {

        return this.field_146220_v;
    }

    public void func_146189_e(boolean p_146189_1_) {

        this.field_146220_v = p_146189_1_;
    }
}