!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 { makeSections(incAtomicLong(changeCount)) }); } visual jvsplit(setFontSize(fontSize, dm_textArea('text)), jscroll_trackWidth(stack = customLayoutPanel(layouter = new StackLayouter))); void makeSections(long changeCount) q { if (stack == null) ret; print("makeSections: " + changeCount + " / " + renderedChangeCount); if (renderedChangeCount >= changeCount) ret; renderedChangeCount = changeCount; removeAllComponents(stack); stack.add(jSection("Character count", jlabel(l_str(text)))); } }