[Commits] r2121 - in core/branches/0.7/geoext: lib/GeoExt/widgets tests/lib/GeoExt/widgets

commits at geoext.org commits at geoext.org
Tue Apr 27 09:31:30 CEST 2010


Author: elemoine
Date: 2010-04-27 09:31:30 +0200 (Tue, 27 Apr 2010)
New Revision: 2121

Modified:
   core/branches/0.7/geoext/lib/GeoExt/widgets/LayerLegend.js
   core/branches/0.7/geoext/lib/GeoExt/widgets/LegendPanel.js
   core/branches/0.7/geoext/tests/lib/GeoExt/widgets/LayerLegend.html
   core/branches/0.7/geoext/tests/lib/GeoExt/widgets/UrlLegend.html
Log:
pull up patch for ticket 265 (closes #265)

Modified: core/branches/0.7/geoext/lib/GeoExt/widgets/LayerLegend.js
===================================================================
--- core/branches/0.7/geoext/lib/GeoExt/widgets/LayerLegend.js	2010-04-27 07:30:52 UTC (rev 2120)
+++ core/branches/0.7/geoext/lib/GeoExt/widgets/LayerLegend.js	2010-04-27 07:31:30 UTC (rev 2121)
@@ -57,8 +57,31 @@
             cls: 'x-form-item x-form-item-label' +
                 (this.labelCls ? ' ' + this.labelCls : '')
         });
+        this.layerRecord &&
+            this.layerRecord.store.on("update", this.onStoreUpdate, this);
     },
 
+    /** private: method[onStoreUpdate]
+     *  Update a the legend. Gets called when the store fires the update event.
+     *  This usually means the visibility of the layer, its style or title
+     *  has changed.
+     *
+     *  :param store: ``Ext.data.Store`` The store in which the record was
+     *      changed.
+     *  :param record: ``Ext.data.Record`` The record object corresponding
+     *      to the updated layer.
+     *  :param operation: ``String`` The type of operation.
+     */
+    onStoreUpdate: function(store, record, operation) {
+        if(record === this.layerRecord) {
+            var layer = record.get('layer');
+            this.setVisible(layer.getVisibility() &&
+                layer.calculateInRange() && layer.displayInLayerSwitcher &&
+                !record.get('hideInLegend'));
+            this.update();
+        }
+    },
+
     /** private: method[update]
      *  Updates the legend.
      */
@@ -87,6 +110,14 @@
             }
         }
         return title;
+    },
+    
+    /** private: method[beforeDestroy]
+     */
+    beforeDestroy: function() {
+        this.layerRecord && this.layerRecord.store &&
+            this.layerRecord.store.un("update", this.onStoreUpdate, this);
+        GeoExt.LayerLegend.superclass.beforeDestroy.apply(this, arguments);
     }
 
 });

Modified: core/branches/0.7/geoext/lib/GeoExt/widgets/LegendPanel.js
===================================================================
--- core/branches/0.7/geoext/lib/GeoExt/widgets/LegendPanel.js	2010-04-27 07:30:52 UTC (rev 2120)
+++ core/branches/0.7/geoext/lib/GeoExt/widgets/LegendPanel.js	2010-04-27 07:31:30 UTC (rev 2121)
@@ -84,7 +84,6 @@
                 "add": this.onStoreAdd,
                 "remove": this.onStoreRemove,
                 "clear": this.onStoreClear,
-                "update": this.onStoreUpdate,
                 scope: this
             });
         }
@@ -129,27 +128,6 @@
         return this.id + "-" + layer.id;
     },
 
