Add javadoc, split progressbar to its own class
This commit is contained in:
parent
49eab07801
commit
d4524bbccb
3 changed files with 83 additions and 38 deletions
|
@ -3,8 +3,18 @@ package dev.zontreck.ariaslib.util;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Utility class to assist in creating a dictionary programmatically in one line of code.
|
||||||
|
*/
|
||||||
public class Maps
|
public class Maps
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* This takes a list of entries and returns a HashMap
|
||||||
|
* @param entries The entries you want in your hashmap
|
||||||
|
* @return The map itself
|
||||||
|
* @param <A> Any typed parameter
|
||||||
|
* @param <B> Any typed parameter
|
||||||
|
*/
|
||||||
public static <A,B> Map<A,B> of(Entry<A,B>... entries) {
|
public static <A,B> Map<A,B> of(Entry<A,B>... entries) {
|
||||||
Map<A,B> map = new HashMap<>();
|
Map<A,B> map = new HashMap<>();
|
||||||
for(Entry<A,B> E : entries)
|
for(Entry<A,B> E : entries)
|
||||||
|
@ -15,10 +25,21 @@ public class Maps
|
||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A virtual entry used only by the Maps#of function.
|
||||||
|
* @see Maps#of(Entry[])
|
||||||
|
* @param <A> Any typed parameter
|
||||||
|
* @param <B> Any typed parameter
|
||||||
|
*/
|
||||||
public static class Entry<A,B> {
|
public static class Entry<A,B> {
|
||||||
public A key;
|
public final A key;
|
||||||
public B value;
|
public final B value;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializes the readonly entry
|
||||||
|
* @param a The dictionary key
|
||||||
|
* @param b The value
|
||||||
|
*/
|
||||||
public Entry(A a, B b)
|
public Entry(A a, B b)
|
||||||
{
|
{
|
||||||
this.key=a;
|
this.key=a;
|
||||||
|
|
|
@ -20,40 +20,4 @@ public class Percent
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private static final int DEFAULT_BAR_WIDTH = 50;
|
|
||||||
|
|
||||||
private static int getConsoleWidth() {
|
|
||||||
return 80; // Default console width, can be adjusted for different consoles
|
|
||||||
}
|
|
||||||
public static void printProgressBar(int progress, int maxProgress, String beforeText, String afterText) {
|
|
||||||
PrintStream out = System.out;
|
|
||||||
int consoleWidth = getConsoleWidth();
|
|
||||||
int barWidth = Math.min(consoleWidth - beforeText.length() - afterText.length() - 4, DEFAULT_BAR_WIDTH);
|
|
||||||
|
|
||||||
// Calculate progress
|
|
||||||
int progressBarLength = (int) ((double) progress / maxProgress * barWidth);
|
|
||||||
|
|
||||||
// Print before text
|
|
||||||
out.print(beforeText);
|
|
||||||
|
|
||||||
// Print progress bar
|
|
||||||
out.print("[");
|
|
||||||
for (int i = 0; i < barWidth; i++) {
|
|
||||||
if (i < progressBarLength) {
|
|
||||||
out.print("=");
|
|
||||||
} else {
|
|
||||||
out.print(" ");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
out.print("]");
|
|
||||||
|
|
||||||
// Print percentage
|
|
||||||
out.print(" " + (progress * 100 / maxProgress) + "%");
|
|
||||||
|
|
||||||
// Print after text
|
|
||||||
out.print(afterText);
|
|
||||||
|
|
||||||
// Move cursor to next line
|
|
||||||
out.println();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
60
src/main/java/dev/zontreck/ariaslib/util/ProgressBar.java
Normal file
60
src/main/java/dev/zontreck/ariaslib/util/ProgressBar.java
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
package dev.zontreck.ariaslib.util;
|
||||||
|
|
||||||
|
import java.io.PrintStream;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Utility to create an ascii progress bar
|
||||||
|
*/
|
||||||
|
public class ProgressBar
|
||||||
|
{
|
||||||
|
|
||||||
|
private static final int DEFAULT_BAR_WIDTH = 50;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Always will return 80
|
||||||
|
* @return 80
|
||||||
|
*/
|
||||||
|
private static int getConsoleWidth() {
|
||||||
|
return 80; // Default console width, can be adjusted for different consoles
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Print out a progress bar
|
||||||
|
* <br/><br/>
|
||||||
|
* your text here [========= ] 40% your text here
|
||||||
|
* @param percent The percentage
|
||||||
|
* @param beforeText
|
||||||
|
* @param afterText
|
||||||
|
*/
|
||||||
|
public static void printProgressBar(int percent, String beforeText, String afterText) {
|
||||||
|
PrintStream out = System.out;
|
||||||
|
int consoleWidth = getConsoleWidth();
|
||||||
|
int barWidth = Math.min(consoleWidth - beforeText.length() - afterText.length() - 4, DEFAULT_BAR_WIDTH);
|
||||||
|
|
||||||
|
// Calculate progress
|
||||||
|
int progressBarLength = (int) ((double) percent / 100 * barWidth);
|
||||||
|
|
||||||
|
// Print before text
|
||||||
|
out.print(beforeText);
|
||||||
|
|
||||||
|
// Print progress bar
|
||||||
|
out.print("[");
|
||||||
|
for (int i = 0; i < barWidth; i++) {
|
||||||
|
if (i < progressBarLength) {
|
||||||
|
out.print("=");
|
||||||
|
} else {
|
||||||
|
out.print(" ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
out.print("]");
|
||||||
|
|
||||||
|
// Print percentage
|
||||||
|
out.print(" " + percent + "%");
|
||||||
|
|
||||||
|
// Print after text
|
||||||
|
out.print(afterText);
|
||||||
|
|
||||||
|
// Move cursor to next line
|
||||||
|
out.println();
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue