Ticket #1427: t1427.patch
| File t1427.patch, 10.5 kB (added by tschaub, 5 months ago) |
|---|
-
tests/Control/ModifyFeature.html
old new 164 164 } 165 165 166 166 function test_selectFeature(t) { 167 t.plan(15); 168 var layer = new OpenLayers.Layer.Vector(); 167 t.plan(12); 168 var map = new OpenLayers.Map('map'); 169 var layer = new OpenLayers.Layer.Vector("Vectors!", {isBaseLayer: true}); 170 map.addLayer(layer); 171 map.setCenter(new OpenLayers.LonLat(0, 0)); 169 172 var control = new OpenLayers.Control.ModifyFeature(layer); 170 173 control.vertices = []; 171 174 control.virtualVertices = []; 172 layer.events.on({"beforefeaturemodified": function(event) { 173 t.eq(event.feature, fakeFeature, "beforefeaturemodified triggered"); 174 }}); 175 var callback = function(obj) { 176 t.ok(obj.feature == fakeFeature, "beforefeaturemodified triggered"); 177 }; 178 layer.events.on({"beforefeaturemodified": callback}); 175 179 control.dragControl.activate = function() { t.ok(true, "drag Control activated"); } 176 180 control.onModificationStart = function(feature) { t.eq(feature.id, fakeFeature.id, "On Modification Start called with correct feature."); } 177 181 178 179 182 // Start of testing 180 183 181 184 control.collectVertices = function() { t.fail("Collect vertices called when geom is a point"); } 182 var fakeFeature = {'id':'myFakeFeature','geometry':{'CLASS_NAME':'OpenLayers.Geometry.Point'}};185 var fakeFeature = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(0, 0)); 183 186 184 187 // Points don't call collectVertices 185 188 control.selectFeature({feature: fakeFeature}); … … 195 198 layer.addFeatures = function(features) { 196 199 t.ok(features == 'a' || features == 'd', "features passed correctly"); 197 200 } 198 fakeFeature.geometry.CLASS_NAME='OpenLayers.Geometry.Polygon';199 201 202 fakeFeature.geometry = new OpenLayers.Geometry.Polygon([ 203 new OpenLayers.Geometry.LinearRing([ 204 new OpenLayers.Geometry.Point(0, 0), 205 new OpenLayers.Geometry.Point(1, 1) 206 ]) 207 ]); 208 200 209 // OnSelect calls collectVertices and passes features to layer 201 210 control.selectFeature({feature: fakeFeature}); 202 211 … … 349 358 } 350 359 351 360 function test_onModificationStart(t) { 352 t.plan( 2);361 t.plan(1); 353 362 var map = new OpenLayers.Map("map"); 354 363 var layer = new OpenLayers.Layer.Vector(); 355 364 map.addLayer(layer); … … 357 366 map.addControl(control); 358 367 control.activate(); 359 368 360 // test that beforefeaturemodified is triggered361 layer.events.on({"beforefeaturemodified": function(event) {362 t.eq(event.feature.id, testFeature.id,363 "beforefeaturemodified is triggered with correct feature");364 }});365 366 369 // make sure onModificationStart is called on feature selection 367 370 var testFeature = new OpenLayers.Feature.Vector( 368 371 new OpenLayers.Geometry.Point(Math.random(), Math.random()) … … 445 448 446 449 map.destroy(); 447 450 } 451 452 function test_events(t) { 453 t.plan(2); 454 var map = new OpenLayers.Map("map"); 455 var layer = new OpenLayers.Layer.Vector(); 456 map.addLayer(layer); 457 var control = new OpenLayers.Control.ModifyFeature(layer); 458 map.addControl(control); 459 control.activate(); 460 461 // make sure onModificationStart is called on feature selection 462 var testFeature = new OpenLayers.Feature.Vector( 463 new OpenLayers.Geometry.Point(Math.random(), Math.random()) 464 ); 465 466 // test that beforefeatureselected is triggered 467 function handle_beforefeatureselected(event) { 468 t.ok(event.feature == testFeature, "beforefeatureselected called with the correct feature"); 469 } 470 layer.events.on({ 471 "beforefeatureselected": handle_beforefeatureselected 472 }); 473 layer.events.triggerEvent("beforefeatureselected", { 474 feature: testFeature 475 }); 476 layer.events.un({ 477 "beforefeatureselected": handle_beforefeatureselected 478 }); 479 480 // test that beforefeatureselected is triggered 481 function handle_featureselected(event) { 482 t.ok(event.feature == testFeature, "featureselected called with the correct feature"); 483 } 484 layer.events.on({ 485 "featureselected": handle_featureselected 486 }); 487 layer.events.triggerEvent("featureselected", { 488 feature: testFeature 489 }); 490 layer.events.un({ 491 "featureselected": handle_featureselected 492 }); 448 493 494 map.destroy(); 495 } 449 496 497 498 450 499 </script> 451 500 </head> 452 501 <body> -
lib/OpenLayers/Control/SelectFeature.js
old new 308 308 * feature - {<OpenLayers.Feature.Vector>} 309 309 */ 310 310 select: function(feature) { 311 this.layer.selectedFeatures.push(feature); 312 313 var selectStyle = this.selectStyle || this.renderIntent; 314 315 this.layer.drawFeature(feature, selectStyle); 316 this.layer.events.triggerEvent("featureselected", {feature: feature}); 317 this.onSelect(feature); 311 var cont = this.layer.events.triggerEvent("beforefeatureselected", { 312 feature: feature 313 }); 314 if(cont !== false) { 315 this.layer.selectedFeatures.push(feature); 316 317 var selectStyle = this.selectStyle || this.renderIntent; 318 319 this.layer.drawFeature(feature, selectStyle); 320 this.layer.events.triggerEvent("featureselected", {feature: feature}); 321 this.onSelect(feature); 322 } 318 323 }, 319 324 320 325 /** … … 323 328 * normal, and call the onUnselect function. 324 329 * 325 330 * Parameters: 326 * feature - {<OpenLayers.Feature.Vector>} 331 * feature - {<OpenLayers.Feature.Vector>} 327 332 */ 328 333 unselect: function(feature) { 329 334 // Store feature style for restoration later -
lib/OpenLayers/Control/ModifyFeature.js
old new 201 201 layer, selectOptions 202 202 ); 203 203 this.layer.events.on({ 204 "beforefeatureselected": this.beforeSelectFeature, 204 205 "featureselected": this.selectFeature, 205 206 "featureunselected": this.unselectFeature, 206 207 scope: this … … 239 240 */ 240 241 destroy: function() { 241 242 this.layer.events.un({ 243 "beforefeatureselected": this.beforeSelectFeature, 242 244 "featureselected": this.selectFeature, 243 245 "featureunselected": this.unselectFeature, 244 246 scope: this … … 287 289 } 288 290 return deactivated; 289 291 }, 292 293 /** 294 * Method: beforeSelectFeature 295 * Called before a feature is selected. 296 * 297 * Parameters: 298 * object - {Object} Object with a feature property referencing the 299 * selected feature. 300 */ 301 beforeSelectFeature: function(object) { 302 return this.layer.events.triggerEvent( 303 "beforefeaturemodified", {feature: object.feature} 304 ); 305 }, 290 306 291 307 /** 292 308 * Method: selectFeature … … 301 317 this.resetVertices(); 302 318 this.dragControl.activate(); 303 319 this.onModificationStart(this.feature); 304 this.layer.events.triggerEvent("beforefeaturemodified",305 {feature: this.feature});306 320 }, 307 321 308 322 /** -
lib/OpenLayers/Layer/Vector.js
old new 72 72 */ 73 73 EVENT_TYPES: ["beforefeatureadded", "featureadded", "featuresadded", 74 74 "beforefeatureremoved", "featureremoved", "featuresremoved", 75 " featureselected", "featureunselected",75 "beforefeatureselected", "featureselected", "featureunselected", 76 76 "beforefeaturemodified", "featuremodified", "afterfeaturemodified"], 77 77 78 78 /** -
examples/modify-feature.html
old new 29 29 map.addControl(new OpenLayers.Control.LayerSwitcher()); 30 30 map.addControl(new OpenLayers.Control.MousePosition()); 31 31 32 var modifyOptions = { 33 onModificationStart: function(feature) { 34 OpenLayers.Console.log("start modifying", feature.id); 35 }, 36 onModification: function(feature) { 37 OpenLayers.Console.log("modified", feature.id); 38 }, 39 onModificationEnd: function(feature) { 40 OpenLayers.Console.log("end modifying", feature.id); 41 }, 42 onDelete: function(feature) { 43 OpenLayers.Console.log("delete", feature.id); 44 } 45 }; 32 function report(event) { 33 OpenLayers.Console.log(event.type, event.feature.id); 34 } 35 vectors.events.on({ 36 "beforefeaturemodified": report, 37 "featuremodified": report, 38 "afterfeaturemodified": report 39 }); 46 40 controls = { 47 41 point: new OpenLayers.Control.DrawFeature(vectors, 48 42 OpenLayers.Handler.Point), … … 53 47 regular: new OpenLayers.Control.DrawFeature(vectors, 54 48 OpenLayers.Handler.RegularPolygon, 55 49 {handlerOptions: {sides: 5}}), 56 modify: new OpenLayers.Control.ModifyFeature(vectors, 57 modifyOptions) 50 modify: new OpenLayers.Control.ModifyFeature(vectors) 58 51 }; 59 52 60 53 for(var key in controls) {
