[Commits] r1115 - in core/trunk/geoext: lib/GeoExt/widgets lib/GeoExt/widgets/tree tests/lib/GeoExt/widgets tests/lib/GeoExt/widgets/tree

commits at geoext.org commits at geoext.org
Fri Jun 19 16:35:06 CEST 2009


Author: bartvde
Date: 2009-06-19 16:35:06 +0200 (Fri, 19 Jun 2009)
New Revision: 1115

Modified:
   core/trunk/geoext/lib/GeoExt/widgets/LegendPanel.js
   core/trunk/geoext/lib/GeoExt/widgets/tree/LayerNode.js
   core/trunk/geoext/tests/lib/GeoExt/widgets/LegendPanel.html
   core/trunk/geoext/tests/lib/GeoExt/widgets/tree/LayerNode.html
Log:
make sure legend and layer nodes update when layer name is changed r=ahovecar (closes #96)

Modified: core/trunk/geoext/lib/GeoExt/widgets/LegendPanel.js
===================================================================
--- core/trunk/geoext/lib/GeoExt/widgets/LegendPanel.js	2009-06-19 12:36:28 UTC (rev 1114)
+++ core/trunk/geoext/lib/GeoExt/widgets/LegendPanel.js	2009-06-19 14:35:06 UTC (rev 1115)
@@ -129,6 +129,11 @@
     onStoreUpdate: function(store, record, operation) {
         var layer = record.get('layer');
         var legend = this.getComponent(layer.id);
+        if ((this.showTitle && !record.get('hideTitle')) && 
+            (legend.items.get(0).text !== record.get('title'))) {
+                // we need to update the title
+                legend.items.get(0).setText(record.get('title'));
+        }
         if (legend) {
             legend.setVisible(layer.getVisibility() && 
                 layer.displayInLayerSwitcher && !record.get('hideInLegend'));
@@ -281,4 +286,4 @@
     
 });
 
-Ext.reg('gx_legendpanel', GeoExt.LegendPanel);
\ No newline at end of file
+Ext.reg('gx_legendpanel', GeoExt.LegendPanel);

Modified: core/trunk/geoext/lib/GeoExt/widgets/tree/LayerNode.js
===================================================================
--- core/trunk/geoext/lib/GeoExt/widgets/tree/LayerNode.js	2009-06-19 12:36:28 UTC (rev 1114)
+++ core/trunk/geoext/lib/GeoExt/widgets/tree/LayerNode.js	2009-06-19 14:35:06 UTC (rev 1115)
@@ -266,6 +266,7 @@
         this.layerStore.on({
             "add": this.onStoreAdd,
             "remove": this.onStoreRemove,
+            "update": this.onStoreUpdate,
             scope: this
         });
     },
@@ -305,7 +306,21 @@
             this.getUI().hide();
         }
     },
