!7 sclass JavaEval extends DynPrintLog { S expression; transient bool calculating; transient O value; transient JTextField tfInput; transient Throwable error; JComponent visualize() { ret northAndCenterWithMargins( centerAndEastWithMarginInbetween( tfInput = onEnter(jtextfield(expression), rThread evalIt), hstackWithSpacing( jbutton("Eval", rThread evalIt), jbutton("Refresh", rThread refresh))), super.visualize()); } void refresh { veryQuickJava_refresh(); print("Refreshed translator."); } void evalIt { if (calculating) ret; calculating = true; temp tempAfterwards(r { calculating = false }); S s = gtt(tfInput); print("\nEvaluating: " + s); setField(expression := s); try { setFields(value := javaEval(s), error := null); print(); print(value); } catch e { setFields(value := null, error := e); printStackTrace2(e); } } }