org.apache.royale.binding.ViewDataBinding.prototype.processBindingData = function()

in asdoc/org/apache/royale/binding/ViewDataBinding.js [40:103]


org.apache.royale.binding.ViewDataBinding.prototype.processBindingData = function(bindingData, first) {
  var /** @type {number} */ i = 0;
  var /** @type {Object} */ fieldWatcher;
  var /** @type {org.apache.royale.binding.SimpleBinding} */ sb;
  var /** @type {Object} */ binding = null;
  var /** @type {number} */ n = (bindingData[first]) >> 0;
  var /** @type {Array} */ bindings = [];
  //var /** @type {number} */ i = 0;
  var /** @type {number} */ index = (first + 1) >> 0;
  for (i = 0; i < n; i++) {
    binding = {};
    binding.source = bindingData[index++];
    binding.destFunc = bindingData[index++];
    binding.destination = bindingData[index++];
    bindings.push(binding);
  }
  var /** @type {Object} */ watchers = this.decodeWatcher(bindingData.slice(index));
  for (i = 0; i < n; i++) {
    binding = bindings[i];
    var /** @type {Object} */ compWatcher = null;
    if (org.apache.royale.utils.Language.is(binding.source, String)) {
      fieldWatcher = watchers.watcherMap[binding.source];
      if (!fieldWatcher) {
        this.makeConstantBinding(binding);
      } else if (org.apache.royale.utils.Language.is(fieldWatcher.eventNames, String)) {
        var /** @type {boolean} */ isStatic = fieldWatcher.type == "static";
        sb = new org.apache.royale.binding.SimpleBinding(isStatic);
        sb.destinationPropertyName = org.apache.royale.utils.Language.string(binding.destination[1]);
        sb.eventName = fieldWatcher.eventNames;
        sb.sourcePropertyName = org.apache.royale.utils.Language.string(binding.source);
        if (isStatic) {
          sb.setDocument(fieldWatcher.parentObj);
        } else {
          sb.setDocument(this._strand);
        }
        this.prepareCreatedBinding(sb, binding);
      }
    } else if (org.apache.royale.utils.Language.is(binding.source, Array) && binding.source.length == 2 && binding.destination.length == 2) {
      compWatcher = watchers.watcherMap[binding.source[0]];
      if (compWatcher) {
        fieldWatcher = compWatcher.children.watcherMap[binding.source[1]];
      }
      if (fieldWatcher && org.apache.royale.utils.Language.is(fieldWatcher.eventNames, String)) {
        sb = new org.apache.royale.binding.SimpleBinding();
        sb.destinationPropertyName = org.apache.royale.utils.Language.string(binding.destination[1]);
        sb.eventName = fieldWatcher.eventNames;
        sb.sourceID = org.apache.royale.utils.Language.string(binding.source[0]);
        sb.sourcePropertyName = org.apache.royale.utils.Language.string(binding.source[1]);
        sb.setDocument(this._strand);
        this.prepareCreatedBinding(sb, binding);
      } else if (!fieldWatcher || fieldWatcher.eventNames == null) {
        var /** @type {org.apache.royale.binding.ConstantBinding} */ cb = new org.apache.royale.binding.ConstantBinding();
        cb.destinationPropertyName = org.apache.royale.utils.Language.string(binding.destination[1]);
        cb.sourceID = org.apache.royale.utils.Language.string(binding.source[0]);
        cb.sourcePropertyName = org.apache.royale.utils.Language.string(binding.source[1]);
        cb.setDocument(this._strand);
        this.prepareCreatedBinding(cb, binding);
      }
    } else {
      this.makeGenericBinding(binding, i, watchers);
    }
    fieldWatcher = null;
  }
};