-    /** private: method[onStoreUpdate]
-     *  Update a layer within the legend panel. Gets called when the store
-     *  fires the update event. This usually means the visibility of the layer
-     *  has changed.
-     *
-     *  :param store: ``Ext.data.Store`` The store in which the record was
-     *      changed.
-     *  :param record: ``Ext.data.Record`` The record object corresponding
-     *      to the updated layer.
-     *  :param operation: ``String`` The type of operation.
-     */
-    onStoreUpdate: function(store, record, operation) {
-        var layer = record.get('layer');
-        var legend = this.items ? this.getComponent(this.getIdForLayer(layer)) : null;
-        if (legend) {
-            legend.setVisible(layer.getVisibility() && layer.calculateInRange() &&
-                layer.displayInLayerSwitcher && !record.get('hideInLegend'));
-            legend.update();
-        }
-    },
-
     /** private: method[onStoreAdd]
      *  Private method called when a layer is added to the store.
      *

Modified: core/branches/0.7/geoext/tests/lib/GeoExt/widgets/LayerLegend.html
===================================================================
--- core/branches/0.7/geoext/tests/lib/GeoExt/widgets/LayerLegend.html	2010-04-27 07:30:52 UTC (rev 2120)
+++ core/branches/0.7/geoext/tests/lib/GeoExt/widgets/LayerLegend.html	2010-04-27 07:31:30 UTC (rev 2121)
@@ -10,11 +10,13 @@
 
         function test_initialize(t) {
             t.plan(3);
+            var store = new GeoExt.data.LayerStore();
 
             var Rec = GeoExt.data.LayerRecord.create();
             var rec = new Rec({
                 layer: new OpenLayers.Layer("foo")
             });
+            store.add(rec);
             var legend = new GeoExt.LayerLegend({
                 layerRecord: rec,
                 renderTo: "legend"
@@ -22,11 +24,13 @@
             t.ok(legend instanceof GeoExt.LayerLegend, "Instance created correctly");
             t.eq(legend.items.get(0).text, "foo", "Layer text set correctly");
             legend.destroy();
+            store.remove(rec);
             
             rec = new Rec({
                 layer: new OpenLayers.Layer("foo"),
                 hideTitle: true
             });
+            store.add(rec);
             legend = new GeoExt.LayerLegend({
                 layerRecord: rec,
                 renderTo: "legend"
@@ -37,6 +41,7 @@
         
         function test_update(t) {
             t.plan(3);
+            var store = new GeoExt.data.LayerStore();
             
             var Rec = GeoExt.data.LayerRecord.create([{
                 name: "hideTitle", type: "boolean"
@@ -44,37 +49,39 @@
             var rec = new Rec({
                 layer: new OpenLayers.Layer("foo")
             });
+            store.add(rec);
             var legend = new GeoExt.LayerLegend({
                 layerRecord: rec,
                 renderTo: "legend"
             });
             rec.set("title", "bar");
-            legend.update();
             t.eq(legend.items.get(0).text, "bar", "Layer text updated correctly");
             legend.destroy();
+            store.remove(rec);
 
             rec = new Rec({
                 layer: new OpenLayers.Layer("foo"),
                 hideTitle: true
             });
+            store.add(rec);
             legend = new GeoExt.LayerLegend({
                 layerRecord: rec,
                 renderTo: "legend"
             });
             rec.set("title", "bar");
-            legend.update();
             t.eq(legend.items.get(0).text, "", "Layer text for record with hideTitle set to true still empty after update.")
             legend.destroy();
+            store.remove(rec);
 
             rec = new Rec({
                 layer: new OpenLayers.Layer("foo")
             });
+            store.add(rec)
             legend = new GeoExt.LayerLegend({
                 layerRecord: rec,
                 legendTitle: "bar",
                 renderTo: "legend"
             });
-            legend.update();
             t.eq(legend.items.get(0).text, "bar", "legendTitle can be used to override layer name")
             legend.destroy();
 

Modified: core/branches/0.7/geoext/tests/lib/GeoExt/widgets/UrlLegend.html
===================================================================
--- core/branches/0.7/geoext/tests/lib/GeoExt/widgets/UrlLegend.html	2010-04-27 07:30:52 UTC (rev 2120)
+++ core/branches/0.7/geoext/tests/lib/GeoExt/widgets/UrlLegend.html	2010-04-27 07:31:30 UTC (rev 2121)
@@ -10,11 +10,13 @@
 
         function test_initialize(t) {
             t.plan(1);
+            var store = new GeoExt.data.LayerStore();
 
             var Rec = GeoExt.data.LayerRecord.create();
             var rec = new Rec({
                 layer: new OpenLayers.Layer("foo")
             });
+            store.add(rec);
             var legend = new GeoExt.UrlLegend({
                 layerRecord: rec,
                 renderTo: "legend"
@@ -25,6 +27,7 @@
         
         function test_render(t) {
             t.plan(2);
+            var store = new GeoExt.data.LayerStore();
 
             var Rec = GeoExt.data.LayerRecord.create([{
                 name: "legendURL"
@@ -33,6 +36,7 @@
                 layer: new OpenLayers.Layer("foo"),
                 legendURL: Ext.BLANK_IMAGE_URL+"?foo"
             });
+            store.add(rec);
             var legend = new GeoExt.UrlLegend({
                 layerRecord: rec,
                 renderTo: "legend"
@@ -44,6 +48,7 @@
 
         function test_update(t) {
             t.plan(1);
+            var store = new GeoExt.data.LayerStore();
             
             var Rec = GeoExt.data.LayerRecord.create([{
                 name: "legendURL"
@@ -52,14 +57,14 @@
                 layer: new OpenLayers.Layer("foo"),
                 legendURL: "http://path/to/foo"
             });
+            store.add(rec);
             var legend = new GeoExt.UrlLegend({
                 layerRecord: rec,
                 renderTo: "legend"
             });
             rec.set("legendURL", Ext.BLANK_IMAGE_URL+"?foo");
-            legend.update();
             t.eq(legend.items.get(1).url, Ext.BLANK_IMAGE_URL+"?foo", "Legend content updated correctly");
-
+            legend.destroy();
         }
 
         function test_supports(t) {



More information about the Commits mailing list