!7

sclass UsersPrimaryMailAddress extends DynModule {
  S address;

  JComponent visualize() {
    ret jSection("Your Primary E-Mail Address",
      centerAndSouth(centerBoldLabel(jLiveValueLabel(dm_fieldLiveValue(this, 'address))),
      jcenteredbuttons("Change...", r {
        final JTextField tf = jtextfield(address);
        showFormTitled("Set your e-mail address",
          "Address", tf, disableButtonWhileCalcing(func -> bool {
            S s = getTextTrim(tf);
            if (empty(s) || isValidEmailAddress(s))
              ret true with setField(address := s);
            ret false with infoBox(s + " is not a valid mail address");
          }));
      })));
  }
}