Changeset 7616
- Timestamp:
- 07/30/08 18:03:40 (4 months ago)
- Files:
-
- trunk/openlayers/examples/modify-feature.html (modified) (2 diffs)
- trunk/openlayers/lib/OpenLayers/Control/ModifyFeature.js (modified) (4 diffs)
- trunk/openlayers/lib/OpenLayers/Control/SelectFeature.js (modified) (2 diffs)
- trunk/openlayers/lib/OpenLayers/Layer/Vector.js (modified) (1 diff)
- trunk/openlayers/tests/Control/ModifyFeature.html (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/openlayers/examples/modify-feature.html
r7095 r7616 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, … … 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 trunk/openlayers/lib/OpenLayers/Control/ModifyFeature.js
r7614 r7616 202 202 ); 203 203 this.layer.events.on({ 204 "beforefeatureselected": this.beforeSelectFeature, 204 205 "featureselected": this.selectFeature, 205 206 "featureunselected": this.unselectFeature, … … 240 241 destroy: function() { 241 242 this.layer.events.un({ 243 "beforefeatureselected": this.beforeSelectFeature, 242 244 "featureselected": this.selectFeature, 243 245 "featureunselected": this.unselectFeature, … … 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 /** … … 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 trunk/openlayers/lib/OpenLayers/Control/SelectFeature.js
r7589 r7616 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 … … 324 329 * 325 330 * Parameters: 326 * feature - {<OpenLayers.Feature.Vector>} 331 * feature - {<OpenLayers.Feature.Vector>} 327 332 */ 328 333 unselect: function(feature) { trunk/openlayers/lib/OpenLayers/Layer/Vector.js
r7614 r7616 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 trunk/openlayers/tests/Control/ModifyFeature.html
r7614 r7616 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 … … 196 199 t.ok(features == 'a' || features == 'd', "features passed correctly"); 197 200 } 198 fakeFeature.geometry.CLASS_NAME='OpenLayers.Geometry.Polygon'; 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 ]); 199 208 200 209 // OnSelect calls collectVertices and passes features to layer … … 360 369 361 370 function test_onModificationStart(t) { 362 t.plan( 2);371 t.plan(1); 363 372 var map = new OpenLayers.Map("map"); 364 373 var layer = new OpenLayers.Layer.Vector(); … … 367 376 map.addControl(control); 368 377 control.activate(); 369 370 // test that beforefeaturemodified is triggered371 layer.events.on({"beforefeaturemodified": function(event) {372 t.eq(event.feature.id, testFeature.id,373 "beforefeaturemodified is triggered with correct feature");374 }});375 378 376 379 // make sure onModificationStart is called on feature selection … … 456 459 map.destroy(); 457 460 } 461 462 function test_events(t) { 463 t.plan(2); 464 var map = new OpenLayers.Map("map"); 465 var layer = new OpenLayers.Layer.Vector(); 466 map.addLayer(layer); 467 var control = new OpenLayers.Control.ModifyFeature(layer); 468 map.addControl(control); 469 control.activate(); 470 471 // make sure onModificationStart is called on feature selection 472 var testFeature = new OpenLayers.Feature.Vector( 473 new OpenLayers.Geometry.Point(Math.random(), Math.random()) 474 ); 475 476 // test that beforefeatureselected is triggered 477 function handle_beforefeatureselected(event) { 478 t.ok(event.feature == testFeature, "beforefeatureselected called with the correct feature"); 479 } 480 layer.events.on({ 481 "beforefeatureselected": handle_beforefeatureselected 482 }); 483 layer.events.triggerEvent("beforefeatureselected", { 484 feature: testFeature 485 }); 486 layer.events.un({ 487 "beforefeatureselected": handle_beforefeatureselected 488 }); 489 490 // test that beforefeatureselected is triggered 491 function handle_featureselected(event) { 492 t.ok(event.feature == testFeature, "featureselected called with the correct feature"); 493 } 494 layer.events.on({ 495 "featureselected": handle_featureselected 496 }); 497 layer.events.triggerEvent("featureselected", { 498 feature: testFeature 499 }); 500 layer.events.un({ 501 "featureselected": handle_featureselected 502 }); 503 504 map.destroy(); 505 } 506 458 507 459 508
