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