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