[Commits] r1043 - in core/trunk/geoext: lib/GeoExt/data tests/lib/GeoExt/data

commits at geoext.org commits at geoext.org
Thu Jun 11 17:11:31 CEST 2009


Author: ahocevar
Date: 2009-06-11 17:11:30 +0200 (Thu, 11 Jun 2009)
New Revision: 1043

Modified:
   core/trunk/geoext/lib/GeoExt/data/LayerStore.js
   core/trunk/geoext/tests/lib/GeoExt/data/LayerStore.html
Log:
Synchronize a layer record's title field with its layer's name. r=elemoine (closes #85)


Modified: core/trunk/geoext/lib/GeoExt/data/LayerStore.js
===================================================================
--- core/trunk/geoext/lib/GeoExt/data/LayerStore.js	2009-06-11 09:46:19 UTC (rev 1042)
+++ core/trunk/geoext/lib/GeoExt/data/LayerStore.js	2009-06-11 15:11:30 UTC (rev 1043)
@@ -155,6 +155,7 @@
             "clear": this.onClear,
             "add": this.onAdd,
             "remove": this.onRemove,
+            "update": this.onUpdate,
             scope: this
         });
         this.data.on({
@@ -210,6 +211,8 @@
                         delete this._adding;
                     }
                 }
+            } else if(evt.property === "name") {
+                record.set("title", layer.name);
             } else {
                 this.fireEvent("update", this, record, Ext.data.Record.EDIT);
             }
@@ -328,6 +331,23 @@
             }
         }
     },
+    
+    /** private: method[onUpdate]
+     *  :param store: ``Ext.data.Store``
+     *  :param record: ``Ext.data.Record``
+     *  :param operation: ``Number``
+     * 
+     *  Handler for a store's update event
+     */
+    onUpdate: function(store, record, operation) {
+        if(operation === Ext.data.Record.EDIT) {
+            var layer = record.get("layer");
+            var title = record.get("title");
+            if(title !== layer.name) {
+                layer.setName(title);
+            }
+        }
+    },
 
     /** private: method[removeMapLayer]
      *  :param record: ``Ext.data.Record``

Modified: core/trunk/geoext/tests/lib/GeoExt/data/LayerStore.html
===================================================================
--- core/trunk/geoext/tests/lib/GeoExt/data/LayerStore.html	2009-06-11 09:46:19 UTC (rev 1042)
+++ core/trunk/geoext/tests/lib/GeoExt/data/LayerStore.html	2009-06-11 15:11:30 UTC (rev 1043)
@@ -285,6 +285,26 @@
 
         }
         
+        function test_update(t) {
+            t.plan(2);
+            
+            var map = new OpenLayers.Map("mappanel");
+            var layer = new OpenLayers.Layer("foo");
+            map.addLayer(layer);
+
+            var store = new GeoExt.data.LayerStore({
+                map: map
+            });
+
+            layer.setName("newName");
+            t.eq(store.getAt(0).get("title"), "newName", "record title synced from layer name");
+            
+            store.getAt(0).set("title", "newTitle");
+            t.eq(layer.name, "newTitle", "layer name synced from record title");
+                                    
+            map.destroy();
+        }
+        
         function test_events(t) {
             t.plan(21);
             



More information about the Commits mailing list