Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package me.codingmatt.modtray.util;
- import java.awt.AWTException;
- import java.awt.Desktop;
- import java.awt.Image;
- import java.awt.Menu;
- import java.awt.MenuItem;
- import java.awt.PopupMenu;
- import java.awt.SystemTray;
- import java.awt.TrayIcon;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.net.MalformedURLException;
- import java.net.URL;
- import java.util.List;
- import javax.swing.ImageIcon;
- import javax.swing.SwingUtilities;
- import javax.swing.UIManager;
- import org.apache.logging.log4j.Level;
- import cpw.mods.fml.common.ModContainer;
- import me.codingmatt.modtray.ModTray;
- import me.codingmatt.modtray.Reference;
- import me.codingmatt.modtray.configuration.ConfigurationHandler;
- import me.codingmatt.modtray.handler.CurseLinkActionHandler;
- import me.codingmatt.modtray.handler.LinkActionHandler;
- import me.codingmatt.modtray.object.CurseObject;
- import net.minecraft.client.Minecraft;
- import net.minecraft.server.MinecraftServer;
- public class SystemTrayUtil {
- public List<ModContainer> modList;
- public static int i;
- public SystemTrayUtil(List<ModContainer> list) {
- this.modList = list;
- UIManager.put("swing.boldMetal", Boolean.FALSE);
- SwingUtilities.invokeLater(new Runnable() {
- public void run() {
- initIcon();
- }
- });
- }
- private void initIcon() {
- if (!SystemTray.isSupported()) {
- System.out.println("SystemTray is not supported");
- return;
- }
- final PopupMenu popup = new PopupMenu();
- final TrayIcon trayIcon = new TrayIcon(createImage("/images/minecraft-icon.png", "tray icon"));
- final SystemTray tray = SystemTray.getSystemTray();
- trayIcon.setToolTip(Reference.NAME);
- Menu mods = new Menu(modList.size() + " mods active");
- Menu[] modMenus = new Menu[modList.size()];
- for (i = 0; i < modList.size(); i++) {
- ModContainer container = modList.get(i);
- modMenus[i] = new Menu(container.getName());
- MenuItem versionItem = new MenuItem("Version: " + container.getVersion());
- versionItem.setEnabled(false);
- modMenus[i].add(versionItem);
- if (container.getMetadata().authorList.size() == 1) {
- modMenus[i].add(new MenuItem("Author: " + container.getMetadata().authorList.get(0)));
- } else if (container.getMetadata().authorList.size() > 1) {
- Menu authorList = new Menu("Various Authors");
- for (int j = 0; j < container.getMetadata().authorList.size(); j++) {
- authorList.add(new MenuItem(container.getMetadata().authorList.get(j)));
- }
- modMenus[i].add(authorList);
- }
- modMenus[i].addSeparator();
- try {
- if (ConfigurationHandler.enableCurseLinkParsing & container.getMetadata().url.contains("curse.com")) {
- String url = "";
- if (container.getMetadata().url.contains("curse.com")) {
- StringBuilder builder = new StringBuilder();
- String[] string = container.getMetadata().url.split("curse.com/");
- for (int i = 1; i < string.length; i++) {
- builder.append(string[i]);
- }
- url = "http://widget.mcf.li/" + builder.toString() + ".json";
- }
- CurseObject object = new CurseObject(url);
- Menu modVersions = new Menu("Versions");
- for (int i = 0; i < object.getModsByVersion().size(); i++) {
- Menu minecraftVersionMenu = new Menu(object.getModsByVersion().get(i).getMinecraftVersion());
- for (int j = 0; j < object.getModsByVersion().get(i).getCompatableDownloads().size(); j++) {
- MenuItem downloadVersionItem = new MenuItem(
- object.getModsByVersion().get(i).getCompatableDownloads().get(j).getName());
- minecraftVersionMenu.add(downloadVersionItem);
- }
- modVersions.add(minecraftVersionMenu);
- }
- Menu curseMenu = new Menu("Curse");
- curseMenu.add(new MenuItem(object.getTitle()))
- .addActionListener(new CurseLinkActionHandler(object.getUrl()));
- curseMenu.add(new MenuItem("Project Page"))
- .addActionListener(new CurseLinkActionHandler(object.getProjectUrl()));
- curseMenu.addSeparator();
- curseMenu.add(new MenuItem(object.getCategory())).setEnabled(false);
- curseMenu.add(new MenuItem(object.getLikes() + " like(s)")).setEnabled(false);
- curseMenu.add(new MenuItem(object.getFavorites() + " favorite(s)")).setEnabled(false);
- curseMenu.addSeparator();
- curseMenu.add(modVersions);
- modMenus[i].add(curseMenu);
- } else {
- new URL(container.getMetadata().url);
- MenuItem linkItem = new MenuItem("Mod Website");
- linkItem.addActionListener(new LinkActionHandler(container));
- modMenus[i].add(linkItem);
- }
- } catch (MalformedURLException e) {
- }
- mods.add(modMenus[i]);
- }
- popup.add(new MenuItem("Mod Version: " + Reference.VERSION)).setEnabled(false);
- ;
- popup.addSeparator();
- popup.add(mods);
- popup.addSeparator();
- popup.add(new MenuItem("Quit Minecraft")).addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- LogHelper.log(Level.INFO, "Shutting down Minecraft!");
- if (ModTray.isOnServer) {
- MinecraftServer.getServer().initiateShutdown();
- } else {
- Minecraft.getMinecraft().shutdown();
- }
- }
- });
- trayIcon.setPopupMenu(popup);
- try {
- tray.add(trayIcon);
- } catch (AWTException e) {
- System.out.println("TrayIcon could not be added.");
- return;
- }
- }
- protected static Image createImage(String path, String description) {
- URL imageURL = SystemTrayUtil.class.getResource(path);
- if (imageURL == null) {
- System.err.println("Resource not found: " + path);
- return null;
- } else {
- return (new ImageIcon(imageURL, description)).getImage();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement