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 GuiScreenAddServer extends GuiScreen 009 { 010 /** This GUI's parent GUI. */ 011 private GuiScreen parentGui; 012 private GuiTextField serverAddress; 013 private GuiTextField serverName; 014 015 /** ServerData to be modified by this GUI */ 016 private ServerData newServerData; 017 018 public GuiScreenAddServer(GuiScreen par1GuiScreen, ServerData par2ServerData) 019 { 020 this.parentGui = par1GuiScreen; 021 this.newServerData = par2ServerData; 022 } 023 024 /** 025 * Called from the main game loop to update the screen. 026 */ 027 public void updateScreen() 028 { 029 this.serverName.updateCursorCounter(); 030 this.serverAddress.updateCursorCounter(); 031 } 032 033 /** 034 * Adds the buttons (and other controls) to the screen in question. 035 */ 036 public void initGui() 037 { 038 StringTranslate var1 = StringTranslate.getInstance(); 039 Keyboard.enableRepeatEvents(true); 040 this.controlList.clear(); 041 this.controlList.add(new GuiButton(0, this.width / 2 - 100, this.height / 4 + 96 + 12, var1.translateKey("addServer.add"))); 042 this.controlList.add(new GuiButton(1, this.width / 2 - 100, this.height / 4 + 120 + 12, var1.translateKey("gui.cancel"))); 043 this.serverName = new GuiTextField(this.fontRenderer, this.width / 2 - 100, 76, 200, 20); 044 this.serverName.setFocused(true); 045 this.serverName.setText(this.newServerData.serverName); 046 this.serverAddress = new GuiTextField(this.fontRenderer, this.width / 2 - 100, 116, 200, 20); 047 this.serverAddress.setMaxStringLength(128); 048 this.serverAddress.setText(this.newServerData.serverIP); 049 ((GuiButton)this.controlList.get(0)).enabled = this.serverAddress.getText().length() > 0 && this.serverAddress.getText().split(":").length > 0 && this.serverName.getText().length() > 0; 050 } 051 052 /** 053 * Called when the screen is unloaded. Used to disable keyboard repeat events 054 */ 055 public void onGuiClosed() 056 { 057 Keyboard.enableRepeatEvents(false); 058 } 059 060 /** 061 * Fired when a control is clicked. This is the equivalent of ActionListener.actionPerformed(ActionEvent e). 062 */ 063 protected void actionPerformed(GuiButton par1GuiButton) 064 { 065 if (par1GuiButton.enabled) 066 { 067 if (par1GuiButton.id == 1) 068 { 069 this.parentGui.confirmClicked(false, 0); 070 } 071 else if (par1GuiButton.id == 0) 072 { 073 this.newServerData.serverName = this.serverName.getText(); 074 this.newServerData.serverIP = this.serverAddress.getText(); 075 this.parentGui.confirmClicked(true, 0); 076 } 077 } 078 } 079 080 /** 081 * Fired when a key is typed. This is the equivalent of KeyListener.keyTyped(KeyEvent e). 082 */ 083 protected void keyTyped(char par1, int par2) 084 { 085 this.serverName.textboxKeyTyped(par1, par2); 086 this.serverAddress.textboxKeyTyped(par1, par2); 087 088 if (par1 == 9) 089 { 090 if (this.serverName.isFocused()) 091 { 092 this.serverName.setFocused(false); 093 this.serverAddress.setFocused(true); 094 } 095 else 096 { 097 this.serverName.setFocused(true); 098 this.serverAddress.setFocused(false); 099 } 100 } 101 102 if (par1 == 13) 103 { 104 this.actionPerformed((GuiButton)this.controlList.get(0)); 105 } 106 107 ((GuiButton)this.controlList.get(0)).enabled = this.serverAddress.getText().length() > 0 && this.serverAddress.getText().split(":").length > 0 && this.serverName.getText().length() > 0; 108 109 if (((GuiButton)this.controlList.get(0)).enabled) 110 { 111 String var3 = this.serverAddress.getText().trim(); 112 String[] var4 = var3.split(":"); 113 114 if (var4.length > 2) 115 { 116 ((GuiButton)this.controlList.get(0)).enabled = false; 117 } 118 } 119 } 120 121 /** 122 * Called when the mouse is clicked. 123 */ 124 protected void mouseClicked(int par1, int par2, int par3) 125 { 126 super.mouseClicked(par1, par2, par3); 127 this.serverAddress.mouseClicked(par1, par2, par3); 128 this.serverName.mouseClicked(par1, par2, par3); 129 } 130 131 /** 132 * Draws the screen and all the components in it. 133 */ 134 public void drawScreen(int par1, int par2, float par3) 135 { 136 StringTranslate var4 = StringTranslate.getInstance(); 137 this.drawDefaultBackground(); 138 this.drawCenteredString(this.fontRenderer, var4.translateKey("addServer.title"), this.width / 2, this.height / 4 - 60 + 20, 16777215); 139 this.drawString(this.fontRenderer, var4.translateKey("addServer.enterName"), this.width / 2 - 100, 63, 10526880); 140 this.drawString(this.fontRenderer, var4.translateKey("addServer.enterIp"), this.width / 2 - 100, 104, 10526880); 141 this.serverName.drawTextBox(); 142 this.serverAddress.drawTextBox(); 143 super.drawScreen(par1, par2, par3); 144 } 145 }