!7 set flag DynModule. // for transpilation set flag NoSwitchableFields. sclass JavaEval extends DynPrintLog { S expression; bool realEval = true; transient bool calculating; transient O value; transient JTextArea taInput; transient Throwable error; transient JPanel babiesPanel; start { loadImage2(#1101447); makeDependent_postProcess = r updateBabySymbols; dm_vmBus_onMessage('gcDone, r updateBabySymbols); doEvery(300.0, r updateBabySymbols); // just to be sure to updat eit sometimes } visualize { ret centerAndSouthWithMargins( jvsplit( centerAndEastWithMarginInbetween( onCtrlEnter(taInput = jEnableUndoRedo(typeWriterTextArea(expression)), rThread evalIt), vstackWithSpacing( jbutton("Fresh", rThread { refresh(); evalIt() }), jbutton("Eval", rThread evalIt), withToolTip("Don't interpret", dm_fieldCheckBox("Real", 'realEval)))), super.visualize()), jScrollWithoutBorder(babiesPanel = leftAlignedLine())); } void refresh { call(dm_transpiler(), 'refresh); loadFunctions_clearCache(); print("Refreshed translator."); } void evalIt { if (calculating) ret; calculating = true; temp afterwards(r { calculating = false }); dm_javaEvalModule_doIt(gtt(taInput), realEval); } void updateBabySymbols enter { dm_q().add(r { final int n = l(dependentClasses()); final BufferedImage img = scaleImageToWidth(loadImage2(#1101447), 24); swing { removeAllComponents(babiesPanel); repeat n { babiesPanel.add(toolTip("You have made one cute little subprocess!", jimage(img))); } revalidate(babiesPanel); } }); } }