package games.strategy.debug;
import javax.swing.JTextArea;
import games.strategy.util.ThreadUtil;
class ThreadReader implements Runnable {
private static final int CONSOLE_UPDATE_INTERVAL_MS = 100;
private final JTextArea m_text;
private final SynchedByteArrayOutputStream m_in;
private final boolean m_displayConsoleOnWrite;
private final GenericConsole parentConsole;
ThreadReader(final SynchedByteArrayOutputStream in, final JTextArea text, final boolean displayConsoleOnWrite,
final GenericConsole parentConsole) {
m_in = in;
m_text = text;
m_displayConsoleOnWrite = displayConsoleOnWrite;
this.parentConsole = parentConsole;
}
@Override
public void run() {
while (true) {
m_text.append(m_in.readFully());
if (m_displayConsoleOnWrite && !parentConsole.isVisible()) {
parentConsole.setVisible(true);
}
if (!ThreadUtil.sleep(CONSOLE_UPDATE_INTERVAL_MS)) {
break;
}
}
}
}