!7 cmodule PhilosophyBotTextArea > DynTextArea { S output; transient PhilosophyBot1 bot; transient ReliableSingleThread rstRunProgram = dm_rst(this, r runProgram); transient JLabel lblStatus; visual jvsplit( jCenteredSection("Program", super), centerAndSouth( jCenteredSection("Output", dm_textArea output()), lblStatus = jlabel())); start { grabInterval = 1.0; dm_watchFieldAndNow text(rstRunProgram); } void runProgram { temp tempMiniLoadingAnim(); time { setField(output := hijackPrint(r { bot = new PhilosophyBot1(text); bot.run(); })); } setText(lblStatus, lastTiming_formatted()); } }