    001    package net.minecraft.client.gui;
    002
    003    import cpw.mods.fml.common.Side;
    004    import cpw.mods.fml.common.asm.SideOnly;
    005    import net.minecraft.util.StringTranslate;
    006    import net.minecraft.world.storage.ISaveFormat;
    007    import net.minecraft.world.storage.WorldInfo;
    008    import org.lwjgl.input.Keyboard;
    009
    010    @SideOnly(Side.CLIENT)
    011    public class GuiRenameWorld extends GuiScreen
    012    {
    013        private GuiScreen parentGuiScreen;
    014        private GuiTextField theGuiTextField;
    015        private final String worldName;
    016
    017        public GuiRenameWorld(GuiScreen par1GuiScreen, String par2Str)
    018        {
    019            this.parentGuiScreen = par1GuiScreen;
    020            this.worldName = par2Str;
    021        }
    022
    023        /**
    024         * Called from the main game loop to update the screen.
    025         */
    026        public void updateScreen()
    027        {
    028            this.theGuiTextField.updateCursorCounter();
    029        }
    030
    031        /**
    032         * Adds the buttons (and other controls) to the screen in question.
    033         */
    034        public void initGui()
    035        {
    036            StringTranslate var1 = StringTranslate.getInstance();
    037            Keyboard.enableRepeatEvents(true);
    038            this.controlList.clear();
    039            this.controlList.add(new GuiButton(0, this.width / 2 - 100, this.height / 4 + 96 + 12, var1.translateKey("selectWorld.renameButton")));
    040            this.controlList.add(new GuiButton(1, this.width / 2 - 100, this.height / 4 + 120 + 12, var1.translateKey("gui.cancel")));
    041            ISaveFormat var2 = this.mc.getSaveLoader();
    042            WorldInfo var3 = var2.getWorldInfo(this.worldName);
    043            String var4 = var3.getWorldName();
    044            this.theGuiTextField = new GuiTextField(this.fontRenderer, this.width / 2 - 100, 60, 200, 20);
    045            this.theGuiTextField.setFocused(true);
    046            this.theGuiTextField.setText(var4);
    047        }
    048
    049        /**
    050         * Called when the screen is unloaded. Used to disable keyboard repeat events
    051         */
    052        public void onGuiClosed()
    053        {
    054            Keyboard.enableRepeatEvents(false);
    055        }
    056
    057        /**
    058         * Fired when a control is clicked. This is the equivalent of ActionListener.actionPerformed(ActionEvent e).
    059         */
    060        protected void actionPerformed(GuiButton par1GuiButton)
    061        {
    062            if (par1GuiButton.enabled)
    063            {
    064                if (par1GuiButton.id == 1)
    065                {
    066                    this.mc.displayGuiScreen(this.parentGuiScreen);
    067                }
    068                else if (par1GuiButton.id == 0)
    069                {
    070                    ISaveFormat var2 = this.mc.getSaveLoader();
    071                    var2.renameWorld(this.worldName, this.theGuiTextField.getText().trim());
    072                    this.mc.displayGuiScreen(this.parentGuiScreen);
    073                }
    074            }
    075        }
    076
    077        /**
    078         * Fired when a key is typed. This is the equivalent of KeyListener.keyTyped(KeyEvent e).
    079         */
    080        protected void keyTyped(char par1, int par2)
    081        {
    082            this.theGuiTextField.textboxKeyTyped(par1, par2);
    083            ((GuiButton)this.controlList.get(0)).enabled = this.theGuiTextField.getText().trim().length() > 0;
    084
    085            if (par1 == 13)
    086            {
    087                this.actionPerformed((GuiButton)this.controlList.get(0));
    088            }
    089        }
    090
    091        /**
    092         * Called when the mouse is clicked.
    093         */
    094        protected void mouseClicked(int par1, int par2, int par3)
    095        {
    096            super.mouseClicked(par1, par2, par3);
    097            this.theGuiTextField.mouseClicked(par1, par2, par3);
    098        }
    099
    100        /**
    101         * Draws the screen and all the components in it.
    102         */
    103        public void drawScreen(int par1, int par2, float par3)
    104        {
    105            StringTranslate var4 = StringTranslate.getInstance();
    106            this.drawDefaultBackground();
    107            this.drawCenteredString(this.fontRenderer, var4.translateKey("selectWorld.renameTitle"), this.width / 2, this.height / 4 - 60 + 20, 16777215);
    108            this.drawString(this.fontRenderer, var4.translateKey("selectWorld.enterName"), this.width / 2 - 100, 47, 10526880);
    109            this.theGuiTextField.drawTextBox();
    110            super.drawScreen(par1, par2, par3);
    111        }
    112    }