You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ah...@apache.org on 2014/12/09 06:16:50 UTC

[03/31] git commit: [flex-asjs] [refs/heads/develop] - sync up with as version

sync up with as version


Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/bdac9ea2
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/bdac9ea2
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/bdac9ea2

Branch: refs/heads/develop
Commit: bdac9ea237db25f371d62ce35827ab89917e92fb
Parents: f690403
Author: Alex Harui <ah...@apache.org>
Authored: Fri Nov 21 16:46:06 2014 -0800
Committer: Alex Harui <ah...@apache.org>
Committed: Mon Dec 8 20:47:40 2014 -0800

----------------------------------------------------------------------
 .../apache/flex/utils/MXMLDataInterpreter.js    | 346 ++++++++++---------
 1 file changed, 176 insertions(+), 170 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/bdac9ea2/frameworks/js/FlexJS/src/org/apache/flex/utils/MXMLDataInterpreter.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/utils/MXMLDataInterpreter.js b/frameworks/js/FlexJS/src/org/apache/flex/utils/MXMLDataInterpreter.js
index 4b9f273..03b873b 100644
--- a/frameworks/js/FlexJS/src/org/apache/flex/utils/MXMLDataInterpreter.js
+++ b/frameworks/js/FlexJS/src/org/apache/flex/utils/MXMLDataInterpreter.js
@@ -40,7 +40,7 @@ org.apache.flex.utils.MXMLDataInterpreter.prototype.FLEXJS_CLASS_INFO =
  */
 org.apache.flex.utils.MXMLDataInterpreter.generateMXMLObject =
     function(document, data) {
-  var assingComp, Cls, comp, generateMXMLArray, generateMXMLObject, i, id, j, m,
+  var assignComp, Cls, comp, generateMXMLArray, generateMXMLObject, i, id, j, m,
       name, simple, value;
 
   i = 0;
@@ -52,39 +52,50 @@ org.apache.flex.utils.MXMLDataInterpreter.generateMXMLObject =
   generateMXMLObject =
       org.apache.flex.utils.MXMLDataInterpreter.generateMXMLObject;
 
-  m = data[i++]; // num props
-  for (j = 0; j < m; j++) {
-    name = data[i++];
-    simple = data[i++];
-    value = data[i++];
+  if (comp.set_strand)
+    org.apache.flex.utils.MXMLDataInterpreter.initializeStrandBasedObject(document, null, comp, data, i);
+  else {
+    m = data[i++]; // num props
+    for (j = 0; j < m; j++) {
+      name = data[i++];
+      simple = data[i++];
+      value = data[i++];
 
-    if (simple === null) {
-      value = generateMXMLArray(document, null, value);
-    } else if (simple === false) {
-      value = generateMXMLObject(document, value);
-    }
+      if (simple === null) {
+        value = generateMXMLArray(document, null, value);
+      } else if (simple === false) {
+        value = generateMXMLObject(document, value);
+      }
 
-    assingComp = true;
-    if (name === 'id') {
-      document['set_' + value](comp);
-      id = value;
-    } else if (name === '_id') {
-      document[value] = comp;
-      id = value;
-      assingComp = false;
-    }
+      if (name === 'id') {
+        document['set_' + value](comp);
+        id = value;
+      }
 
-    if (assingComp) {
-      if (typeof comp['set_' + name] === 'function') {
-        comp['set_' + name](value);
-      } else {
-        comp[name] = value;
+      if (name == 'document' && !comp.document) {
+        comp.document = document;
+      }
+      else if (name === '_id') {
+        document[value] = comp;
+        id = value;
+      }
+      else if (name === 'id') {
+        if (typeof(comp['set_id']) === 'function') {
+          comp['set_id'](value);
+        }
+      }
+      else {
+        if (typeof comp['set_' + name] === 'function') {
+          comp['set_' + name](value);
+        } else {
+          comp[name] = value;
+        }
       }
     }
-  }
 
-  if (typeof comp.setDocument === 'function') {
-    comp.setDocument(document, id);
+    if (typeof comp.setDocument === 'function') {
+      comp.setDocument(document, id);
+    }
   }
 
   return comp;
@@ -96,60 +107,64 @@ org.apache.flex.utils.MXMLDataInterpreter.generateMXMLObject =
  * @param {Object} document The MXML object.
  * @param {Object} parent The parent object.
  * @param {Array} data The data array.
- * @param {boolean=} opt_recursive Whether to create objects in children.
  * @return {Array} The generated array.
  */
 org.apache.flex.utils.MXMLDataInterpreter.generateMXMLArray =
-    function(document, parent, data, opt_recursive) {
-  var bead, beadOffset, beads, children, Cls, comp, comps, generateMXMLArray,
-      generateMXMLObject, i, id, j, k, l, m, n, name, self, simple, value, dispatchBeadsAdded;
+    function(document, parent, data) {
+  var comps = [];
 
-  if (opt_recursive === undefined) {
-    opt_recursive = true;
+  var n = data.length;
+  var i = 0;
+  while (i < n) {
+    var cls = data[i++];
+    var comp = new cls();
+
+    i = org.apache.flex.utils.MXMLDataInterpreter.initializeStrandBasedObject(document, parent, comp, data, i);
+
+    comps.push(comp);
   }
+  return comps;
+};
+
+
+/**
+ * @expose
+ * @param {Object} document The MXML object.
+ * @param {Object} parent The parent object.
+ * @param {Object} comp The component being initialized.
+ * @param {Array} data The data array.
+ * @param {number} i The offset into data.
+ * @return {number} The new offset into the data.
+ */
+org.apache.flex.utils.MXMLDataInterpreter.initializeStrandBasedObject =
+    function(document, parent, comp, data, i) {
+  var bead, beadOffset, beads, children, Cls, generateMXMLArray,
+      generateMXMLObject, id, j, k, l, m, n, name, self, simple, value, dispatchBeadsAdded;
 
   generateMXMLArray =
       org.apache.flex.utils.MXMLDataInterpreter.generateMXMLArray;
   generateMXMLObject =
       org.apache.flex.utils.MXMLDataInterpreter.generateMXMLObject;
 
-  comps = [];
-
-  n = data.length;
-  i = 0;
-  while (i < n) {
-    Cls = data[i++];
-    comp = new Cls();
-
-    id = null;
-    dispatchBeadsAdded = false;
-
-    m = data[i++]; // num props
-    if (m > 0 && data[0] === 'model') {
-      m--;
-      name = data[i++];
-      simple = data[i++];
-      value = data[i++];
+  id = null;
 
-      if (simple === null) {
-        value = generateMXMLArray(document, parent, value, opt_recursive);
-      } else if (simple === false) {
-        value = generateMXMLObject(document, value);
-      }
+  m = data[i++]; // num props
+  if (m > 0 && data[0] === 'model') {
+    m--;
+    name = data[i++];
+    simple = data[i++];
+    value = data[i++];
 
-      if (typeof comp['set_' + name] === 'function') {
-        comp['set_' + name](value);
-      } else {
-        comp[name] = value;
-      }
+    if (simple === null) {
+      value = generateMXMLArray(document, parent, value);
+    } else if (simple === false) {
+      value = generateMXMLObject(document, value);
+    }
 
-      // (erikdebruin) There are no components with the 'get_strand' method...
-      /*
-      if (typeof value.addBead === 'function' &&
-          typeof comp.get_strand === 'function') {
-        comp.addBead(value);
-      }
-      */
+    if (typeof comp['set_' + name] === 'function') {
+      comp['set_' + name](value);
+    } else {
+      comp[name] = value;
     }
 
     beadOffset = i + (m - 1) * 3;
@@ -158,78 +173,76 @@ org.apache.flex.utils.MXMLDataInterpreter.generateMXMLArray =
     } else {
       beadOffset = -1;
     }
+  }
 
-    for (j = 0; j < m; j++) {
-      name = data[i++];
-      simple = data[i++];
-      value = data[i++];
+  for (j = 0; j < m; j++) {
+    name = data[i++];
+    simple = data[i++];
+    value = data[i++];
 
-      if (simple === null) {
-        value = generateMXMLArray(document, null, value, opt_recursive);
-      } else if (simple === false) {
-        value = generateMXMLObject(document, value);
-      }
+    if (simple === null) {
+      value = generateMXMLArray(document, null, value);
+    } else if (simple === false) {
+      value = generateMXMLObject(document, value);
+    }
 
-      if (name === 'id') {
-        id = value;
-      }
+    if (name === 'id') {
+      id = value;
+      document['set_' + value](comp);
+    }
 
-      if (name === 'document' && !comp.document) {
-        comp.document = document;
-      } else if (name === '_id') {
-        id = value; // and don't assign to comp
+    if (name === 'document' && !comp.document) {
+      comp.document = document;
+    } else if (name === '_id') {
+      id = value; // and don't assign to comp
+    } else if (name === 'id') {
+      if (typeof(comp['set_id']) === 'function') {
+        comp['set_id'](value);
+      }
+    } else {
+      if (typeof(comp['set_' + name]) === 'function') {
+        comp['set_' + name](value);
       } else {
-        if (typeof(comp['set_' + name]) === 'function') {
-          comp['set_' + name](value);
-        } else {
-          comp[name] = value;
-        }
+        comp[name] = value;
       }
     }
+  }
 
-    if (beadOffset > -1)
-    {
-      name = data[i++];
-      simple = data[i++];
-      value = data[i++];
+  if (beadOffset > -1)
+  {
+    name = data[i++];
+    simple = data[i++];
+    value = data[i++];
 
-      if (simple === null) {
-        value = generateMXMLArray(document, null, value, opt_recursive);
-      } else if (simple === false) {
-        value = generateMXMLObject(document, value);
+    if (simple === null) {
+      value = generateMXMLArray(document, null, value);
+    } else if (simple === false) {
+      value = generateMXMLObject(document, value);
+    } else {
+      if (typeof(comp['set_' + name]) === 'function') {
+        comp['set_' + name](value);
       } else {
-        if (typeof(comp['set_' + name]) === 'function') {
-          comp['set_' + name](value);
-        } else {
-          comp[name] = value;
-        }
-      }
-
-      beads = value;
-      l = beads.length;
-      for (k = 0; k < l; k++) {
-        bead = beads[k];
-        comp.addBead(bead);
-        dispatchBeadsAdded = true;
+        comp[name] = value;
       }
     }
+  }
 
-    m = data[i++]; // num styles
-    for (j = 0; j < m; j++) {
-      name = data[i++];
-      simple = data[i++];
-      value = data[i++];
+  m = data[i++]; // num styles
+  for (j = 0; j < m; j++) {
+    name = data[i++];
+    simple = data[i++];
+    value = data[i++];
 
-      if (simple === null) {
-        value = generateMXMLArray(document, null, value, opt_recursive);
-      } else if (simple === false) {
-        value = generateMXMLObject(document, value);
-      }
+    if (simple === null) {
+      value = generateMXMLArray(document, null, value);
+    } else if (simple === false) {
+      value = generateMXMLObject(document, value);
+    }
 
-      if (comp.setStyle) {
-        comp.setStyle(name, value);
-      }
+    if (comp.setStyle) {
+      comp.setStyle(name, value);
     }
+  }
 
     /*
     m = data[i++]; // num effects
@@ -246,56 +259,50 @@ org.apache.flex.utils.MXMLDataInterpreter.generateMXMLArray =
     }
     */
 
-    m = data[i++]; // num events
-    for (j = 0; j < m; j++) {
-      name = data[i++];
-      value = data[i++];
-
-      comp.addEventListener(name, goog.bind(value, document));
-    }
-
-    if (parent) {
-      parent.addElement(comp);
-      dispatchBeadsAdded = true;
-    }
+  m = data[i++]; // num events
+  for (j = 0; j < m; j++) {
+    name = data[i++];
+    value = data[i++];
 
-    children = data[i++];
-    if (children) {
-      if (opt_recursive) {
-        self = org.apache.flex.utils.MXMLDataInterpreter;
-        self.generateMXMLInstances(
-            document, comp, children, opt_recursive);
-        if (typeof comp.childrenAdded === 'function')
-          comp.childrenAdded();
-      } else if (comp.setMXMLDescriptor) {
-        comp.setMXMLDescriptor(children);
-      }
-    }
+    comp.addEventListener(name, goog.bind(value, document));
+  }
 
-    if (id) {
-      if (typeof(document['set_' + id]) === 'function') {
-        document['set_' + id](comp);
-      } else {
-        document[id] = comp;
-      }
-    }
+  children = data[i++];
+  if (children && comp["setMXMLDescriptor"]) {
+    comp["setMXMLDescriptor"](document, children);
+  }
+  if (parent && org.apache.flex.utils.Language.is(comp,
+      org.apache.flex.core.IUIBase)) {
+    parent.addElement(comp);
+  }
 
-    if (typeof(comp.setDocument) === 'function') {
-      comp.setDocument(document, id);
+  if (children) {
+    if (!comp["setMXMLDescriptor"]) {
+      self = org.apache.flex.utils.MXMLDataInterpreter;
+      self.generateMXMLInstances(
+            document, comp, children);
+      if (typeof comp.childrenAdded === 'function')
+        comp.childrenAdded();
     }
+  }
 
-    if (goog.isFunction(comp.finalizeElement)) {
-      comp.finalizeElement();
+  if (id) {
+    if (typeof(document['set_' + id]) === 'function') {
+      document['set_' + id](comp);
+    } else {
+      document[id] = comp;
     }
+  }
 
-    comps.push(comp);
+  if (typeof(comp.setDocument) === 'function') {
+    comp.setDocument(document, id);
+  }
 
-    if (dispatchBeadsAdded) {
-      comp.dispatchEvent('beadsAdded');
-    }
+  if (goog.isFunction(comp.finalizeElement)) {
+    comp.finalizeElement();
   }
 
-  return comps;
+  return i;
 };
 
 
@@ -304,13 +311,12 @@ org.apache.flex.utils.MXMLDataInterpreter.generateMXMLArray =
  * @param {Object} document The MXML object.
  * @param {Object} parent The parent object.
  * @param {Array} data The data array.
- * @param {boolean=} opt_recursive Whether to create objects in children.
  */
 org.apache.flex.utils.MXMLDataInterpreter.generateMXMLInstances =
-    function(document, parent, data, opt_recursive) {
+    function(document, parent, data) {
   if (data) {
     org.apache.flex.utils.MXMLDataInterpreter.generateMXMLArray(
-        document, parent, data, opt_recursive);
+        document, parent, data);
   }
 };
 
@@ -351,7 +357,7 @@ org.apache.flex.utils.MXMLDataInterpreter.generateMXMLProperties =
     value = data[i++];
 
     if (simple === null) {
-      value = generateMXMLArray(host, null, value, true);
+      value = generateMXMLArray(host, null, value);
     } else if (simple === false) {
       value = generateMXMLObject(host, value);
     }
@@ -377,7 +383,7 @@ org.apache.flex.utils.MXMLDataInterpreter.generateMXMLProperties =
     value = data[i++];
 
     if (simple === null) {
-      value = generateMXMLArray(host, null, value, true);
+      value = generateMXMLArray(host, null, value);
     } else if (simple === false) {
       value = generateMXMLObject(host, value);
     } else {
@@ -403,7 +409,7 @@ org.apache.flex.utils.MXMLDataInterpreter.generateMXMLProperties =
     value = data[i++];
 
     if (simple === null) {
-      value = generateMXMLArray(host, null, value, true);
+      value = generateMXMLArray(host, null, value);
     } else if (simple === false) {
       value = generateMXMLObject(host, value);
     }