Changeset 6106
- Timestamp:
- 02/08/08 10:52:03 (1 year ago)
- Files:
-
- trunk/openlayers/lib/OpenLayers/Control.js (modified) (1 diff)
- trunk/openlayers/lib/OpenLayers/Control/DragFeature.js (modified) (10 diffs)
- trunk/openlayers/lib/OpenLayers/Control/ModifyFeature.js (modified) (7 diffs)
- trunk/openlayers/lib/OpenLayers/Control/Navigation.js (modified) (8 diffs)
- trunk/openlayers/lib/OpenLayers/Control/OverviewMap.js (modified) (6 diffs)
- trunk/openlayers/tests/Control/test_DragFeature.html (modified) (6 diffs)
- trunk/openlayers/tests/Control/test_ModifyFeature.html (modified) (2 diffs)
- trunk/openlayers/tests/Control/test_Navigation.html (modified) (1 diff)
- trunk/openlayers/tests/Control/test_OverviewMap.html (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/openlayers/lib/OpenLayers/Control.js
r5910 r6106 140 140 this.handler = null; 141 141 } 142 if(this.handlers) { 143 for(var key in this.handlers) { 144 if(this.handlers.hasOwnProperty(key) && 145 typeof this.handlers[key].destroy == "function") { 146 this.handlers[key].destroy(); 147 } 148 } 149 this.handlers = null; 150 } 142 151 if (this.map) { 143 152 this.map.removeControl(this); trunk/openlayers/lib/OpenLayers/Control/DragFeature.js
r5614 r6106 78 78 79 79 /** 80 * Property: dragHandler81 * {<OpenLayers.Handler.Drag>}82 */83 dragHandler: null,84 85 /**86 80 * Property: dragCallbacks 87 81 * {Object} The functions that are sent to the drag handler for callback. 88 82 */ 89 83 dragCallbacks: {}, 90 91 /**92 * Property: featureHandler93 * {<OpenLayers.Handler.Feature>}94 */95 featureHandler: null,96 84 97 85 /** … … 120 108 OpenLayers.Control.prototype.initialize.apply(this, [options]); 121 109 this.layer = layer; 122 this.dragCallbacks = OpenLayers.Util.extend({down: this.downFeature, 123 move: this.moveFeature, 124 up: this.upFeature, 125 out: this.cancel, 126 done: this.doneDragging 127 }, this.dragCallbacks); 128 this.dragHandler = new OpenLayers.Handler.Drag(this, this.dragCallbacks); 129 this.featureCallbacks = OpenLayers.Util.extend({over: this.overFeature, 130 out: this.outFeature 131 }, this.featureCallbacks); 132 var handlerOptions = {geometryTypes: this.geometryTypes}; 133 this.featureHandler = new OpenLayers.Handler.Feature(this, this.layer, 134 this.featureCallbacks, 135 handlerOptions); 110 this.handlers = { 111 drag: new OpenLayers.Handler.Drag( 112 this, OpenLayers.Util.extend({ 113 down: this.downFeature, 114 move: this.moveFeature, 115 up: this.upFeature, 116 out: this.cancel, 117 done: this.doneDragging 118 }, this.dragCallbacks) 119 ), 120 feature: new OpenLayers.Handler.Feature( 121 this, this.layer, OpenLayers.Util.extend({ 122 over: this.overFeature, 123 out: this.outFeature 124 }, this.featureCallbacks), 125 {geometryTypes: this.geometryTypes} 126 ) 127 }; 136 128 }, 137 129 … … 142 134 destroy: function() { 143 135 this.layer = null; 144 this.dragHandler.destroy();145 this.featureHandler.destroy();146 136 OpenLayers.Control.prototype.destroy.apply(this, []); 147 137 }, … … 155 145 */ 156 146 activate: function() { 157 return (this. featureHandler.activate() &&147 return (this.handlers.feature.activate() && 158 148 OpenLayers.Control.prototype.activate.apply(this, arguments)); 159 149 }, … … 168 158 deactivate: function() { 169 159 // the return from the handlers is unimportant in this case 170 this. dragHandler.deactivate();171 this. featureHandler.deactivate();160 this.handlers.drag.deactivate(); 161 this.handlers.feature.deactivate(); 172 162 this.feature = null; 173 163 this.dragging = false; … … 185 175 */ 186 176 overFeature: function(feature) { 187 if(!this. dragHandler.dragging) {177 if(!this.handlers.drag.dragging) { 188 178 this.feature = feature; 189 this. dragHandler.activate();179 this.handlers.drag.activate(); 190 180 this.over = true; 191 181 // TBD replace with CSS classes … … 239 229 upFeature: function(pixel) { 240 230 if(!this.over) { 241 this. dragHandler.deactivate();231 this.handlers.drag.deactivate(); 242 232 this.feature = null; 243 233 // TBD replace with CSS classes … … 266 256 */ 267 257 outFeature: function(feature) { 268 if(!this. dragHandler.dragging) {258 if(!this.handlers.drag.dragging) { 269 259 this.over = false; 270 this. dragHandler.deactivate();260 this.handlers.drag.deactivate(); 271 261 // TBD replace with CSS classes 272 262 this.map.div.style.cursor = "default"; … … 284 274 */ 285 275 cancel: function() { 286 this. dragHandler.deactivate();276 this.handlers.drag.deactivate(); 287 277 this.over = false; 288 278 }, … … 296 286 */ 297 287 setMap: function(map) { 298 this. dragHandler.setMap(map);299 this. featureHandler.setMap(map);288 this.handlers.drag.setMap(map); 289 this.handlers.feature.setMap(map); 300 290 OpenLayers.Control.prototype.setMap.apply(this, arguments); 301 291 }, trunk/openlayers/lib/OpenLayers/Control/ModifyFeature.js
r5974 r6106 84 84 85 85 /** 86 * Property: keyboardHandler87 * { <OpenLayers.Handler.Keyboard>}88 */ 89 keyboardHandler: null,86 * Property: handlers 87 * {Object} 88 */ 89 handlers: null, 90 90 91 91 /** … … 217 217 keypress: this.handleKeypress 218 218 }; 219 this. keyboardHandler = new OpenLayers.Handler.Keyboard(220 this, keyboardOptions221 );219 this.handlers = { 220 keyboard: new OpenLayers.Handler.Keyboard(this, keyboardOptions) 221 }; 222 222 }, 223 223 … … 230 230 this.selectControl.destroy(); 231 231 this.dragControl.destroy(); 232 this.keyboardHandler.destroy();233 232 OpenLayers.Control.prototype.destroy.apply(this, []); 234 233 }, … … 243 242 activate: function() { 244 243 return (this.selectControl.activate() && 245 this. keyboardHandler.activate() &&244 this.handlers.keyboard.activate() && 246 245 OpenLayers.Control.prototype.activate.apply(this, arguments)); 247 246 }, … … 267 266 } 268 267 this.selectControl.deactivate(); 269 this. keyboardHandler.deactivate();268 this.handlers.keyboard.deactivate(); 270 269 deactivated = true; 271 270 } … … 353 352 [feature]); 354 353 this.dragControl.lastPixel = pixel; 355 this.dragControl. dragHandler.started = true;356 this.dragControl. dragHandler.start = pixel;357 this.dragControl. dragHandler.last = pixel;354 this.dragControl.handlers.drag.started = true; 355 this.dragControl.handlers.drag.start = pixel; 356 this.dragControl.handlers.drag.last = pixel; 358 357 } 359 358 } … … 487 486 if(vertex && 488 487 OpenLayers.Util.indexOf(this.vertices, vertex) != -1 && 489 !this.dragControl. dragHandler.dragging &&488 !this.dragControl.handlers.drag.dragging && 490 489 vertex.geometry.parent) { 491 490 // remove the vertex trunk/openlayers/lib/OpenLayers/Control/Navigation.js
r5990 r6106 37 37 zoomBox: null, 38 38 39 /**40 * Property: wheelHandler41 * {<OpenLayers.Handler.MouseWheel>}42 */43 wheelHandler: null,44 45 39 /** 46 40 * Constructor: OpenLayers.Control.Navigation … … 52 46 */ 53 47 initialize: function(options) { 48 this.handlers = {}; 54 49 OpenLayers.Control.prototype.initialize.apply(this, arguments); 55 50 }, … … 62 57 */ 63 58 destroy: function() { 64 OpenLayers.Control.prototype.destroy.apply(this,arguments);65 66 59 this.deactivate(); 67 60 … … 71 64 this.dragPan = null; 72 65 73 if (this.wheelHandler) {74 this.wheelHandler.destroy();75 }76 this.wheelHandler = null;77 78 if (this.clickHandler) {79 this.clickHandler.destroy();80 }81 this.clickHandler = null;82 83 66 if (this.zoomBox) { 84 67 this.zoomBox.destroy(); 85 68 } 86 69 this.zoomBox = null; 70 OpenLayers.Control.prototype.destroy.apply(this,arguments); 87 71 }, 88 72 … … 92 76 activate: function() { 93 77 this.dragPan.activate(); 94 this. wheelHandler.activate();95 this. clickHandler.activate();78 this.handlers.wheel.activate(); 79 this.handlers.click.activate(); 96 80 this.zoomBox.activate(); 97 81 return OpenLayers.Control.prototype.activate.apply(this,arguments); … … 104 88 this.zoomBox.deactivate(); 105 89 this.dragPan.deactivate(); 106 this. clickHandler.deactivate();107 this. wheelHandler.deactivate();90 this.handlers.click.deactivate(); 91 this.handlers.wheel.deactivate(); 108 92 return OpenLayers.Control.prototype.deactivate.apply(this,arguments); 109 93 }, … … 113 97 */ 114 98 draw: function() { 115 this. clickHandler= new OpenLayers.Handler.Click(this,99 this.handlers.click = new OpenLayers.Handler.Click(this, 116 100 { 'dblclick': this.defaultDblClick }, 117 101 { … … 124 108 this.dragPan.draw(); 125 109 this.zoomBox.draw(); 126 this. wheelHandler= new OpenLayers.Handler.MouseWheel(110 this.handlers.wheel = new OpenLayers.Handler.MouseWheel( 127 111 this, {"up" : this.wheelUp, 128 112 "down": this.wheelDown} ); trunk/openlayers/lib/OpenLayers/Control/OverviewMap.js
r6052 r6106 99 99 100 100 /** 101 * Property: dragHandler102 * { <OpenLayers.Handler.Drag>} A handler for dragging the extent rectangle.103 */ 104 dragHandler: null,101 * Property: handlers 102 * {Object} 103 */ 104 handlers: null, 105 105 106 106 /** … … 115 115 initialize: function(options) { 116 116 this.layers = []; 117 this.handlers = {}; 117 118 OpenLayers.Control.prototype.initialize.apply(this, [options]); 118 119 }, … … 126 127 return; 127 128 } 128 this.dragHandler.destroy(); 129 this.clickHandler.destroy(); 129 this.handlers.click.destroy(); 130 130 131 131 this.mapDiv.removeChild(this.extentRectangle); … … 281 281 */ 282 282 rectDrag: function(px) { 283 var deltaX = this. dragHandler.last.x - px.x;284 var deltaY = this. dragHandler.last.y - px.y;283 var deltaX = this.handlers.drag.last.x - px.x; 284 var deltaY = this.handlers.drag.last.y - px.y; 285 285 if(deltaX != 0 || deltaY != 0) { 286 286 var rectTop = this.rectPxBounds.top; … … 457 457 this.hComp = (this.hComp) ? this.hComp : 2; 458 458 459 this. dragHandler= new OpenLayers.Handler.Drag(459 this.handlers.drag = new OpenLayers.Handler.Drag( 460 460 this, {move: this.rectDrag, done: this.updateMapToRect}, 461 461 {map: this.ovmap} 462 462 ); 463 this. clickHandler= new OpenLayers.Handler.Click(463 this.handlers.click = new OpenLayers.Handler.Click( 464 464 this, { 465 465 "click": this.mapDivClick … … 471 471 } 472 472 ); 473 this. clickHandler.activate();473 this.handlers.click.activate(); 474 474 475 475 this.rectEvents = new OpenLayers.Events(this, this.extentRectangle, 476 476 null, true); 477 477 this.rectEvents.register("mouseover", this, function(e) { 478 if(!this. dragHandler.active && !this.map.dragging) {479 this. dragHandler.activate();478 if(!this.handlers.drag.active && !this.map.dragging) { 479 this.handlers.drag.activate(); 480 480 } 481 481 }); 482 482 this.rectEvents.register("mouseout", this, function(e) { 483 if(!this. dragHandler.dragging) {484 this. dragHandler.deactivate();483 if(!this.handlers.drag.dragging) { 484 this.handlers.drag.deactivate(); 485 485 } 486 486 }); trunk/openlayers/tests/Control/test_DragFeature.html
r5506 r6106 15 15 t.eq(control.layer, "bar", 16 16 "constructor sets layer correctly"); 17 t.eq(control. featureHandler.geometryTypes, "foo",17 t.eq(control.handlers.feature.geometryTypes, "foo", 18 18 "constructor sets options correctly on feature handler"); 19 19 } … … 25 25 map.addLayer(layer); 26 26 var control = new OpenLayers.Control.DragFeature(layer); 27 control. dragHandler.destroy = function() {27 control.handlers.drag.destroy = function() { 28 28 t.ok(true, 29 29 "control.destroy calls destroy on drag handler"); 30 30 } 31 control. featureHandler.destroy = function() {31 control.handlers.feature.destroy = function() { 32 32 t.ok(true, 33 33 "control.destroy calls destroy on feature handler"); 34 34 } 35 35 36 control.destroy(); 36 37 … … 44 45 var control = new OpenLayers.Control.DragFeature(layer); 45 46 map.addControl(control); 46 t.ok(!control. featureHandler.active,47 t.ok(!control.handlers.feature.active, 47 48 "feature handler is not active prior to activating control"); 48 49 control.activate(); 49 t.ok(control. featureHandler.active,50 t.ok(control.handlers.feature.active, 50 51 "feature handler is active after activating control"); 51 52 } … … 59 60 map.addControl(control); 60 61 61 control. dragHandler.deactivate = function() {62 control.handlers.drag.deactivate = function() { 62 63 t.ok(true, 63 64 "control.deactivate calls deactivate on drag handler"); 64 65 } 65 control. featureHandler.deactivate = function() {66 control.handlers.feature.deactivate = function() { 66 67 t.ok(true, 67 68 "control.deactivate calls deactivate on feature handler"); … … 79 80 80 81 control.activate(); 81 t.ok(!control. dragHandler.active,82 t.ok(!control.handlers.drag.active, 82 83 "drag handler is not active before over a feature"); 83 84 … … 90 91 t.eq(control.feature, "foo", 91 92 "control gets the proper feature from the feature handler"); 92 t.ok(control. dragHandler.active,93 t.ok(control.handlers.drag.active, 93 94 "drag handler activated when over a feature"); 94 95 } trunk/openlayers/tests/Control/test_ModifyFeature.html
r5974 r6106 173 173 174 174 // now make sure nothing happens if the vertex is mid-drag 175 control.dragControl. dragHandler.dragging = true;175 control.dragControl.handlers.drag.dragging = true; 176 176 control.handleKeypress(delKey); 177 177 … … 306 306 control.dragControl.map.div.style = {}; 307 307 control.dragControl.map.div.cursor = "foo"; 308 control.dragControl. dragHandler.deactivate = function() {308 control.dragControl.handlers.drag.deactivate = function() { 309 309 this.active = false; 310 310 } 311 311 control.resetVertices(); 312 t.ok(!control.dragControl. dragHandler.active, "resetVertices deactivates drag handler");312 t.ok(!control.dragControl.handlers.drag.active, "resetVertices deactivates drag handler"); 313 313 control.dragControl.map = null; 314 314 trunk/openlayers/tests/Control/test_Navigation.html
r5990 r6106 6 6 function test_Control_Navigation_constructor (t) { 7 7 t.plan( 2 ); 8 var temp = OpenLayers.Control.prototype.initialize;9 OpenLayers.Control.prototype.initialize = function() {10 t.ok(true, "OpenLayers.Control's constructor called");11 };8 var temp = OpenLayers.Control.prototype.initialize; 9 OpenLayers.Control.prototype.initialize = function() { 10 t.ok(true, "OpenLayers.Control's constructor called"); 11 }; 12 12 13 13 var control = new OpenLayers.Control.Navigation(); 14 14 t.ok( control instanceof OpenLayers.Control.Navigation, "new OpenLayers.Control returns object" ); 15 15 16 OpenLayers.Control.prototype.initialize = temp;16 OpenLayers.Control.prototype.initialize = temp; 17 17 } 18 18 19 19 function test_Control_Navigation_destroy (t) { 20 t.plan(10); 21 22 var temp = OpenLayers.Control.prototype.destroy; 23 OpenLayers.Control.prototype.destroy = function() { 24 t.ok(true, "OpenLayers.Control's destroy called"); 25 }; 20 t.plan(9); 21 22 var temp = OpenLayers.Control.prototype.destroy; 23 OpenLayers.Control.prototype.destroy = function() { 24 t.ok(true, "OpenLayers.Control's destroy called"); 25 temp.call(this); 26 }; 26 27 27 var control = { 28 'deactivate': function() { 29 t.ok(true, "navigation control deactivated before being destroyed"); 30 }, 31 'dragPan': { 32 'destroy': function() { 33 t.ok(true, "dragPan destroyed"); 34 } 35 }, 36 'zoomBox': { 37 'destroy': function() { 38 t.ok(true, "zoomBox destroyed"); 39 } 40 }, 41 'wheelHandler': { 42 'destroy': function() { 43 t.ok(true, "wheelHandler destroyed"); 44 } 45 }, 46 'clickHandler': { 47 'destroy': function() { 48 t.ok(true, "clickHandler destroyed"); 49 } 50 } 51 }; 28 var control = { 29 'deactivate': function() { 30 t.ok(true, "navigation control deactivated before being destroyed"); 31 }, 32 'dragPan': { 33 'destroy': function() { 34 t.ok(true, "dragPan destroyed"); 35 } 36 }, 37 'zoomBox': { 38 'destroy': function() { 39 t.ok(true, "zoomBox destroyed"); 40 } 41 }, 42 handlers: { 43 'wheel': { 44 'destroy': function() { 45 t.ok(true, "wheelHandler destroyed"); 46 } 47 }, 48 'click': { 49 'destroy': function() { 50 t.ok(true, "clickHandler destroyed"); 51 } 52 } 53 } 54 }; 52 55 53 //this will also trigger one test by calling OpenLayers.Control's destroy54 // and three more for the destruction of dragPan, zoomBox, and wheelHandler55 OpenLayers.Control.Navigation.prototype.destroy.apply(control, []);56 //this will also trigger one test by calling OpenLayers.Control's destroy 57 // and three more for the destruction of dragPan, zoomBox, and wheelHandler 58 OpenLayers.Control.Navigation.prototype.destroy.apply(control, []); 56 59 57 t.eq(control.dragPan, null, "'dragPan' set to null"); 58 t.eq(control.zoomBox, null, "'zoomBox' set to null"); 59 t.eq(control.wheelHandler, null, "'wheelHandler' set to null"); 60 t.eq(control.clickHandler, null, "'clickHandler' set to null"); 60 t.eq(control.dragPan, null, "'dragPan' set to null"); 61 t.eq(control.zoomBox, null, "'zoomBox' set to null"); 62 t.eq(control.handlers, null, "handlers set to null"); 61 63 62 OpenLayers.Control.prototype.destroy = temp;64 OpenLayers.Control.prototype.destroy = temp; 63 65 } 64 66 trunk/openlayers/tests/Control/test_OverviewMap.html
r6006 r6106 52 52 t.eq(cent.lat, 42.17578125, "Clicking on the Overview Map has the correct effect on map lat"); 53 53 54 control. dragHandler= {54 control.handlers.drag = { 55 55 last: new OpenLayers.Pixel(5,5), 56 56 destroy: function() {}
