I am setting up a Console Command interface where the input line should always be the line which is below every other line. So if an other thread prints something while I write something in the input line, it interrupts. So it messes everything up, and I can't edit my input clearly in Windows, Linux...
So if this arrow is arrow where my Application starts reading the line from the console
>
and if I write something
> myInput
and some other threads prints something.
> myInputLogFromOtherThread
then the input will interrupt with the latest log and the cursor will jump to the no mans land and I can't edit my input like I said above (i can still edit it, but i dont see the changes)
I have tried lots of differend Api's like JLine, Cursors, Lanterna but they didn't worked for me. Lanterna lagged, Cursors and JLine didn't run at all as they should, and I didn't found any helpful documentation, how to make something I want
Here is my code, and at the println event I want to insert the line to be printed to the console, between the input line > myInput
and the line before the input.
public static void main(String[] args) {
//On System.out.println event
System.setOut(new PrintStream(System.out) {
public void println(String s) {
super.println(s); // So i want that this line, gets insertet between the last line and the line before the last line
/*
* So it should be inserted
*
* SomeRandomLogging
* <- here, that it doesn't interrupt our input
* > myInput
*/
}
});
System.out.print("> ");
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("LogFromOtherFread");
}
}).start();
final List<String> lines = new ArrayList<>();
try (BufferedReader in = new BufferedReader(new InputStreamReader(System.in))) {
String line = null;
while ((line = in.readLine()) != null) {
lines.add(line);
}
}
}
So I expect that after the Application moves the line which gets printed, to the console, before the input line, it should work like a command interface e.g. Linux, Bukkit (Minecraft Server Api),...