Moved system tray logic to StatusTrayIcon class
This commit is contained in:
parent
652ca8d28b
commit
8c9cddfa53
@ -1,17 +1,11 @@
|
||||
package envoy.client.ui;
|
||||
|
||||
import java.awt.AWTException;
|
||||
import java.awt.Color;
|
||||
import java.awt.ComponentOrientation;
|
||||
import java.awt.Font;
|
||||
import java.awt.GridBagConstraints;
|
||||
import java.awt.GridBagLayout;
|
||||
import java.awt.Image;
|
||||
import java.awt.Insets;
|
||||
import java.awt.SystemTray;
|
||||
import java.awt.Toolkit;
|
||||
import java.awt.TrayIcon;
|
||||
import java.awt.TrayIcon.MessageType;
|
||||
import java.awt.event.KeyAdapter;
|
||||
import java.awt.event.KeyEvent;
|
||||
import java.awt.event.WindowAdapter;
|
||||
@ -128,8 +122,8 @@ public class ChatWindow extends JFrame {
|
||||
|
||||
@Override
|
||||
public void keyReleased(KeyEvent e) {
|
||||
if (e.getKeyCode() == KeyEvent.VK_ENTER && ((SettingsScreen.enterToSend && e.getModifiersEx() == 0)
|
||||
|| (e.getModifiersEx() == KeyEvent.CTRL_DOWN_MASK))) {
|
||||
if (e.getKeyCode() == KeyEvent.VK_ENTER
|
||||
&& ((SettingsScreen.enterToSend && e.getModifiersEx() == 0) || (e.getModifiersEx() == KeyEvent.CTRL_DOWN_MASK))) {
|
||||
|
||||
postMessage(messageList);
|
||||
}
|
||||
@ -220,11 +214,7 @@ public class ChatWindow extends JFrame {
|
||||
final User user = selectedUserList.getSelectedValue();
|
||||
client.setRecipient(user);
|
||||
|
||||
currentChat = localDB.getChats()
|
||||
.stream()
|
||||
.filter(chat -> chat.getRecipient().getID() == user.getID())
|
||||
.findFirst()
|
||||
.get();
|
||||
currentChat = localDB.getChats().stream().filter(chat -> chat.getRecipient().getID() == user.getID()).findFirst().get();
|
||||
|
||||
// Set all unread messages in the chat to read
|
||||
readCurrentChat();
|
||||
@ -263,10 +253,7 @@ public class ChatWindow extends JFrame {
|
||||
|
||||
private void postMessage(JList<Message> messageList) {
|
||||
if (!client.hasRecipient()) {
|
||||
JOptionPane.showMessageDialog(this,
|
||||
"Please select a recipient!",
|
||||
"Cannot send message",
|
||||
JOptionPane.INFORMATION_MESSAGE);
|
||||
JOptionPane.showMessageDialog(this, "Please select a recipient!", "Cannot send message", JOptionPane.INFORMATION_MESSAGE);
|
||||
}
|
||||
|
||||
if (!messageEnterTextArea.getText().isEmpty()) try {
|
||||
@ -322,8 +309,7 @@ public class ChatWindow extends JFrame {
|
||||
new Thread(() -> {
|
||||
|
||||
// Synchronize
|
||||
localDB.applySync(
|
||||
client.sendSync(client.getSender().getID(), localDB.fillSync(client.getSender().getID())));
|
||||
localDB.applySync(client.sendSync(client.getSender().getID(), localDB.fillSync(client.getSender().getID())));
|
||||
|
||||
// Process unread messages
|
||||
localDB.addUnreadMessagesToLocalDB();
|
||||
@ -333,8 +319,7 @@ public class ChatWindow extends JFrame {
|
||||
readCurrentChat();
|
||||
|
||||
// Update UI
|
||||
SwingUtilities
|
||||
.invokeLater(() -> { updateUserStates(); contentPane.revalidate(); contentPane.repaint(); });
|
||||
SwingUtilities.invokeLater(() -> { updateUserStates(); contentPane.revalidate(); contentPane.repaint(); });
|
||||
}).start();
|
||||
}).start();
|
||||
}
|
||||
@ -350,14 +335,4 @@ public class ChatWindow extends JFrame {
|
||||
* Marks messages in the current chat as {@code READ}.
|
||||
*/
|
||||
private void readCurrentChat() { if (currentChat != null) { localDB.setMessagesToRead(currentChat); } }
|
||||
|
||||
private void displayNotification(String message) throws AWTException {
|
||||
SystemTray tray = SystemTray.getSystemTray();
|
||||
Image image = Toolkit.getDefaultToolkit().createImage(getClass().getResource("Envoy Logo.png"));
|
||||
TrayIcon trayIcon = new TrayIcon(image, "Envoy Client");
|
||||
trayIcon.setImageAutoSize(true);
|
||||
trayIcon.setToolTip("You are notified if you have unread messages.");
|
||||
tray.add(trayIcon);
|
||||
trayIcon.displayMessage("Envoy Client", message, MessageType.INFO);
|
||||
}
|
||||
}
|
||||
|
39
src/main/java/envoy/client/ui/StatusTrayIcon.java
Normal file
39
src/main/java/envoy/client/ui/StatusTrayIcon.java
Normal file
@ -0,0 +1,39 @@
|
||||
package envoy.client.ui;
|
||||
|
||||
import java.awt.AWTException;
|
||||
import java.awt.Image;
|
||||
import java.awt.SystemTray;
|
||||
import java.awt.Toolkit;
|
||||
import java.awt.TrayIcon;
|
||||
|
||||
import envoy.exception.EnvoyException;
|
||||
|
||||
/**
|
||||
* Project: <strong>envoy-client</strong><br>
|
||||
* File: <strong>StatusTrayIcon.java</strong><br>
|
||||
* Created: <strong>3 Dec 2019</strong><br>
|
||||
*
|
||||
* @author Kai S. K. Engelbart
|
||||
* @since Envoy v0.2-alpha
|
||||
*/
|
||||
public class StatusTrayIcon {
|
||||
|
||||
private TrayIcon trayIcon;
|
||||
|
||||
public StatusTrayIcon() throws EnvoyException {
|
||||
if (!SystemTray.isSupported()) throw new EnvoyException("The Envoy tray icon is not supported.");
|
||||
|
||||
Image img = Toolkit.getDefaultToolkit().createImage(getClass().getResource("envoy_logo.png"));
|
||||
TrayIcon trayIcon = new TrayIcon(img, "Envoy Client");
|
||||
trayIcon.setImageAutoSize(true);
|
||||
trayIcon.setToolTip("You are notified if you have unread messages.");
|
||||
try {
|
||||
SystemTray.getSystemTray().add(trayIcon);
|
||||
} catch (AWTException e) {
|
||||
throw new EnvoyException("Could not attach Envoy tray icon to system tray.", e);
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: Add event listener
|
||||
// trayIcon.displayMessage("Envoy Client", message, MessageType.INFO);
|
||||
}
|
Before Width: | Height: | Size: 8.0 KiB After Width: | Height: | Size: 8.0 KiB |
Reference in New Issue
Block a user