Move creation of tray icon to ClientUI
Move creation of tray icon from RuneLite to ClientUI. Signed-off-by: Tomas Slusny <slusnucky@gmail.com>
This commit is contained in:
@@ -29,19 +29,9 @@ import com.google.inject.Guice;
|
|||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
import com.google.inject.Injector;
|
import com.google.inject.Injector;
|
||||||
import java.applet.Applet;
|
import java.applet.Applet;
|
||||||
import java.awt.AWTException;
|
|
||||||
import java.awt.Frame;
|
|
||||||
import java.awt.Image;
|
|
||||||
import java.awt.SystemTray;
|
|
||||||
import java.awt.TrayIcon;
|
|
||||||
import java.awt.event.MouseAdapter;
|
|
||||||
import java.awt.event.MouseEvent;
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
|
||||||
import java.net.URL;
|
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.concurrent.ScheduledExecutorService;
|
import java.util.concurrent.ScheduledExecutorService;
|
||||||
import javax.imageio.ImageIO;
|
|
||||||
import javax.inject.Singleton;
|
import javax.inject.Singleton;
|
||||||
import javax.swing.JFrame;
|
import javax.swing.JFrame;
|
||||||
import javax.swing.JPopupMenu;
|
import javax.swing.JPopupMenu;
|
||||||
@@ -70,13 +60,10 @@ public class RuneLite
|
|||||||
public static final File PROFILES_DIR = new File(RUNELITE_DIR, "profiles");
|
public static final File PROFILES_DIR = new File(RUNELITE_DIR, "profiles");
|
||||||
public static final File PLUGIN_DIR = new File(RUNELITE_DIR, "plugins");
|
public static final File PLUGIN_DIR = new File(RUNELITE_DIR, "plugins");
|
||||||
|
|
||||||
public static Image ICON;
|
|
||||||
|
|
||||||
private static Injector injector;
|
private static Injector injector;
|
||||||
|
|
||||||
private static OptionSet options;
|
private static OptionSet options;
|
||||||
private static RuneLite runelite;
|
private static RuneLite runelite;
|
||||||
private static TrayIcon trayIcon;
|
|
||||||
|
|
||||||
private ClientUI gui;
|
private ClientUI gui;
|
||||||
|
|
||||||
@@ -110,19 +97,6 @@ public class RuneLite
|
|||||||
Client client;
|
Client client;
|
||||||
Notifier notifier;
|
Notifier notifier;
|
||||||
|
|
||||||
static
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
final URL icon = ClientUI.class.getResource("/runelite.png");
|
|
||||||
ICON = ImageIO.read(icon.openStream());
|
|
||||||
}
|
|
||||||
catch (IOException ex)
|
|
||||||
{
|
|
||||||
log.warn(null, ex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void main(String[] args) throws Exception
|
public static void main(String[] args) throws Exception
|
||||||
{
|
{
|
||||||
// Force heavy-weight popups/tooltips.
|
// Force heavy-weight popups/tooltips.
|
||||||
@@ -184,7 +158,6 @@ public class RuneLite
|
|||||||
}
|
}
|
||||||
|
|
||||||
gui = new ClientUI(properties, client);
|
gui = new ClientUI(properties, client);
|
||||||
setupTrayIcon();
|
|
||||||
});
|
});
|
||||||
|
|
||||||
configManager.load();
|
configManager.load();
|
||||||
@@ -194,7 +167,7 @@ public class RuneLite
|
|||||||
eventBus.register(chatMessageManager);
|
eventBus.register(chatMessageManager);
|
||||||
|
|
||||||
// Setup the notifier
|
// Setup the notifier
|
||||||
notifier = new Notifier(properties.getTitle(), trayIcon);
|
notifier = new Notifier(properties.getTitle(), gui.getTrayIcon());
|
||||||
|
|
||||||
// Tell the plugin manager if client is outdated or not
|
// Tell the plugin manager if client is outdated or not
|
||||||
pluginManager.setOutdated(isOutdated);
|
pluginManager.setOutdated(isOutdated);
|
||||||
@@ -217,40 +190,6 @@ public class RuneLite
|
|||||||
pluginManager.watch();
|
pluginManager.watch();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setupTrayIcon()
|
|
||||||
{
|
|
||||||
if (!SystemTray.isSupported())
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
SystemTray systemTray = SystemTray.getSystemTray();
|
|
||||||
|
|
||||||
trayIcon = new TrayIcon(ICON, properties.getTitle());
|
|
||||||
trayIcon.setImageAutoSize(true);
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
systemTray.add(trayIcon);
|
|
||||||
}
|
|
||||||
catch (AWTException ex)
|
|
||||||
{
|
|
||||||
log.debug("Unable to add system tray icon", ex);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// bring to front when tray icon is clicked
|
|
||||||
trayIcon.addMouseListener(new MouseAdapter()
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public void mouseClicked(MouseEvent e)
|
|
||||||
{
|
|
||||||
gui.setVisible(true);
|
|
||||||
gui.setState(Frame.NORMAL); // unminimize
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public ClientUI getGui()
|
public ClientUI getGui()
|
||||||
{
|
{
|
||||||
return gui;
|
return gui;
|
||||||
@@ -280,10 +219,4 @@ public class RuneLite
|
|||||||
{
|
{
|
||||||
RuneLite.options = options;
|
RuneLite.options = options;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static TrayIcon getTrayIcon()
|
|
||||||
{
|
|
||||||
return trayIcon;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,11 +26,20 @@ package net.runelite.client.ui;
|
|||||||
|
|
||||||
import java.applet.Applet;
|
import java.applet.Applet;
|
||||||
import com.google.common.base.Strings;
|
import com.google.common.base.Strings;
|
||||||
|
import java.awt.AWTException;
|
||||||
import java.awt.BorderLayout;
|
import java.awt.BorderLayout;
|
||||||
import java.awt.Dimension;
|
import java.awt.Dimension;
|
||||||
|
import java.awt.Frame;
|
||||||
|
import java.awt.SystemTray;
|
||||||
|
import java.awt.TrayIcon;
|
||||||
|
import java.awt.event.MouseAdapter;
|
||||||
|
import java.awt.event.MouseEvent;
|
||||||
import java.awt.event.WindowAdapter;
|
import java.awt.event.WindowAdapter;
|
||||||
import java.awt.event.WindowEvent;
|
import java.awt.event.WindowEvent;
|
||||||
|
import java.awt.image.BufferedImage;
|
||||||
|
import java.io.IOException;
|
||||||
import java.util.Enumeration;
|
import java.util.Enumeration;
|
||||||
|
import javax.imageio.ImageIO;
|
||||||
import javax.swing.JFrame;
|
import javax.swing.JFrame;
|
||||||
import javax.swing.JOptionPane;
|
import javax.swing.JOptionPane;
|
||||||
import javax.swing.JPanel;
|
import javax.swing.JPanel;
|
||||||
@@ -39,6 +48,7 @@ import javax.swing.ScrollPaneConstants;
|
|||||||
import javax.swing.SwingUtilities;
|
import javax.swing.SwingUtilities;
|
||||||
import javax.swing.UIManager;
|
import javax.swing.UIManager;
|
||||||
import javax.swing.plaf.FontUIResource;
|
import javax.swing.plaf.FontUIResource;
|
||||||
|
import lombok.Getter;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import net.runelite.api.Client;
|
import net.runelite.api.Client;
|
||||||
import net.runelite.api.GameState;
|
import net.runelite.api.GameState;
|
||||||
@@ -53,6 +63,9 @@ public class ClientUI extends JFrame
|
|||||||
private static final int SCROLLBAR_WIDTH = 17;
|
private static final int SCROLLBAR_WIDTH = 17;
|
||||||
private static final int EXPANDED_WIDTH = CLIENT_WIDTH + PluginPanel.PANEL_WIDTH + SCROLLBAR_WIDTH;
|
private static final int EXPANDED_WIDTH = CLIENT_WIDTH + PluginPanel.PANEL_WIDTH + SCROLLBAR_WIDTH;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
private TrayIcon trayIcon;
|
||||||
|
|
||||||
private final Applet client;
|
private final Applet client;
|
||||||
private final RuneliteProperties properties;
|
private final RuneliteProperties properties;
|
||||||
private JPanel container;
|
private JPanel container;
|
||||||
@@ -60,18 +73,20 @@ public class ClientUI extends JFrame
|
|||||||
private ClientPanel panel;
|
private ClientPanel panel;
|
||||||
private PluginToolbar pluginToolbar;
|
private PluginToolbar pluginToolbar;
|
||||||
private PluginPanel pluginPanel;
|
private PluginPanel pluginPanel;
|
||||||
|
private BufferedImage icon;
|
||||||
|
|
||||||
public ClientUI(RuneliteProperties properties, Applet client)
|
public ClientUI(RuneliteProperties properties, Applet client)
|
||||||
{
|
{
|
||||||
this.properties = properties;
|
this.properties = properties;
|
||||||
this.client = client;
|
this.client = client;
|
||||||
setUIFont(new FontUIResource(FontManager.getRunescapeFont()));
|
setUIFont(new FontUIResource(FontManager.getRunescapeFont()));
|
||||||
|
setupTrayIcon();
|
||||||
init();
|
init();
|
||||||
pack();
|
pack();
|
||||||
TitleBarPane titleBarPane = new TitleBarPane(this.getRootPane(), (SubstanceRootPaneUI)this.getRootPane().getUI());
|
TitleBarPane titleBarPane = new TitleBarPane(this.getRootPane(), (SubstanceRootPaneUI)this.getRootPane().getUI());
|
||||||
titleBarPane.editTitleBar(this);
|
titleBarPane.editTitleBar(this);
|
||||||
setTitle(null);
|
setTitle(null);
|
||||||
setIconImage(RuneLite.ICON);
|
setIconImage(icon);
|
||||||
setLocationRelativeTo(getOwner());
|
setLocationRelativeTo(getOwner());
|
||||||
setResizable(true);
|
setResizable(true);
|
||||||
setVisible(true);
|
setVisible(true);
|
||||||
@@ -93,6 +108,49 @@ public class ClientUI extends JFrame
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void setupTrayIcon()
|
||||||
|
{
|
||||||
|
if (!SystemTray.isSupported())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
SystemTray systemTray = SystemTray.getSystemTray();
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
icon = ImageIO.read(ClientUI.class.getResourceAsStream("/runelite.png"));
|
||||||
|
}
|
||||||
|
catch (IOException e)
|
||||||
|
{
|
||||||
|
log.warn("Client icon failed to load", e);
|
||||||
|
}
|
||||||
|
|
||||||
|
trayIcon = new TrayIcon(icon, properties.getTitle());
|
||||||
|
trayIcon.setImageAutoSize(true);
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
systemTray.add(trayIcon);
|
||||||
|
}
|
||||||
|
catch (AWTException ex)
|
||||||
|
{
|
||||||
|
log.debug("Unable to add system tray icon", ex);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// bring to front when tray icon is clicked
|
||||||
|
trayIcon.addMouseListener(new MouseAdapter()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void mouseClicked(MouseEvent e)
|
||||||
|
{
|
||||||
|
setVisible(true);
|
||||||
|
setState(Frame.NORMAL); // unminimize
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setTitle(String extra)
|
public void setTitle(String extra)
|
||||||
|
|||||||
Reference in New Issue
Block a user