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