-    
+
+    /** private: method[onStoreUpdate]
+     *  :param store: ``Ext.data.Store``
+     *  :param record: ``Ext.data.Record``
+     *  :param operation: ``String``
+     *  
+     *  Listener for the store's update event.
+     */
+    onStoreUpdate: function(store, record, operation) {
+    	var layer = record.get("layer");
+        if(this.layer == layer && this.text !== layer.name) {
+            this.setText(layer.name);
+        }
+    },
+
     /** private: method[addChildNodes]
      *  Calls the add method of a node type configured as ``childNodeType``
      *  to add children.
@@ -321,13 +336,20 @@
     /** private: method[destroy]
      */
     destroy: function() {
-        this.layer.events.un({
-            "visibilitychanged": this.onLayerVisibilityChanged,
-            scope: this
-        });
+        var layer = this.layer;
+        if (layer instanceof OpenLayers.Layer) {
+            layer.events.un({
+                "visibilitychanged": this.onLayerVisibilityChanged,
+                scope: this
+            });
+        }
         delete this.layer;
-        this.layerStore.un("add", this.onStoreAdd, this);
-        this.layerStore.un("remove", this.onStoreRemove, this);
+        var layerStore = this.layerStore;
+        if(layerStore) {
+            this.layerStore.un("add", this.onStoreAdd, this);
+            this.layerStore.un("remove", this.onStoreRemove, this);
+            this.layerStore.un("update", this.onStoreUpdate, this);
+        }
         delete this.layerStore;
         this.un("checkchange", this.onCheckChange, this);
 

Modified: core/trunk/geoext/tests/lib/GeoExt/widgets/LegendPanel.html
===================================================================
--- core/trunk/geoext/tests/lib/GeoExt/widgets/LegendPanel.html	2009-06-19 12:36:28 UTC (rev 1114)
+++ core/trunk/geoext/tests/lib/GeoExt/widgets/LegendPanel.html	2009-06-19 14:35:06 UTC (rev 1115)
@@ -45,7 +45,7 @@
             mapPanel.layers.getAt(0).set("legendURL", newUrl);
 
             var item = lp.getComponent(mapPanel.map.layers[0].id);
-            var url = item.items.items[1].items.items[0].getEl().dom.src;
+            var url = item.items.get(1).items.get(0).getEl().dom.src;
             t.eq(url, newUrl, "Update the image with the provided legendURL");
 
             lp.destroy();
@@ -111,7 +111,7 @@
             lp.render();
 
             var item = lp.getComponent(mapPanel.map.layers[0].id);
-            var url = item.items.items[1].items.items[0].url;
+            var url = item.items.get(1).items.get(0).url;
             var expectedUrl = "/ows?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetLegendGraphic&STYLES=&EXCEPTIONS=application%2Fvnd.ogc.se_xml&FORMAT=image%2Fgif&LAYER=a";
             t.eq(url, expectedUrl, "GetLegendGraphic url is generated correctly");
 
@@ -147,6 +147,37 @@
             mapPanel.destroy();
         }
 
+        function test_changelayername(t) {
+            t.plan(3);
+            var mapPanel = loadMapPanel();
+            var lp  = new GeoExt.LegendPanel({
+                renderTo: 'legendpanel'});
+            lp.render();
+
+            var layer = mapPanel.map.layers[0];
+            var cmp = lp.getComponent(layer.id);
+            t.eq(cmp.items.get(0).text, 'test', "Layer name is test before change");
+
+            layer.setName("My new name");
+
+            t.eq(cmp.items.get(0).text, "My new name", "Layer name was changed correctly to 'My new name'");
+
+            lp.destroy();
+
+            var lp  = new GeoExt.LegendPanel({
+                showTitle: false,
+                renderTo: 'legendpanel'});
+            lp.render();
+
+            layer.setName("My new new name");
+            var cmp = lp.getComponent(layer.id);
+            t.eq(cmp.items.get(0).text, "", "When showTitle is false, there is no label for a layer and it is not changed");
+
+            lp.destroy();
+
+            mapPanel.destroy();
+        }
+
     </script>
   <body>
     <div id="legendpanel"></div>

Modified: core/trunk/geoext/tests/lib/GeoExt/widgets/tree/LayerNode.html
===================================================================
--- core/trunk/geoext/tests/lib/GeoExt/widgets/tree/LayerNode.html	2009-06-19 12:36:28 UTC (rev 1114)
+++ core/trunk/geoext/tests/lib/GeoExt/widgets/tree/LayerNode.html	2009-06-19 14:35:06 UTC (rev 1115)
@@ -68,6 +68,33 @@
             mapPanel.render("map");
             
         }
+
+        function test_changelayername(t) {
+            t.plan(1);
+
+            var layer = new OpenLayers.Layer("test");
+
+            var mapPanel = new GeoExt.MapPanel({
+                layers: [layer],
+                allOverlays: true
+            });
+
+            var node = new GeoExt.tree.LayerNode({
+                layer: "test",
+                layerStore: mapPanel.layers
+            });
+
+            var panel = new Ext.tree.TreePanel({
+                 root: node
+            });
+            panel.render(document.body);
+
+            layer.setName("My new name");
+            t.eq(node.text, "My new name", "Node is named 'My new name' after layer setName is called");
+
+            node.destroy();
+            mapPanel.destroy();
+        }
         
         </script>
     </head>
@@ -75,4 +102,4 @@
         <div id="map" style="width: 100px; height: 100px;"></div>
         <div id="tree" style="width: 100px; height: 100px;"></div>
     </body>
-</html>
\ No newline at end of file
+</html>



More information about the Commits mailing list