deserialize method

  1. @override
void deserialize(
  1. XmlElement? xml
)
override

Deserializes the FML template elements, attributes and children

Implementation

@override
void deserialize(XmlElement? xml)
{
  if (xml == null) return;

  // deserialize
  super.deserialize(xml);

  // properties
  type            = Xml.get(node: xml, tag: 'type');
  backgroundcolor = Xml.get(node: xml, tag: 'backgroundcolor');
  margin          = Xml.get(node: xml, tag: 'margin');
  title           = Xml.get(node: xml, tag: 'title');
  postbrokers     = Xml.attribute(node: xml, tag: 'postbroker');
  selected        = Xml.get(node: xml, tag: 'selected');
  selectable      = Xml.get(node: xml, tag: 'selectable');
  onclick         = Xml.get(node: xml, tag: 'onclick');

  // find all descendants
  List<dynamic>? fields = findDescendantsOfExactType(null);
  if (fields != null) {
    for (var field in fields) {
      // form field?
      if (field is IFormField)
      {
        // Build Fields
        if (this.fields == null) this.fields = [];
        this.fields!.add(field);

        // Register Listener to Dirty Field
        if (field.dirtyObservable != null) field.dirtyObservable!.registerListener(onDirtyListener);
      }
    }
  }
}