001    package net.minecraft.client.gui;
002    
003    import cpw.mods.fml.relauncher.Side;
004    import cpw.mods.fml.relauncher.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    }