diff --git a/src/main/java/com/tonic/launcher/ui/SplashScreen.java b/src/main/java/com/tonic/launcher/ui/SplashScreen.java index 3c3463c..130d75d 100644 --- a/src/main/java/com/tonic/launcher/ui/SplashScreen.java +++ b/src/main/java/com/tonic/launcher/ui/SplashScreen.java @@ -55,7 +55,7 @@ public SplashScreen() { */ public void setStageProgress(int progress, String text) { this.stageProgress = Math.max(0, Math.min(100, progress)); - this.stageText = text; + this.stageText = sanitizeStatusText(text); SwingUtilities.invokeLater(splashPanel::repaint); } @@ -73,7 +73,7 @@ public void setOverallProgress(int progress) { public void setProgress(int stageProgress, int overallProgress, String text) { this.stageProgress = Math.max(0, Math.min(100, stageProgress)); this.overallProgress = Math.max(0, Math.min(100, overallProgress)); - this.stageText = text; + this.stageText = sanitizeStatusText(text); SwingUtilities.invokeLater(splashPanel::repaint); } @@ -84,7 +84,7 @@ public void setProgressAndStatus(int progress, String text) { } public void setError(String message) { - this.stageText = message; + this.stageText = sanitizeStatusText(message); this.isError = true; SwingUtilities.invokeLater(() -> { closeButton.setVisible(true); @@ -95,6 +95,24 @@ public void setError(String message) { }); } + private String sanitizeStatusText(String text) { + if (text == null || text.isEmpty()) { + return ""; + } + + StringBuilder sanitized = new StringBuilder(text.length()); + for (int i = 0; i < text.length(); i++) { + char currentChar = text.charAt(i); + if (currentChar >= 32 && currentChar <= 126) { + sanitized.append(currentChar); + } else { + sanitized.append(' '); + } + } + + return sanitized.toString().replaceAll("\\s+", " ").trim(); + } + public boolean isError() { return isError; } diff --git a/src/main/java/com/tonic/launcher/util/JDKManager.java b/src/main/java/com/tonic/launcher/util/JDKManager.java index ba96fdc..e9da945 100644 --- a/src/main/java/com/tonic/launcher/util/JDKManager.java +++ b/src/main/java/com/tonic/launcher/util/JDKManager.java @@ -161,7 +161,7 @@ private static void downloadFile(String url, Path destination, SplashScreen spla } } - lastSpeedEta = String.format(" • %.1f MB/s • %s left", speedMBps, etaStr); + lastSpeedEta = String.format(" | %.1f MB/s | %s left", speedMBps, etaStr); lastSpeedUpdate = currentTime; bytesAtLastSpeedUpdate = totalBytes; }