controlp5/src/controlP5/Println.java

84 lines
1.3 KiB
Java
Executable File

package controlP5;
import java.io.IOException;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;
import java.io.PrintStream;
public class Println {
int max = -1;
final Textarea c;
String buffer = "";
boolean paused;
public Println(Textarea theTextarea) {
c = theTextarea;
run();
}
public Println setMax(int theMax) {
max = theMax;
return this;
}
private void run() {
try {
final PipedInputStream pi = new PipedInputStream();
final PipedOutputStream po = new PipedOutputStream(pi);
System.setOut(new PrintStream(po, true));
(new Thread() {
public void run() {
final byte[] buf = new byte[1024];
try {
while (true) {
final int len = pi.read(buf);
if (len == -1) {
break;
}
if (!paused) {
if (!c._myScrollbar.isMousePressed) {
c.append(buffer + new String(buf, 0, len), max);
buffer = "";
c.scroll(1);
}
else {
buffer += new String(buf, 0, len);
}
}
}
} catch (IOException e) {
}
}
}).start();
} catch (IOException e) {
System.out.println("Problems setting up console");
}
}
public void clear() {
c.clear();
}
public void pause() {
paused = true;
}
public void play() {
paused = false;
}
}