Advertisement
Guest User

Untitled

a guest
Aug 16th, 2015
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.65 KB | None | 0 0
  1. package me.codingmatt.modtray.util;
  2.  
  3. import java.awt.AWTException;
  4. import java.awt.Desktop;
  5. import java.awt.Image;
  6. import java.awt.Menu;
  7. import java.awt.MenuItem;
  8. import java.awt.PopupMenu;
  9. import java.awt.SystemTray;
  10. import java.awt.TrayIcon;
  11. import java.awt.event.ActionEvent;
  12. import java.awt.event.ActionListener;
  13. import java.net.MalformedURLException;
  14. import java.net.URL;
  15. import java.util.List;
  16.  
  17. import javax.swing.ImageIcon;
  18. import javax.swing.SwingUtilities;
  19. import javax.swing.UIManager;
  20.  
  21. import org.apache.logging.log4j.Level;
  22.  
  23. import cpw.mods.fml.common.ModContainer;
  24. import me.codingmatt.modtray.ModTray;
  25. import me.codingmatt.modtray.Reference;
  26. import me.codingmatt.modtray.configuration.ConfigurationHandler;
  27. import me.codingmatt.modtray.handler.CurseLinkActionHandler;
  28. import me.codingmatt.modtray.handler.LinkActionHandler;
  29. import me.codingmatt.modtray.object.CurseObject;
  30. import net.minecraft.client.Minecraft;
  31. import net.minecraft.server.MinecraftServer;
  32.  
  33. public class SystemTrayUtil {
  34. public List<ModContainer> modList;
  35. public static int i;
  36.  
  37. public SystemTrayUtil(List<ModContainer> list) {
  38. this.modList = list;
  39.  
  40. UIManager.put("swing.boldMetal", Boolean.FALSE);
  41.  
  42. SwingUtilities.invokeLater(new Runnable() {
  43. public void run() {
  44. initIcon();
  45. }
  46. });
  47.  
  48. }
  49.  
  50. private void initIcon() {
  51.  
  52. if (!SystemTray.isSupported()) {
  53. System.out.println("SystemTray is not supported");
  54. return;
  55. }
  56. final PopupMenu popup = new PopupMenu();
  57.  
  58. final TrayIcon trayIcon = new TrayIcon(createImage("/images/minecraft-icon.png", "tray icon"));
  59. final SystemTray tray = SystemTray.getSystemTray();
  60. trayIcon.setToolTip(Reference.NAME);
  61.  
  62. Menu mods = new Menu(modList.size() + " mods active");
  63. Menu[] modMenus = new Menu[modList.size()];
  64.  
  65. for (i = 0; i < modList.size(); i++) {
  66. ModContainer container = modList.get(i);
  67.  
  68. modMenus[i] = new Menu(container.getName());
  69.  
  70. MenuItem versionItem = new MenuItem("Version: " + container.getVersion());
  71. versionItem.setEnabled(false);
  72.  
  73. modMenus[i].add(versionItem);
  74.  
  75. if (container.getMetadata().authorList.size() == 1) {
  76. modMenus[i].add(new MenuItem("Author: " + container.getMetadata().authorList.get(0)));
  77. } else if (container.getMetadata().authorList.size() > 1) {
  78. Menu authorList = new Menu("Various Authors");
  79. for (int j = 0; j < container.getMetadata().authorList.size(); j++) {
  80. authorList.add(new MenuItem(container.getMetadata().authorList.get(j)));
  81. }
  82. modMenus[i].add(authorList);
  83. }
  84.  
  85. modMenus[i].addSeparator();
  86.  
  87. try {
  88. if (ConfigurationHandler.enableCurseLinkParsing & container.getMetadata().url.contains("curse.com")) {
  89.  
  90. String url = "";
  91.  
  92. if (container.getMetadata().url.contains("curse.com")) {
  93. StringBuilder builder = new StringBuilder();
  94. String[] string = container.getMetadata().url.split("curse.com/");
  95. for (int i = 1; i < string.length; i++) {
  96. builder.append(string[i]);
  97. }
  98. url = "http://widget.mcf.li/" + builder.toString() + ".json";
  99. }
  100.  
  101. CurseObject object = new CurseObject(url);
  102.  
  103. Menu modVersions = new Menu("Versions");
  104.  
  105. for (int i = 0; i < object.getModsByVersion().size(); i++) {
  106. Menu minecraftVersionMenu = new Menu(object.getModsByVersion().get(i).getMinecraftVersion());
  107.  
  108. for (int j = 0; j < object.getModsByVersion().get(i).getCompatableDownloads().size(); j++) {
  109. MenuItem downloadVersionItem = new MenuItem(
  110. object.getModsByVersion().get(i).getCompatableDownloads().get(j).getName());
  111. minecraftVersionMenu.add(downloadVersionItem);
  112. }
  113.  
  114. modVersions.add(minecraftVersionMenu);
  115. }
  116.  
  117. Menu curseMenu = new Menu("Curse");
  118. curseMenu.add(new MenuItem(object.getTitle()))
  119. .addActionListener(new CurseLinkActionHandler(object.getUrl()));
  120. curseMenu.add(new MenuItem("Project Page"))
  121. .addActionListener(new CurseLinkActionHandler(object.getProjectUrl()));
  122. curseMenu.addSeparator();
  123. curseMenu.add(new MenuItem(object.getCategory())).setEnabled(false);
  124. curseMenu.add(new MenuItem(object.getLikes() + " like(s)")).setEnabled(false);
  125. curseMenu.add(new MenuItem(object.getFavorites() + " favorite(s)")).setEnabled(false);
  126. curseMenu.addSeparator();
  127. curseMenu.add(modVersions);
  128. modMenus[i].add(curseMenu);
  129. } else {
  130. new URL(container.getMetadata().url);
  131.  
  132. MenuItem linkItem = new MenuItem("Mod Website");
  133. linkItem.addActionListener(new LinkActionHandler(container));
  134.  
  135. modMenus[i].add(linkItem);
  136. }
  137. } catch (MalformedURLException e) {
  138. }
  139.  
  140. mods.add(modMenus[i]);
  141.  
  142. }
  143.  
  144.  
  145. popup.add(new MenuItem("Mod Version: " + Reference.VERSION)).setEnabled(false);
  146. ;
  147. popup.addSeparator();
  148.  
  149. popup.add(mods);
  150. popup.addSeparator();
  151.  
  152. popup.add(new MenuItem("Quit Minecraft")).addActionListener(new ActionListener() {
  153.  
  154. @Override
  155. public void actionPerformed(ActionEvent e) {
  156. LogHelper.log(Level.INFO, "Shutting down Minecraft!");
  157. if (ModTray.isOnServer) {
  158. MinecraftServer.getServer().initiateShutdown();
  159. } else {
  160. Minecraft.getMinecraft().shutdown();
  161. }
  162. }
  163. });
  164.  
  165. trayIcon.setPopupMenu(popup);
  166.  
  167. try {
  168. tray.add(trayIcon);
  169. } catch (AWTException e) {
  170. System.out.println("TrayIcon could not be added.");
  171. return;
  172. }
  173.  
  174. }
  175.  
  176. protected static Image createImage(String path, String description) {
  177. URL imageURL = SystemTrayUtil.class.getResource(path);
  178.  
  179. if (imageURL == null) {
  180. System.err.println("Resource not found: " + path);
  181. return null;
  182. } else {
  183. return (new ImageIcon(imageURL, description)).getImage();
  184. }
  185. }
  186.  
  187. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement