abstract sclass DynBigNumber extends DynModule { S description; O value; int fontSize = 40; S toolTip; transient JLabel label; transient SimpleLiveValue lvText = new(S); transient SimpleLiveValue lvDesc = new(S); // PUBLIC API // any Number, or anything persistable with toString bool setValue(O value) { bool changed = setField(+value); makeTexts(); ret changed; } void setDescription(S desc) { setField('description, desc); makeTexts(); } O getValue() { ret value; } S getDescription() { ret description; } void setToolTip(S toolTip) { setField(+toolTip); } void doPersist() { _persistenceInfo = mapMinusOrNull(_persistenceInfo, 'value); } // END PUBLIC API void makeTexts() { lvText.set(value == null ? "-" : str(value)); lvDesc.set(description); } start { _persistenceInfo = mapPlus(_persistenceInfo, value := false); makeTexts(); } visualize { ret bindToolTipToLiveValue(dm_fieldLiveValue('toolTip), jLiveValueSection(lvDesc, centerLabel(makeBold(setFontSize(fontSize, label = jLiveValueLabel(lvText)))))); } }