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 }