From 081ce883fb6fbfb4607ded0f569772e4362cd759 Mon Sep 17 00:00:00 2001 From: bartvde Date: Tue, 17 Nov 2009 07:34:51 +0000 Subject: [PATCH] create an option to cancel adding a layer, r=tschaub (closes #2121) git-svn-id: http://svn.openlayers.org/trunk/openlayers@9802 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf --- lib/OpenLayers/Map.js | 4 +++- tests/Map.html | 15 ++++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/lib/OpenLayers/Map.js b/lib/OpenLayers/Map.js index db66c0f0fa..e197d230eb 100644 --- a/lib/OpenLayers/Map.js +++ b/lib/OpenLayers/Map.js @@ -906,7 +906,9 @@ OpenLayers.Map = OpenLayers.Class({ layer.isBaseLayer = false; } - this.events.triggerEvent("preaddlayer", {layer: layer}); + if (this.events.triggerEvent("preaddlayer", {layer: layer}) === false) { + return; + } layer.div.className = "olLayerDiv"; layer.div.style.overflow = ""; diff --git a/tests/Map.html b/tests/Map.html index 28afb022c6..16b954dda1 100644 --- a/tests/Map.html +++ b/tests/Map.html @@ -84,7 +84,7 @@ } function test_Map_add_layers(t) { - t.plan(6); + t.plan(8); map = new OpenLayers.Map('map'); var layer1 = new OpenLayers.Layer.WMS("Layer 1", "http://octo.metacarta.com/cgi-bin/mapserv?", @@ -101,6 +101,19 @@ "layer1 zIndex is set" ); t.eq( parseInt(layer2.div.style.zIndex), map.Z_INDEX_BASE['BaseLayer'] + 5, "layer2 zIndex is set" ); + + map.events.register('preaddlayer', this, function(evt) { + return !(evt.layer.name === 'donotadd'); + }); + var layer3 = new OpenLayers.Layer.WMS("donotadd", + "http://octo.metacarta.com/cgi-bin/mapserv?", + {map: "/mapdata/vmap_wms.map", layers: "basic"}); + map.addLayers([layer3]); + t.eq(map.layers.length, 2, "layer is not added since preaddlayer returns false"); + layer3.name = 'pleaseadd'; + map.addLayers([layer3]); + t.eq(map.layers.length, 3, "layer is added since preaddlayer returns true"); + } function test_Map_options(t) {