From 655813fc07cbcb8af700cbcad886be80915e1db5 Mon Sep 17 00:00:00 2001 From: Daniel Date: Wed, 18 Oct 2023 00:25:17 +0300 Subject: [PATCH] Notifications hehehehehehehehehehe --- .../org/lumijiez/tracker/TrackerThread.java | 18 +++++++++++---- .../lumijiez/util/NotificationHandler.java | 23 +++++++++++++++++++ 2 files changed, 37 insertions(+), 4 deletions(-) create mode 100644 Lab3/src/main/java/org/lumijiez/util/NotificationHandler.java diff --git a/Lab3/src/main/java/org/lumijiez/tracker/TrackerThread.java b/Lab3/src/main/java/org/lumijiez/tracker/TrackerThread.java index 70ded34..c281f9a 100644 --- a/Lab3/src/main/java/org/lumijiez/tracker/TrackerThread.java +++ b/Lab3/src/main/java/org/lumijiez/tracker/TrackerThread.java @@ -6,6 +6,7 @@ import org.lumijiez.enums.DiffType; import org.lumijiez.util.FileDiffer; import org.lumijiez.enums.StateType; import org.lumijiez.util.FileFactory; +import org.lumijiez.util.NotificationHandler; import javax.swing.*; import java.awt.*; @@ -52,10 +53,7 @@ public class TrackerThread extends Thread { fileList.addListSelectionListener(e -> { if (!e.getValueIsAdjusting()) { - Document selectedDocument = fileList.getSelectedValue(); - if (selectedDocument != null) { - fileInfoTextPane.setText(selectedDocument.getInfo()); - } + refreshFileInfo(); } }); } @@ -64,6 +62,16 @@ public class TrackerThread extends Thread { fileStates.clear(); } + public void refreshFileInfo() { + Document selectedDocument = fileList.getSelectedValue(); + if (selectedDocument != null) { + fileInfoTextPane.setText(selectedDocument.getInfo()); + } else { + fileInfoTextPane.setText(""); + } + } + + public void checkDirectory() { Map> result = FileDiffer.diff(fileContents, FileDiffer.crawlDirectory(MainFrame.FOLDER_PATH)); @@ -81,6 +89,7 @@ public class TrackerThread extends Thread { if (somethingNew) { init(); + refreshFileInfo(); for (File file : fileStates.keySet()) { if (fileStates.get(file) != StateType.NONE) { if (fileStates.get(file) == StateType.NEW) { @@ -93,6 +102,7 @@ public class TrackerThread extends Thread { toShow.append(""); } toShow.append(file.getName()).append(" has been ").append(fileStates.get(file).getAction()).append("
"); + NotificationHandler.showNotification(file.getName(), fileStates.get(file)); } } textPane.setText(toShow.toString()); diff --git a/Lab3/src/main/java/org/lumijiez/util/NotificationHandler.java b/Lab3/src/main/java/org/lumijiez/util/NotificationHandler.java new file mode 100644 index 0000000..f0806e1 --- /dev/null +++ b/Lab3/src/main/java/org/lumijiez/util/NotificationHandler.java @@ -0,0 +1,23 @@ +package org.lumijiez.util; + +import org.lumijiez.enums.StateType; + +import java.awt.*; +import java.awt.TrayIcon.MessageType; + +public class NotificationHandler { + public static void showNotification(String filename, StateType stateType) { + try { + SystemTray tray = SystemTray.getSystemTray(); + Image image = Toolkit.getDefaultToolkit().createImage("some-icon.png"); + + TrayIcon trayIcon = new TrayIcon(image, "Java AWT Tray Demo"); + trayIcon.setImageAutoSize(true); + trayIcon.setToolTip("File Tracker"); + tray.add(trayIcon); + trayIcon.displayMessage("File Tracker", filename + " has been " + stateType.getAction(), MessageType.INFO); + } catch (Exception e) { + e.printStackTrace(); + } + } +}