Layer.Vector fires featuresadded event with shapes vetoed by beforefeatureadded, p=timbonicus, r=me (closes #2549)

git-svn-id: http://svn.openlayers.org/trunk/openlayers@10362 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
Éric Lemoine
2010-05-28 12:30:52 +00:00
parent 8b0712bb24
commit 88f2922f54
2 changed files with 52 additions and 4 deletions

View File

@@ -643,6 +643,52 @@
map.destroy();
}
function test_vectorBeforeFeatureAddedVeto(t) {
t.plan( 4 );
var map = new OpenLayers.Map('map');
layer = new OpenLayers.Layer.Vector("");
map.addLayer(layer);
var feature = new OpenLayers.Feature.Vector(new OpenLayers.Geometry(1.0, 1.0));
layer.addFeatures([feature]);
var addedFeatures = [];
var beforefeatureadded_veto = function(evt) { return false; };
layer.events.register("beforefeatureadded", layer, beforefeatureadded_veto);
layer.events.register("featuresadded", layer, function(evt) {
if (evt.features) {
for (var i = 0; i < evt.features.length; i++) {
addedFeatures.push(evt.features[i]);
}
}
});
var blankFeatures = [
new OpenLayers.Feature.Vector(new OpenLayers.Geometry(1.0, 1.0)),
new OpenLayers.Feature.Vector(new OpenLayers.Geometry(1.0, 1.0))];
layer.addFeatures(blankFeatures);
t.eq(layer.features.length, 1,
"features not added to layer after beforefeatureadded veto");
t.eq(addedFeatures.length, 0,
"no features sent to featuresadded on feature veto");
addedFeatures = [];
layer.events.unregister("beforefeatureadded", layer, beforefeatureadded_veto);
beforefeatureadded_veto = function(evt) { return true; };
layer.events.register("beforefeatureadded", layer, beforefeatureadded_veto);
layer.addFeatures(blankFeatures);
t.eq(layer.features.length, 3,
"features added to layer as expected");
t.eq(addedFeatures.length, 2,
"featuresadded event received expected number of features");
}
</script>
</head>
<body>