From 8b5ca8a0365c4b6a18054a021cee94e0357e5961 Mon Sep 17 00:00:00 2001 From: vyaasBaskar Date: Mon, 23 Dec 2024 19:40:59 -0800 Subject: [PATCH] Fixed error popups --- .../com/funkylogclient/FunkyLogSorter.java | 30 ++------------ .../java/com/funkylogclient/FunkyLogs.java | 38 ++++++++++++++++++ src/main/java/com/funkylogclient/Message.java | 15 ++++--- .../funkylogclient/SidebarOtherSettings.java | 36 ++++++++--------- .../com/funkylogclient/FunkyLogSorter.class | Bin 9661 -> 8431 bytes .../com/funkylogclient/FunkyLogs$1.class | Bin 1321 -> 3859 bytes .../com/funkylogclient/FunkyLogs.class | Bin 10495 -> 10539 bytes .../classes/com/funkylogclient/Message.class | Bin 5910 -> 5958 bytes .../funkylogclient/SidebarOtherSettings.class | Bin 4284 -> 3523 bytes 9 files changed, 68 insertions(+), 51 deletions(-) diff --git a/src/main/java/com/funkylogclient/FunkyLogSorter.java b/src/main/java/com/funkylogclient/FunkyLogSorter.java index bfb2230..012e6bb 100644 --- a/src/main/java/com/funkylogclient/FunkyLogSorter.java +++ b/src/main/java/com/funkylogclient/FunkyLogSorter.java @@ -10,12 +10,8 @@ import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; -import javafx.animation.PauseTransition; -import javafx.scene.control.Alert; -import javafx.scene.control.Alert.AlertType; import javafx.stage.FileChooser; import javafx.stage.Stage; -import javafx.util.Duration; public class FunkyLogSorter { private static int MAX_LEN = 1200; @@ -24,13 +20,13 @@ public class FunkyLogSorter { private static boolean allowWarnings = true; private static boolean allowLogs = true; + public static LinkedList errors = new LinkedList<>(); + private static String searchTerm = ""; public static LinkedList messages = new LinkedList<>(); public static LinkedList filtered = new LinkedList<>(); - public static int num_open_alerts = 0; - public static String log_file_directory = System.getProperty("user.dir") + "/logs846"; public static FileWriter log_file; @@ -105,27 +101,7 @@ public static void addMessage(Message m) { } if (m.isError()) { - if (num_open_alerts < 5) { - Alert alert = new Alert(AlertType.ERROR); - alert.setTitle("FunkyLogs Error Notification"); - alert.setHeaderText(m.getSender()); - alert.setContentText(m.getContent()); - - alert.setX(alert.getX() + (num_open_alerts * 70)); - alert.setY(alert.getY() + (num_open_alerts * 70)); - - alert.show(); - - PauseTransition delay = new PauseTransition(Duration.seconds(5)); - - delay.setOnFinished(event -> { - alert.close(); - FunkyLogSorter.num_open_alerts--; - }); - - delay.play(); - - } + errors.add(m); } if (!checkMessageBySearch(m)) { diff --git a/src/main/java/com/funkylogclient/FunkyLogs.java b/src/main/java/com/funkylogclient/FunkyLogs.java index 5cf62c1..0d5467c 100644 --- a/src/main/java/com/funkylogclient/FunkyLogs.java +++ b/src/main/java/com/funkylogclient/FunkyLogs.java @@ -1,12 +1,16 @@ package com.funkylogclient; +import java.util.Iterator; import java.util.LinkedList; +import javafx.animation.PauseTransition; import javafx.application.Application; import javafx.application.Platform; import javafx.concurrent.Task; import javafx.geometry.*; import javafx.scene.Scene; +import javafx.scene.control.Alert; +import javafx.scene.control.Alert.AlertType; import javafx.scene.control.ScrollPane; import javafx.scene.control.TextField; import javafx.scene.layout.BorderPane; @@ -15,6 +19,7 @@ import javafx.scene.paint.Color; import javafx.stage.Stage; import javafx.stage.StageStyle; +import javafx.util.Duration; import javafx.scene.Cursor; import javafx.scene.text.*; @@ -34,6 +39,8 @@ public class FunkyLogs extends Application { private static String serverIP = UDPClient.serverIP; private static int port = UDPClient.port; + private static int num_open_alerts = 0; + @Override public void start(Stage primaryStage) { FunkyLogSorter.makeNewLogFile(); @@ -118,6 +125,37 @@ protected Void call() throws Exception { Thread.sleep(200); try { FunkyLogs.updateMessageZone(primaryStage); + + Platform.runLater(() -> { + Iterator iterator = FunkyLogSorter.errors.iterator(); + while (iterator.hasNext()) { + Message x = iterator.next(); + if (num_open_alerts < 5) { + Alert alert = new Alert(AlertType.ERROR); + alert.setTitle("FunkyLogs Error Notification"); + alert.setHeaderText(x.getSender()); + alert.setContentText(x.getContent()); + + alert.setX(alert.getX() + (num_open_alerts * 70)); + alert.setY(alert.getY() + (num_open_alerts * 70)); + + alert.show(); + + num_open_alerts += 1; + + PauseTransition delay = new PauseTransition(Duration.seconds(5)); + + delay.setOnFinished(event -> { + num_open_alerts--; + alert.close(); + }); + + delay.play(); + + iterator.remove(); + } + } + }); } catch (Exception exc) { System.out.println(exc); } diff --git a/src/main/java/com/funkylogclient/Message.java b/src/main/java/com/funkylogclient/Message.java index 0780f00..240600d 100644 --- a/src/main/java/com/funkylogclient/Message.java +++ b/src/main/java/com/funkylogclient/Message.java @@ -136,19 +136,22 @@ public Node getComponent() { HBox topBox = new HBox(); topBox.setPadding(new Insets(0, 0, 5, 0)); - topBox.setSpacing(400); + topBox.setSpacing(20); Text top = new Text( - new BigDecimal(this.time).setScale(1, RoundingMode.HALF_UP).toString() + " [" + sender + "]"); - top.setStyle(Styles.TEXT_STYLE + Styles.TEXT_SMALL); + "SYS " + new BigDecimal(this.time).setScale(1, RoundingMode.HALF_UP).toString()); + top.setStyle(Styles.TEXT_STYLE + Styles.TEXT_SMALLER); - Text topRight = new Text(getPeriodName() + " " + new BigDecimal(this.period_timestamp) + Text topMid = new Text(getPeriodName() + " " + new BigDecimal(this.period_timestamp) .setScale(0, RoundingMode.HALF_UP).toString()); - topRight.setStyle(Styles.TEXT_STYLE + Styles.TEXT_SMALLER); + topMid.setStyle(Styles.TEXT_STYLE + Styles.TEXT_SMALLER); + + Text topRight = new Text(sender); + topRight.setStyle(Styles.TEXT_STYLE + Styles.TEXT_SMALL); HBox.setHgrow(topRight, Priority.ALWAYS); topRight.setTextAlignment(TextAlignment.RIGHT); - topBox.getChildren().addAll(top, topRight); + topBox.getChildren().addAll(top, topMid, topRight); HBox body = new HBox(); body.setPadding(new Insets(5, 5, 5, 30)); diff --git a/src/main/java/com/funkylogclient/SidebarOtherSettings.java b/src/main/java/com/funkylogclient/SidebarOtherSettings.java index 718f7b4..d969e60 100644 --- a/src/main/java/com/funkylogclient/SidebarOtherSettings.java +++ b/src/main/java/com/funkylogclient/SidebarOtherSettings.java @@ -55,27 +55,27 @@ public static VBox getSidebarOtherSettings(ChangeListener autoScrollCha }); otherSettingsBox.getChildren().add(fileSelectionDialog); - Region testLogButtonspacing = new Region(); - testLogButtonspacing.setMinHeight(20); - otherSettingsBox.getChildren().add(testLogButtonspacing); + // Region testLogButtonspacing = new Region(); + // testLogButtonspacing.setMinHeight(20); + // otherSettingsBox.getChildren().add(testLogButtonspacing); - Button testLogButton = new Button("Test Log"); - testLogButton.setOnAction((ev) -> { - FunkyLogSorter.createTestLog(primaryStage); - }); - otherSettingsBox.getChildren().add(testLogButton); + // Button testLogButton = new Button("Test Log"); + // testLogButton.setOnAction((ev) -> { + // FunkyLogSorter.createTestLog(primaryStage); + // }); + // otherSettingsBox.getChildren().add(testLogButton); - Button testWarningButton = new Button("Test Warning"); - testWarningButton.setOnAction((ev) -> { - FunkyLogSorter.createTestWarning(primaryStage); - }); - otherSettingsBox.getChildren().add(testWarningButton); + // Button testWarningButton = new Button("Test Warning"); + // testWarningButton.setOnAction((ev) -> { + // FunkyLogSorter.createTestWarning(primaryStage); + // }); + // otherSettingsBox.getChildren().add(testWarningButton); - Button testErrorButton = new Button("Test Error"); - testErrorButton.setOnAction((ev) -> { - FunkyLogSorter.createTestError(primaryStage); - }); - otherSettingsBox.getChildren().add(testErrorButton); + // Button testErrorButton = new Button("Test Error"); + // testErrorButton.setOnAction((ev) -> { + // FunkyLogSorter.createTestError(primaryStage); + // }); + // otherSettingsBox.getChildren().add(testErrorButton); return otherSettingsBox; } diff --git a/target/classes/com/funkylogclient/FunkyLogSorter.class b/target/classes/com/funkylogclient/FunkyLogSorter.class index 8d08655e83d3442c00dff50d891f93291bd09914..9a2d89fd2c7a4d3be189769fb244670f1225119f 100644 GIT binary patch delta 3598 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 YvV~_^XC>_hxk+x}bF_@_<*f+*8^-O^Pyhe` delta 4873 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 diff --git a/target/classes/com/funkylogclient/FunkyLogs.class b/target/classes/com/funkylogclient/FunkyLogs.class index 483fe2d157f6f8823e3f0601c4b23267a44a8d67..ff6d16070987fa2c6f3505fcb003272ac975ecd0 100644 GIT binary patch literal 10539 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 diff --git a/target/classes/com/funkylogclient/SidebarOtherSettings.class b/target/classes/com/funkylogclient/SidebarOtherSettings.class index 112511af8280aed1d62234d6167d7ffeffdd2306..b4071087b2dd275f89d5b32ee3780718b77b3f1f 100644 GIT binary patch delta 465 zcmXAlOHWfl6o9{J>AmgrN*hg@5J?Cu5Rer{Q=%>mD|fPygs^~^qClzAVii&96L| zPYGw*$S=3x40FrnrsTu5hemJ=p$q9$SJpDjZI3&$8qPZp8Fv|zqmjDc1e0<;QZK(F zr<^CuxIC2;_DE2el}@{79?O|%WpdtPc;<1Pp_s#BoS`@+_S)k<50t%9X7J8tGO27! zx+|AU&14_)Bz~5qEaQ&HG#LZ1Jy{AA+xX zyhgWV$ObvToNF2lD6Nh`3qq*Juj-&#rZ291qEUS6@i<-8NqTGOs=;dg9?!8)w7y6? z=JB%Ch9m7ukJqjCMWlV>@s`!T7ERvSO@%@(Sef@rrCiD32gS^Gztg`a?-xvuo~BNl z6MCU?%%A#Z9qT4d6{tH*WBQlMFb$jfSzn*Zq^7c=kH)!u%*&((sf*D(Ow*>?E&Xh) z*BO2F5O+Zzn=PTo5p5xn&ZLF7J0jBKho&D50p);p-R0kzW>t$>ie<@WcR5 zo9R`vrai;6mXd)OqZY_BCRAe10LE;ono$WEB~CIR6ELsz3LLX{sO`pO(%Eu*D>jOB zcg{ejX##^c&No;s25TaN$~Xs^y$KxNKHp)TIINEx&Kbz%@3&#!