Changeset 10035
- Timestamp:
- 02/09/10 12:30:02 (1 month ago)
- Files:
-
- trunk/openlayers/lib/OpenLayers/Control/GetFeature.js (modified) (4 diffs)
- trunk/openlayers/tests/Control/GetFeature.html (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/openlayers/lib/OpenLayers/Control/GetFeature.js
r9770 r10035 162 162 * selected. The event object has a feature property with the 163 163 * selected feature 164 * beforefeaturesselected - Triggered when <click> is true before a 165 * set of features is selected. The event object is an array of 166 * feature properties with the features about to be selected. 167 * Return false after receiving this event to discontinue processing 168 * of all featureselected events and the featuresselected event. 169 * featuresselected - Triggered when <click> is true and a set of 170 * features is selected. The event object is an array of feature 171 * properties of the selected features 164 172 * featureunselected - Triggered when <click> is true and a feature is 165 173 * unselected. The event object has a feature property with the … … 172 180 * moved away from a hover-selected feature 173 181 */ 174 EVENT_TYPES: ["featureselected", "featureunselected", "clickout", 175 "beforefeatureselected", "hoverfeature", "outfeature"], 182 EVENT_TYPES: ["featureselected", "featuresselected", "featureunselected", 183 "clickout", "beforefeatureselected", "beforefeaturesselected", 184 "hoverfeature", "outfeature"], 176 185 177 186 /** … … 436 445 * Method: select 437 446 * Add feature to the hash of selected features and trigger the 438 * featureselected event.447 * featureselected and featuresselected events. 439 448 * 440 449 * Parameters: … … 449 458 } 450 459 451 var feature; 452 for(var i=0, len=features.length; i<len; ++i) { 453 feature = features[i]; 454 if(this.features[feature.fid || feature.id]) { 455 if(this.modifiers.toggle) { 456 this.unselect(this.features[feature.fid || feature.id]); 457 } 458 } else { 459 cont = this.events.triggerEvent("beforefeatureselected", { 460 feature: feature 461 }); 462 if(cont !== false) { 463 this.features[feature.fid || feature.id] = feature; 464 465 this.events.triggerEvent("featureselected", 466 {feature: feature}); 460 cont = this.events.triggerEvent("beforefeaturesselected", { 461 features: features 462 }); 463 if(cont !== false) { 464 var selectedFeatures = []; 465 var feature; 466 for(var i=0, len=features.length; i<len; ++i) { 467 feature = features[i]; 468 if(this.features[feature.fid || feature.id]) { 469 if(this.modifiers.toggle) { 470 this.unselect(this.features[feature.fid || feature.id]); 471 } 472 } else { 473 cont = this.events.triggerEvent("beforefeatureselected", { 474 feature: feature 475 }); 476 if(cont !== false) { 477 this.features[feature.fid || feature.id] = feature; 478 selectedFeatures.push(feature); 479 480 this.events.triggerEvent("featureselected", 481 {feature: feature}); 482 } 467 483 } 468 484 } 485 this.events.triggerEvent("featuresselected", { 486 features: selectedFeatures 487 }); 469 488 } 470 489 }, trunk/openlayers/tests/Control/GetFeature.html
r9770 r10035 23 23 24 24 function test_Control_GetFeature_select(t) { 25 t.plan( 3);25 t.plan(5); 26 26 var map = new OpenLayers.Map("map"); 27 27 var layer = new OpenLayers.Layer.WMS("foo", "wms", { … … 32 32 var feature1 = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(1,2)); 33 33 var feature2 = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(2,3)); 34 var feature3 = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(3,1)); 34 35 var control = new OpenLayers.Control.GetFeature({ 35 36 protocol: new OpenLayers.Protocol({ 36 37 read: function(obj) { 37 38 obj.callback.call(obj.scope, { 38 features: [feature1, feature2 ],39 features: [feature1, feature2, feature3], 39 40 success: function() {return true;} 40 41 }); … … 52 53 control.events.unregister("featureselected", this, singleTest); 53 54 54 var features = [] 55 var count = 0; 56 var beforeFeatureSelected = function(evt) { 57 count++; 58 return count < 3; 59 } 60 var features = []; 55 61 var boxTest = function(evt) { 56 62 features.push(evt.feature); 57 63 } 64 var beforeFeaturesSelected = function(evt) { 65 t.eq(evt.features.length, 3, "3 features passed to the beforefeaturesselected handler"); 66 } 67 var featuresSelected = function(evt) { 68 t.eq(evt.features.length, 2, "2 features passed to the featuresselected handler"); 69 } 70 control.events.register("beforefeatureselected", this, beforeFeatureSelected); 58 71 control.events.register("featureselected", this, boxTest); 72 control.events.register("beforefeaturesselected", this, beforeFeaturesSelected); 73 control.events.register("featuresselected", this, featuresSelected); 59 74 control.selectBox(new OpenLayers.Bounds(0,0,4,4)); 75 control.events.unregister("beforefeatureselected", this, beforeFeatureSelected); 60 76 control.events.unregister("featureselected", this, boxTest); 77 control.events.unregister("beforefeaturesselected", this, beforeFeaturesSelected); 78 control.events.unregister("featuresselected", this, featuresSelected); 61 79 t.eq(features.length, 2, "2 features inside box selected"); 62 80 t.eq(features[1].id, feature2.id, "featureselected callback called with multiple features");
