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 }