abstract sclass DynTextArea extends DynModule { S text; transient JTextArea textArea; JComponent visualize() { ret textArea = typeWriterTextArea(text); } void setText(S text) { temp enter(); if (neq(this.text, text)) { this.text = text; setTextKeepCaret(textArea, text); } } void unvisualize { if (textArea != null) setText(main.getText(textArea)); super.unvisualize(); } S getText() { ret text; } void clearText() { setText(""); } void printToText(O o) { setText(getText() + str(o) + "\n"); moveCaretToEnd(textArea); } }