Adding boxselectionstart and boxselectionend events.
Whitespace fixed from patch, and removed docs for beforefeatureselected and featureselected events because they are fired on the layer, not the control. p=mosesonline, r=me (closes http://trac.osgeo.org/openlayers/ticket/3538)
This commit is contained in:
@@ -26,6 +26,8 @@ OpenLayers.Control.SelectFeature = OpenLayers.Class(OpenLayers.Control, {
|
||||
* - *beforefeaturehighlighted* Triggered before a feature is highlighted
|
||||
* - *featurehighlighted* Triggered when a feature is highlighted
|
||||
* - *featureunhighlighted* Triggered when a feature is unhighlighted
|
||||
* - *boxselectionstart* Triggered before box selection starts
|
||||
* - *boxselectionend* Triggered after box selection ends
|
||||
*/
|
||||
|
||||
/**
|
||||
@@ -556,6 +558,7 @@ OpenLayers.Control.SelectFeature = OpenLayers.Class(OpenLayers.Control, {
|
||||
var prevMultiple = this.multiple;
|
||||
this.multiple = true;
|
||||
var layers = this.layers || [this.layer];
|
||||
this.events.triggerEvent("boxselectionstart", {layers: layers});
|
||||
var layer;
|
||||
for(var l=0; l<layers.length; ++l) {
|
||||
layer = layers[l];
|
||||
@@ -577,6 +580,7 @@ OpenLayers.Control.SelectFeature = OpenLayers.Class(OpenLayers.Control, {
|
||||
}
|
||||
}
|
||||
this.multiple = prevMultiple;
|
||||
this.events.triggerEvent("boxselectionend", {layers: layers});
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
@@ -173,6 +173,47 @@
|
||||
|
||||
}
|
||||
|
||||
|
||||
function test_selectBox_events(t){
|
||||
t.plan(8);
|
||||
var map = new OpenLayers.Map("map");
|
||||
var layer1 = new OpenLayers.Layer.Vector();
|
||||
map.addLayer(layer1);
|
||||
map.setBaseLayer(layer1);
|
||||
var layer2 = new OpenLayers.Layer.Vector();
|
||||
map.addLayer(layer2);
|
||||
map.setCenter(new OpenLayers.LonLat(1,1));
|
||||
var feature = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(1,1));
|
||||
layer1.addFeatures([feature]);
|
||||
var control = new OpenLayers.Control.SelectFeature(layer1);
|
||||
control.setMap(map);
|
||||
map.getLonLatFromPixel = function(arg) {
|
||||
return new OpenLayers.LonLat(arg.x, arg.y);
|
||||
}
|
||||
control.activate();
|
||||
var firesBoxselectionstart = false;
|
||||
var beforeSelectingNumberOfFeatures = -1;
|
||||
var firesBoxselectionend = false;
|
||||
var afterSelectingNumberOfFeatures = -1;
|
||||
control.events.register("boxselectionstart",null, function(e){
|
||||
firesBoxselectionstart=true;
|
||||
t.eq(e.layers.length,1,"right number of layers in event boxselectionstart");
|
||||
t.eq(layer1.id, e.layers[0].id,"correct layer in event boxselectionstart");
|
||||
beforeSelectingNumberOfFeatures = e.layers[0].selectedFeatures.length;
|
||||
});
|
||||
control.events.register("boxselectionend",null, function(e){
|
||||
firesBoxselectionend=true;
|
||||
t.eq(e.layers.length,1,"right number of layers in event boxselectionend");
|
||||
t.eq(layer1.id, e.layers[0].id,"correct layer in event boxselectionend");
|
||||
afterSelectingNumberOfFeatures = e.layers[0].selectedFeatures.length;
|
||||
});
|
||||
var bounds = new OpenLayers.Bounds(-1, -1, 2, 2);
|
||||
control.selectBox(bounds);
|
||||
t.ok(firesBoxselectionstart,"selectBox fires boxselectionstart event");
|
||||
t.eq(beforeSelectingNumberOfFeatures,0,"boxselectionstart fires before selection of feature");
|
||||
t.ok(firesBoxselectionend,"selectBox fires boxselectionend event");
|
||||
t.eq(afterSelectingNumberOfFeatures,1,"boxselectionend fires after feature selected");
|
||||
}
|
||||
function test_Control_SelectFeature_activate(t) {
|
||||
t.plan(4);
|
||||
var map = new OpenLayers.Map("map");
|
||||
|
||||
Reference in New Issue
Block a user