From 1ec785cf30afe9e83a81cf1b7e7f402fda295bbf Mon Sep 17 00:00:00 2001 From: Matthias Jaros Date: Mon, 23 Mar 2026 11:38:29 +0100 Subject: Fixed progress bar duplicates and now only redraw lines that actually changes and the rest is fixed --- .../java/com/it_jaros/network_scanner/ProgressBar.java | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/it_jaros/network_scanner/ProgressBar.java b/src/main/java/com/it_jaros/network_scanner/ProgressBar.java index 7743ed1..72f762a 100644 --- a/src/main/java/com/it_jaros/network_scanner/ProgressBar.java +++ b/src/main/java/com/it_jaros/network_scanner/ProgressBar.java @@ -1,6 +1,8 @@ package com.it_jaros.network_scanner; import java.util.ArrayList; +import java.util.Comparator; +import java.util.Iterator; import java.util.List; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; @@ -25,7 +27,17 @@ public class ProgressBar { } private void drawProgress(boolean last) { - // paint a bar per host + // find and print finished hosts one last time + for (Iterator it = hosts.iterator(); it.hasNext();) { + Progress p = it.next(); + if (p.done().get() == p.total()) { + it.remove(); + drawBar(p); + } + } + + // the more progressed the host the more up it is + hosts.sort(Comparator.comparingInt((Progress p) -> p.done().get()).reversed()); for (Progress progress : hosts) { drawBar(progress); } @@ -43,7 +55,7 @@ public class ProgressBar { } private void drawBar(Progress progress) { - System.out.print("\u001b[2K\r"); + System.out.print("\u001b[2K\r"); // clear whole line System.out.println(createBar( progress.host(), progress.open().get(), -- cgit v1.3.1