[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