summaryrefslogtreecommitdiff
path: root/src/main/java/com/it_jaros/networkScanner/ProgressBar.java
diff options
context:
space:
mode:
authorGravatar Matthias Jaros <jarlucmat@mailbox.org>2026-02-16 17:38:33 +0100
committerGravatar Matthias Jaros <jarlucmat@mailbox.org>2026-07-09 09:59:28 +0200
commit6e3838bd46dd609a7066b786bf1611e6e64a1360 (patch)
tree5c5652b7b7018d9cc9c90d14571b7c7135877095 /src/main/java/com/it_jaros/networkScanner/ProgressBar.java
parent883bd2ba4a40ff6687c58984e1367a35027b4181 (diff)
Fixed bug that cursors moves too much up and deletes lines depending on
number of target hosts
Diffstat (limited to 'src/main/java/com/it_jaros/networkScanner/ProgressBar.java')
-rw-r--r--src/main/java/com/it_jaros/networkScanner/ProgressBar.java25
1 files 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<Progress> 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();
}