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

in asdoc/org/apache/royale/binding/ItemRendererDataBinding.js [40:107]


org.apache.royale.binding.ItemRendererDataBinding.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];
    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) {
      var /** @type {Object} */ compWatcher = watchers.watcherMap[binding.source[0]];
      if (compWatcher) {
        fieldWatcher = compWatcher.children.watcherMap[binding.source[1]];
      }
      if (compWatcher && !fieldWatcher && (binding.source[0] == "data" || (org.apache.royale.utils.Language.is(compWatcher.eventNames, String) && compWatcher.eventNames == "dataChange"))) {
        var /** @type {org.apache.royale.binding.ItemRendererSimpleBinding} */ irsb = new org.apache.royale.binding.ItemRendererSimpleBinding();
        irsb.destinationID = org.apache.royale.utils.Language.string(binding.destination[0]);
        irsb.destinationPropertyName = org.apache.royale.utils.Language.string(binding.destination[1]);
        irsb.sourcePropertyName = org.apache.royale.utils.Language.string(binding.source[1]);
        irsb.setDocument(this._strand);
        this._strand.addBead(irsb);
      } else if (fieldWatcher != null && org.apache.royale.utils.Language.is(fieldWatcher.eventNames, String) && org.apache.royale.utils.Language.is(compWatcher.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.setSourceEventName(compWatcher.eventNames);
        sb.sourcePropertyName = org.apache.royale.utils.Language.string(binding.source[1]);
        sb.setDocument(this._strand);
        this.prepareCreatedBinding(sb, binding);
      } else if (fieldWatcher == null || fieldWatcher.eventNames == null) {
        this.makeConstantBinding(binding);
      } else {
        this.makeGenericBinding(binding, i, watchers);
      }
    } else {
      this.makeGenericBinding(binding, i, watchers);
    }
    fieldWatcher = null;
  }
};