001 package net.minecraft.src; 002 003 import cpw.mods.fml.common.Side; 004 import cpw.mods.fml.common.asm.SideOnly; 005 import java.io.File; 006 import java.io.IOException; 007 import java.net.URI; 008 import net.minecraft.client.Minecraft; 009 import org.lwjgl.Sys; 010 011 @SideOnly(Side.CLIENT) 012 public class GuiTexturePacks extends GuiScreen 013 { 014 protected GuiScreen guiScreen; 015 private int refreshTimer = -1; 016 017 /** the absolute location of this texture pack */ 018 private String fileLocation = ""; 019 020 /** 021 * the GuiTexturePackSlot that contains all the texture packs and their descriptions 022 */ 023 private GuiTexturePackSlot guiTexturePackSlot; 024 025 public GuiTexturePacks(GuiScreen par1GuiScreen) 026 { 027 this.guiScreen = par1GuiScreen; 028 } 029 030 /** 031 * Adds the buttons (and other controls) to the screen in question. 032 */ 033 public void initGui() 034 { 035 StringTranslate var1 = StringTranslate.getInstance(); 036 this.controlList.add(new GuiSmallButton(5, this.width / 2 - 154, this.height - 48, var1.translateKey("texturePack.openFolder"))); 037 this.controlList.add(new GuiSmallButton(6, this.width / 2 + 4, this.height - 48, var1.translateKey("gui.done"))); 038 this.mc.texturePackList.updateAvaliableTexturePacks(); 039 this.fileLocation = (new File(Minecraft.getMinecraftDir(), "texturepacks")).getAbsolutePath(); 040 this.guiTexturePackSlot = new GuiTexturePackSlot(this); 041 this.guiTexturePackSlot.registerScrollButtons(this.controlList, 7, 8); 042 } 043 044 /** 045 * Fired when a control is clicked. This is the equivalent of ActionListener.actionPerformed(ActionEvent e). 046 */ 047 protected void actionPerformed(GuiButton par1GuiButton) 048 { 049 if (par1GuiButton.enabled) 050 { 051 if (par1GuiButton.id == 5) 052 { 053 if (Minecraft.getOs() == EnumOS.MACOS) 054 { 055 try 056 { 057 System.out.println(this.fileLocation); 058 Runtime.getRuntime().exec(new String[] {"/usr/bin/open", this.fileLocation}); 059 return; 060 } 061 catch (IOException var7) 062 { 063 var7.printStackTrace(); 064 } 065 } 066 else if (Minecraft.getOs() == EnumOS.WINDOWS) 067 { 068 String var2 = String.format("cmd.exe /C start \"Open file\" \"%s\"", new Object[] {this.fileLocation}); 069 070 try 071 { 072 Runtime.getRuntime().exec(var2); 073 return; 074 } 075 catch (IOException var6) 076 { 077 var6.printStackTrace(); 078 } 079 } 080 081 boolean var8 = false; 082 083 try 084 { 085 Class var3 = Class.forName("java.awt.Desktop"); 086 Object var4 = var3.getMethod("getDesktop", new Class[0]).invoke((Object)null, new Object[0]); 087 var3.getMethod("browse", new Class[] {URI.class}).invoke(var4, new Object[] {(new File(Minecraft.getMinecraftDir(), "texturepacks")).toURI()}); 088 } 089 catch (Throwable var5) 090 { 091 var5.printStackTrace(); 092 var8 = true; 093 } 094 095 if (var8) 096 { 097 System.out.println("Opening via system class!"); 098 Sys.openURL("file://" + this.fileLocation); 099 } 100 } 101 else if (par1GuiButton.id == 6) 102 { 103 this.mc.renderEngine.refreshTextures(); 104 this.mc.displayGuiScreen(this.guiScreen); 105 } 106 else 107 { 108 this.guiTexturePackSlot.actionPerformed(par1GuiButton); 109 } 110 } 111 } 112 113 /** 114 * Called when the mouse is clicked. 115 */ 116 protected void mouseClicked(int par1, int par2, int par3) 117 { 118 super.mouseClicked(par1, par2, par3); 119 } 120 121 /** 122 * Called when the mouse is moved or a mouse button is released. Signature: (mouseX, mouseY, which) which==-1 is 123 * mouseMove, which==0 or which==1 is mouseUp 124 */ 125 protected void mouseMovedOrUp(int par1, int par2, int par3) 126 { 127 super.mouseMovedOrUp(par1, par2, par3); 128 } 129 130 /** 131 * Draws the screen and all the components in it. 132 */ 133 public void drawScreen(int par1, int par2, float par3) 134 { 135 this.guiTexturePackSlot.drawScreen(par1, par2, par3); 136 137 if (this.refreshTimer <= 0) 138 { 139 this.mc.texturePackList.updateAvaliableTexturePacks(); 140 this.refreshTimer += 20; 141 } 142 143 StringTranslate var4 = StringTranslate.getInstance(); 144 this.drawCenteredString(this.fontRenderer, var4.translateKey("texturePack.title"), this.width / 2, 16, 16777215); 145 this.drawCenteredString(this.fontRenderer, var4.translateKey("texturePack.folderInfo"), this.width / 2 - 77, this.height - 26, 8421504); 146 super.drawScreen(par1, par2, par3); 147 } 148 149 /** 150 * Called from the main game loop to update the screen. 151 */ 152 public void updateScreen() 153 { 154 super.updateScreen(); 155 --this.refreshTimer; 156 } 157 158 static Minecraft func_73950_a(GuiTexturePacks par0GuiTexturePacks) 159 { 160 return par0GuiTexturePacks.mc; 161 } 162 163 static Minecraft func_73955_b(GuiTexturePacks par0GuiTexturePacks) 164 { 165 return par0GuiTexturePacks.mc; 166 } 167 168 static Minecraft func_73958_c(GuiTexturePacks par0GuiTexturePacks) 169 { 170 return par0GuiTexturePacks.mc; 171 } 172 173 static Minecraft func_73951_d(GuiTexturePacks par0GuiTexturePacks) 174 { 175 return par0GuiTexturePacks.mc; 176 } 177 178 static Minecraft func_73952_e(GuiTexturePacks par0GuiTexturePacks) 179 { 180 return par0GuiTexturePacks.mc; 181 } 182 183 static Minecraft func_73962_f(GuiTexturePacks par0GuiTexturePacks) 184 { 185 return par0GuiTexturePacks.mc; 186 } 187 188 static Minecraft func_73959_g(GuiTexturePacks par0GuiTexturePacks) 189 { 190 return par0GuiTexturePacks.mc; 191 } 192 193 static Minecraft func_73957_h(GuiTexturePacks par0GuiTexturePacks) 194 { 195 return par0GuiTexturePacks.mc; 196 } 197 198 static Minecraft func_73956_i(GuiTexturePacks par0GuiTexturePacks) 199 { 200 return par0GuiTexturePacks.mc; 201 } 202 203 static Minecraft func_73953_j(GuiTexturePacks par0GuiTexturePacks) 204 { 205 return par0GuiTexturePacks.mc; 206 } 207 208 static Minecraft func_73961_k(GuiTexturePacks par0GuiTexturePacks) 209 { 210 return par0GuiTexturePacks.mc; 211 } 212 213 static FontRenderer func_73960_l(GuiTexturePacks par0GuiTexturePacks) 214 { 215 return par0GuiTexturePacks.fontRenderer; 216 } 217 218 static FontRenderer func_73963_m(GuiTexturePacks par0GuiTexturePacks) 219 { 220 return par0GuiTexturePacks.fontRenderer; 221 } 222 223 static FontRenderer func_73954_n(GuiTexturePacks par0GuiTexturePacks) 224 { 225 return par0GuiTexturePacks.fontRenderer; 226 } 227 }