You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by pe...@apache.org on 2013/11/13 17:23:14 UTC

git commit: [flex-asjs] [refs/heads/develop] - Added missing pieces to make custom itemRenderers work.

Updated Branches:
  refs/heads/develop 2d8d5e441 -> e19986a62


Added missing pieces to make custom itemRenderers work.


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

Branch: refs/heads/develop
Commit: e19986a621093e3370183ddfad4547f6d6ed136e
Parents: 2d8d5e4
Author: Peter Ent <pe...@apache.org>
Authored: Wed Nov 13 11:22:59 2013 -0500
Committer: Peter Ent <pe...@apache.org>
Committed: Wed Nov 13 11:22:59 2013 -0500

----------------------------------------------------------------------
 .../core/IDataProviderItemRendererMapper.js     | 23 +++++++++++++++
 .../flex/core/IItemRendererClassFactory.js      | 23 +++++++++++++++
 .../flex/core/ItemRendererClassFactory.js       |  2 ++
 .../org/apache/flex/html/staticControls/List.js | 26 +++++++++++++----
 .../DataItemRendererFactoryForArrayData.js      | 30 +++++++++++++-------
 .../flex/html/staticControls/beads/ListView.js  |  1 +
 .../TextItemRendererFactoryForArrayData.js      |  4 +--
 .../supportClasses/DataItemRenderer.js          |  2 ++
 .../supportClasses/StringItemRenderer.js        |  2 ++
 9 files changed, 96 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e19986a6/frameworks/js/FlexJS/src/org/apache/flex/core/IDataProviderItemRendererMapper.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/core/IDataProviderItemRendererMapper.js b/frameworks/js/FlexJS/src/org/apache/flex/core/IDataProviderItemRendererMapper.js
new file mode 100644
index 0000000..e31a184
--- /dev/null
+++ b/frameworks/js/FlexJS/src/org/apache/flex/core/IDataProviderItemRendererMapper.js
@@ -0,0 +1,23 @@
+/**
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+goog.provide('org.apache.flex.core.IDataProviderItemRendererMapper');
+
+
+
+/**
+ * @interface
+ */
+org.apache.flex.core.IDataProviderItemRendererMapper = function() {
+};

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e19986a6/frameworks/js/FlexJS/src/org/apache/flex/core/IItemRendererClassFactory.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/core/IItemRendererClassFactory.js b/frameworks/js/FlexJS/src/org/apache/flex/core/IItemRendererClassFactory.js
new file mode 100644
index 0000000..caa243d
--- /dev/null
+++ b/frameworks/js/FlexJS/src/org/apache/flex/core/IItemRendererClassFactory.js
@@ -0,0 +1,23 @@
+/**
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+goog.provide('org.apache.flex.core.IItemRendererClassFactory');
+
+
+
+/**
+ * @interface
+ */
+org.apache.flex.core.IItemRendererClassFactory = function() {
+};

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e19986a6/frameworks/js/FlexJS/src/org/apache/flex/core/ItemRendererClassFactory.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/core/ItemRendererClassFactory.js b/frameworks/js/FlexJS/src/org/apache/flex/core/ItemRendererClassFactory.js
index 47a9f55..eefa209 100644
--- a/frameworks/js/FlexJS/src/org/apache/flex/core/ItemRendererClassFactory.js
+++ b/frameworks/js/FlexJS/src/org/apache/flex/core/ItemRendererClassFactory.js
@@ -14,12 +14,14 @@
 
 goog.provide('org.apache.flex.core.ItemRendererClassFactory');
 
