volatile bool enabled = true; transient JPanel buttons; transient SingleComponentPanel scpStretcherControl; JComponent visualizeWithoutEnabled() { ret super.visualize(); } JComponent dm_visualizeWithEnabled(JComponent main) { ret centerAndSouthWithMargins(main, wrapControlArea()); } JComponent wrapControlArea() { ret makeControlArea(); } JPanel makeControlArea() { if (scpStretcherControl == null) scpStretcherControl = singleComponentPanel(); var cb = makeEnabledCheckBox(); buttons = jrightalignedline(cb); ret centerAndEastWithMargin(scpStretcherControl, buttons); } static JCheckBox makeEnabledCheckBox() { ret dm_fieldCheckBox('enabled); } void setEnabled(bool b) { setField(enabled := b); } void addToControlArea aka addControls(Component... components) { addComponentsFirst(buttons, components); } void addButton aka addControl(Component component) { addComponentsFirst(buttons, component); } void addControl(Swingable component) { addComponentsFirst(buttons, wrap(component)); } void setMainControl(JComponent control) { scpSet(scpStretcherControl, control); }