From 6e3838bd46dd609a7066b786bf1611e6e64a1360 Mon Sep 17 00:00:00 2001 From: Matthias Jaros Date: Mon, 16 Feb 2026 17:38:33 +0100 Subject: Fixed bug that cursors moves too much up and deletes lines depending on number of target hosts --- .../com/it_jaros/networkScanner/ProgressBar.java | 25 +++++++++++++--------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/it_jaros/networkScanner/ProgressBar.java b/src/main/java/com/it_jaros/networkScanner/ProgressBar.java index 50397f3..7203a46 100644 --- a/src/main/java/com/it_jaros/networkScanner/ProgressBar.java +++ b/src/main/java/com/it_jaros/networkScanner/ProgressBar.java @@ -11,23 +11,24 @@ public class ProgressBar { public void start(List hosts) { final int lines = hosts.size(); - System.out.print("\n\n"); + hosts.forEach((h) -> System.out.print("\n")); ui.scheduleAtFixedRate(() -> { - // move cursor UP to where bars start + // clear bars by moving cursor up System.out.print("\u001b[" + lines + "A"); - + + // paint a bar per host for (Progress progress : hosts) { - System.out.print("\u001b[2K\r"); - System.out.println(bar( - progress.host() + " open=" + progress.open().get(), - progress.done().get(), - progress.total())); + drawBar(progress); } }, 1, 200, TimeUnit.MILLISECONDS); } - public void stop() { - ui.shutdown(); + private void drawBar(Progress progress) { + System.out.print("\u001b[2K\r"); + System.out.println(bar( + progress.host() + " open=" + progress.open().get(), + progress.done().get(), + progress.total())); } public String bar(String label, int done, int total) { @@ -41,6 +42,10 @@ public class ProgressBar { return String.format("%-25s %s %3d%% (%d/%d)", label, b, percent, done, total); } + public void stop() { + ui.shutdown(); + } + void onPortFinished(Progress p) { p.done().incrementAndGet(); } -- cgit v1.3.1