+goog.require('org.apache.flex.core.IItemRendererClassFactory');
 goog.require('org.apache.flex.core.ValuesManager');
 
 
 
 /**
  * @constructor
+ * @implements {org.apache.flex.core.IItemRendererClassFactory}
  */
 org.apache.flex.core.ItemRendererClassFactory = function() {
   this.itemRendererClass = null;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e19986a6/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/List.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/List.js b/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/List.js
index 39470f8..b24d3bf 100644
--- a/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/List.js
+++ b/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/List.js
@@ -14,12 +14,16 @@
 
 goog.provide('org.apache.flex.html.staticControls.List');
 
-goog.require('org.apache.flex.core.IItemRenderer');
+goog.require('org.apache.flex.core.IDataProviderItemRendererMapper');
+goog.require('org.apache.flex.core.IItemRendererClassFactory');
+goog.require('org.apache.flex.core.ItemRendererClassFactory');
 goog.require('org.apache.flex.core.ListBase');
+goog.require('org.apache.flex.core.ValuesManager');
 goog.require('org.apache.flex.html.staticControls.beads.ListView');
 goog.require('org.apache.flex.html.staticControls.beads.TextItemRendererFactoryForArrayData');
 goog.require('org.apache.flex.html.staticControls.beads.controllers.ListSingleSelectionMouseController');
 goog.require('org.apache.flex.html.staticControls.beads.models.ArraySelectionModel');
+goog.require('org.apache.flex.html.staticControls.supportClasses.DataItemRenderer');
 
 
 
@@ -53,12 +57,24 @@ org.apache.flex.html.staticControls.List.prototype.addedToParent =
     function() {
   goog.base(this, 'addedToParent');
 
-  var c = this.getBeadByType(org.apache.flex.core.IItemRenderer);
+  var c = this.getBeadByType(org.apache.flex.core.IDataProviderItemRendererMapper);
   if (c == null) {
-    this.addBead(new
-                 org.apache.flex.html.staticControls.beads.
-                 TextItemRendererFactoryForArrayData());
+    c = org.apache.flex.core.ValuesManager.valuesImpl.getValue(this,'iDataProviderItemRendererMapper');
+    if (c) {
+      var bead = new c;
+      this.addBead(bead);
+    }
   }
+//  var c = this.getBeadByType(org.apache.flex.core.IItemRenderer);
+//  if (c == null) {
+//    c = this.getBeadByType(
+//          org.apache.flex.html.staticControls.supportClasses.DataItemRenderer);
+//    if (c == null) {
+//      this.addBead(new
+//                   org.apache.flex.html.staticControls.beads.
+//                   TextItemRendererFactoryForArrayData());
+//    }
+//  }
 };
 
 

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e19986a6/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/beads/DataItemRendererFactoryForArrayData.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/beads/DataItemRendererFactoryForArrayData.js b/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/beads/DataItemRendererFactoryForArrayData.js
index 93e4602..cbbc2c7 100644
--- a/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/beads/DataItemRendererFactoryForArrayData.js
+++ b/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/beads/DataItemRendererFactoryForArrayData.js
@@ -14,6 +14,7 @@
 
 goog.provide('org.apache.flex.html.staticControls.beads.DataItemRendererFactoryForArrayData');
 
+goog.require('org.apache.flex.core.IDataProviderItemRendererMapper');
 goog.require('org.apache.flex.events.EventDispatcher');
 goog.require('org.apache.flex.html.staticControls.beads.models.ArraySelectionModel');
 goog.require('org.apache.flex.html.staticControls.beads.ListView');
@@ -23,16 +24,11 @@ goog.require('org.apache.flex.html.staticControls.supportClasses.ButtonBarButton
 
 /**
  * @constructor
- * @extends {org.apache.flex.events.EventDispatcher}
+ * @implements {org.apache.flex.core.IDataProviderItemRendererMapper}
  */
 org.apache.flex.html.staticControls.beads.DataItemRendererFactoryForArrayData =
     function() {
-  goog.base(this);
 };
-goog.inherits(
-    org.apache.flex.html.staticControls.
-        beads.DataItemRendererFactoryForArrayData,
-    org.apache.flex.events.EventDispatcher);
 
 
 /**
@@ -60,6 +56,14 @@ org.apache.flex.html.staticControls.beads.DataItemRendererFactoryForArrayData.
 
   this.model.addEventListener('dataProviderChanged',
       goog.bind(this.dataProviderChangedHandler, this));
+      
+  if (this.itemRendererFactory_ == null) {
+    var c = org.apache.flex.core.ValuesManager.valuesImpl.getValue(this.strand_,'iItemRendererClassFactory');
+    this.itemRendererFactory_ = new c;
+    this.strand_.addBead(this.itemRendererFactory_);
+  }
+      
+  this.dataProviderChangedHandler(null);
 };
 
 
@@ -69,6 +73,12 @@ org.apache.flex.html.staticControls.beads.DataItemRendererFactoryForArrayData.
  */
 org.apache.flex.html.staticControls.beads.DataItemRendererFactoryForArrayData.
     prototype.get_itemRendererClass = function() {
+  if (this.itemRendererClass_ == null) {
+    var c = org.apache.flex.core.ValuesManager.valuesImpl.getValue(this.strand_,'iItemRenderer');
+    if (c) {
+      this.itemRendererClass_ = c;
+    }
+  }
   return this.itemRendererClass_;
 };
 
@@ -94,10 +104,10 @@ org.apache.flex.html.staticControls.beads.DataItemRendererFactoryForArrayData.
   dp = this.model.get_dataProvider();
   n = dp.length;
   for (i = 0; i < n; i++) {
-    var expr = 'new ' + String(this.itemRendererClass_) + '()';
-    opt = eval(expr);
-    this.dataGroup.addElement(opt);
-    opt.set_data(dp[i]);
+    var ir = this.itemRendererFactory_.createItemRenderer(this.dataGroup);
+    ir.set_index(i);
+    ir.set_data(dp[i]);
+    this.dataGroup.addElement(ir);
   }
 
   var newEvent = new org.apache.flex.events.Event('itemsCreated');

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e19986a6/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/beads/ListView.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/beads/ListView.js b/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/beads/ListView.js
index 884389c..62e7ccb 100644
--- a/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/beads/ListView.js
+++ b/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/beads/ListView.js
@@ -57,6 +57,7 @@ org.apache.flex.html.staticControls.beads.ListView.prototype.set_strand =
 
   this.dataGroup_ = new
       org.apache.flex.html.staticControls.supportClasses.NonVirtualDataGroup();
+  this.dataGroup_.set_strand(this);
   this.strand_.addElement(this.dataGroup_);
 };
 

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e19986a6/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/beads/TextItemRendererFactoryForArrayData.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/beads/TextItemRendererFactoryForArrayData.js b/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/beads/TextItemRendererFactoryForArrayData.js
index 1d7578d..6ff106d 100644
--- a/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/beads/TextItemRendererFactoryForArrayData.js
+++ b/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/beads/TextItemRendererFactoryForArrayData.js
@@ -14,7 +14,7 @@
 
 goog.provide('org.apache.flex.html.staticControls.beads.TextItemRendererFactoryForArrayData');
 
-goog.require('org.apache.flex.core.IItemRenderer');
+goog.require('org.apache.flex.core.IDataProviderItemRendererMapper');
 goog.require('org.apache.flex.events.EventDispatcher');
 goog.require('org.apache.flex.html.staticControls.beads.models.ArraySelectionModel');
 
@@ -27,7 +27,7 @@ goog.require('org.apache.flex.html.staticControls.beads.models.ArraySelectionMod
  */
 org.apache.flex.html.staticControls.beads.TextItemRendererFactoryForArrayData =
     function() {
-  goog.base(this);
+    goog.base(this);
 };
 goog.inherits(
     org.apache.flex.html.staticControls.

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e19986a6/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/supportClasses/DataItemRenderer.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/supportClasses/DataItemRenderer.js b/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/supportClasses/DataItemRenderer.js
index 1d5a3a3..07417b2 100644
--- a/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/supportClasses/DataItemRenderer.js
+++ b/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/supportClasses/DataItemRenderer.js
@@ -14,6 +14,7 @@
 
 goog.provide('org.apache.flex.html.staticControls.supportClasses.DataItemRenderer');
 
+goog.require('org.apache.flex.core.IItemRenderer');
 goog.require('org.apache.flex.core.UIBase');
 goog.require('org.apache.flex.html.staticControls.beads.controllers.ItemRendererMouseController');
 
@@ -22,6 +23,7 @@ goog.require('org.apache.flex.html.staticControls.beads.controllers.ItemRenderer
 /**
  * @constructor
  * @extends {org.apache.flex.core.UIBase}
+ * @implements {org.apache.flex.core.IItemRenderer}
  */
 org.apache.flex.html.staticControls.supportClasses.DataItemRenderer =
     function() {

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e19986a6/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/supportClasses/StringItemRenderer.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/supportClasses/StringItemRenderer.js b/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/supportClasses/StringItemRenderer.js
index dd37f50..cdf61da 100644
--- a/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/supportClasses/StringItemRenderer.js
+++ b/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/supportClasses/StringItemRenderer.js
@@ -14,6 +14,7 @@
 
 goog.provide('org.apache.flex.html.staticControls.supportClasses.StringItemRenderer');
 
+goog.require('org.apache.flex.core.IItemRenderer');
 goog.require('org.apache.flex.core.UIBase');
 goog.require('org.apache.flex.html.staticControls.beads.controllers.ItemRendererMouseController');
 
@@ -22,6 +23,7 @@ goog.require('org.apache.flex.html.staticControls.beads.controllers.ItemRenderer
 /**
  * @constructor
  * @extends {org.apache.flex.core.UIBase}
+ * @implements {org.apache.flex.core.IItemRenderer}
  */
 org.apache.flex.html.staticControls.supportClasses.StringItemRenderer =
     function() {