sclass JG22Label > SingleComponentPanel { G22Label label; JLabel jLabel; JTextField tf; *() { init(); } *(G22Label *label) { init(); } void init { if (label == null) setComponent(tf = jTextField()); else { jLabel = jLabel(label.name); onEnter(jLabel, rThread { doneEditing(getTextTrim(jLabel)) }); setComponent(jLabel); } } swappable void doneEditing(S text) {} }