!7 cmodule BigInputWithSections { S text; switchable int fontSize = 20; transient JPanel stack; transient StackLayouter layouter; transient new AtomicLong changeCount; transient long renderedChangeCount; void triggerMakeSections { incAtomicLong(changeCount); makeSections(); } start { onChange(r triggerMakeSections); } visual withComputing(r triggerMakeSections, jvsplit(setFontSize(fontSize, dm_textArea('text)), jscroll_trackWidth(stack = customLayoutPanel(layouter = new StackLayouter)))); void makeSections() q { if (stack == null) ret; long c = changeCount!; if (renderedChangeCount >= c) ret; renderedChangeCount = c; removeAllComponents(stack); addAndValidate(stack, jSection("Character count", jlabel(l_str(text)))); } }