| | 57 | function test_Handler_Feature_events(t) { |
|---|
| | 58 | t.plan(25); |
|---|
| | 59 | |
|---|
| | 60 | var map = new OpenLayers.Map('map'); |
|---|
| | 61 | var control = new OpenLayers.Control(); |
|---|
| | 62 | map.addControl(control); |
|---|
| | 63 | var layer = new OpenLayers.Layer(); |
|---|
| | 64 | map.addLayer(layer); |
|---|
| | 65 | var handler = new OpenLayers.Handler.Feature(control, layer); |
|---|
| | 66 | |
|---|
| | 67 | // list below events that should be handled (events) and those |
|---|
| | 68 | // that should not be handled (nonevents) by the handler |
|---|
| | 69 | var events = ["mousedown", "mouseup", "mousemove", "click", "dblclick"]; |
|---|
| | 70 | var nonevents = ["mouseout", "resize", "focus", "blur"]; |
|---|
| | 71 | map.events.registerPriority = function(type, obj, func) { |
|---|
| | 72 | var output = func(); |
|---|
| | 73 | // Don't listen for setEvent handlers (#902) |
|---|
| | 74 | if (typeof output == "string") { |
|---|
| | 75 | t.eq(OpenLayers.Util.indexOf(nonevents, type), -1, |
|---|
| | 76 | "registered method is not one of the events " + |
|---|
| | 77 | "that should not be handled"); |
|---|
| | 78 | t.ok(OpenLayers.Util.indexOf(events, type) > -1, |
|---|
| | 79 | "activate calls registerPriority with browser event: " + type); |
|---|
| | 80 | t.eq(typeof func, "function", |
|---|
| | 81 | "activate calls registerPriority with a function"); |
|---|
| | 82 | t.eq(func(), type, |
|---|
| | 83 | "activate calls registerPriority with the correct method:"+type); |
|---|
| | 84 | t.eq(obj["CLASS_NAME"], "OpenLayers.Handler.Feature", |
|---|
| | 85 | "activate calls registerPriority with the handler"); |
|---|
| | 86 | } |
|---|
| | 87 | } |
|---|
| | 88 | |
|---|
| | 89 | // set browser event like properties on the handler |
|---|
| | 90 | for(var i=0; i<events.length; ++i) { |
|---|
| | 91 | setMethod(events[i]); |
|---|
| | 92 | } |
|---|
| | 93 | function setMethod(key) { |
|---|
| | 94 | handler[key] = function() {return key}; |
|---|
| | 95 | } |
|---|
| | 96 | |
|---|
| | 97 | var activated = handler.activate(); |
|---|
| | 98 | |
|---|
| | 99 | } |
|---|
| | 100 | |
|---|
| | 101 | function test_Handler_Feature_callbacks(t) { |
|---|
| | 102 | t.plan(75); |
|---|
| | 103 | |
|---|
| | 104 | var map = new OpenLayers.Map('map', {controls: []}); |
|---|
| | 105 | var control = new OpenLayers.Control(); |
|---|
| | 106 | map.addControl(control); |
|---|
| | 107 | var layer = new OpenLayers.Layer(); |
|---|
| | 108 | map.addLayer(layer); |
|---|
| | 109 | |
|---|
| | 110 | var evtsToTest = [ |
|---|
| | 111 | { |
|---|
| | 112 | shortName: "down", |
|---|
| | 113 | longName: "mousedown" |
|---|
| | 114 | }, |
|---|
| | 115 | { |
|---|
| | 116 | shortName: "move", |
|---|
| | 117 | longName: "mousemove" |
|---|
| | 118 | }, |
|---|
| | 119 | { |
|---|
| | 120 | shortName: "up", |
|---|
| | 121 | longName: "mouseup" |
|---|
| | 122 | }, |
|---|
| | 123 | { |
|---|
| | 124 | shortName: "click", |
|---|
| | 125 | longName: "click" |
|---|
| | 126 | }, |
|---|
| | 127 | { |
|---|
| | 128 | shortName: "dblclick", |
|---|
| | 129 | longName: "dblclick" |
|---|
| | 130 | } |
|---|
| | 131 | ]; |
|---|
| | 132 | |
|---|
| | 133 | var numEvents = {}; |
|---|
| | 134 | var callbacks = {}; |
|---|
| | 135 | |
|---|
| | 136 | var newFeature; |
|---|
| | 137 | var oldFeature; |
|---|
| | 138 | |
|---|
| | 139 | function getCallback(evt, feature) { |
|---|
| | 140 | return function(f) { |
|---|
| | 141 | t.ok(f == feature, "callback called with proper feature"); |
|---|
| | 142 | numEvents[evt]++; |
|---|
| | 143 | }; |
|---|
| | 144 | } |
|---|
| | 145 | |
|---|
| | 146 | layer.getFeatureFromEvent = function(evt) { return newFeature; }; |
|---|
| | 147 | |
|---|
| | 148 | var handler = new OpenLayers.Handler.Feature(control, layer, callbacks); |
|---|
| | 149 | handler.activate(); |
|---|
| | 150 | |
|---|
| | 151 | for (var i = 0; i < evtsToTest.length; i++) { |
|---|
| | 152 | evt = evtsToTest[i]; |
|---|
| | 153 | |
|---|
| | 154 | var evtShortName = evt.shortName; |
|---|
| | 155 | var evtLongName = evt.longName; |
|---|
| | 156 | |
|---|
| | 157 | var evtPx = {xy: new OpenLayers.Pixel(Math.random(), Math.random())}; |
|---|
| | 158 | |
|---|
| | 159 | handler.feature = null; |
|---|
| | 160 | |
|---|
| | 161 | numEvents[evtShortName] = 0; |
|---|
| | 162 | numEvents["over"] = 0; |
|---|
| | 163 | numEvents["out"] = 0; |
|---|
| | 164 | oldFeature = null; |
|---|
| | 165 | newFeature = new OpenLayers.Feature.Vector(); |
|---|
| | 166 | callbacks[evtShortName] = getCallback(evtShortName, newFeature); |
|---|
| | 167 | callbacks["over"] = getCallback("over", newFeature); |
|---|
| | 168 | callbacks["out"] = getCallback("out", oldFeature); |
|---|
| | 169 | map.events.triggerEvent(evtLongName, evtPx); |
|---|
| | 170 | t.ok(numEvents[evtShortName] == 1, evtShortName + " triggered click callback"); |
|---|
| | 171 | t.ok(numEvents["over"] == 1, evtShortName + " triggered over callbacks"); |
|---|
| | 172 | t.ok(numEvents["out"] == 0, evtShortName + " did not trigger out callback"); |
|---|
| | 173 | |
|---|
| | 174 | numEvents[evtShortName] = 0; |
|---|
| | 175 | numEvents["over"] = 0; |
|---|
| | 176 | numEvents["out"] = 0; |
|---|
| | 177 | oldFeature = newFeature; |
|---|
| | 178 | newFeature = new OpenLayers.Feature.Vector(); |
|---|
| | 179 | callbacks[evtShortName] = getCallback(evtShortName, newFeature); |
|---|
| | 180 | callbacks["over"] = getCallback("over", newFeature); |
|---|
| | 181 | callbacks["out"] = getCallback("out", oldFeature); |
|---|
| | 182 | map.events.triggerEvent(evtLongName, evtPx); |
|---|
| | 183 | t.ok(numEvents[evtShortName] == 1, evtShortName + " triggered click callback"); |
|---|
| | 184 | t.ok(numEvents["over"] == 1, evtShortName + " triggered over callbacks"); |
|---|
| | 185 | t.ok(numEvents["out"] == 1, evtShortName + " triggered out callback"); |
|---|
| | 186 | |
|---|
| | 187 | numEvents[evtShortName] = 0; |
|---|
| | 188 | numEvents["over"] = 0; |
|---|
| | 189 | numEvents["out"] = 0; |
|---|
| | 190 | oldFeature = newFeature; |
|---|
| | 191 | callbacks[evtShortName] = getCallback(evtShortName, newFeature); |
|---|
| | 192 | callbacks["over"] = getCallback("over", newFeature); |
|---|
| | 193 | callbacks["out"] = getCallback("out", oldFeature); |
|---|
| | 194 | map.events.triggerEvent(evtLongName, evtPx); |
|---|
| | 195 | t.ok(numEvents[evtShortName] == 1, evtShortName + " triggered click callback"); |
|---|
| | 196 | t.ok(numEvents["over"] == 0, evtShortName + " did not trigger over callbacks"); |
|---|
| | 197 | t.ok(numEvents["out"] == 0, evtShortName + " did not trigger out callback"); |
|---|
| | 198 | } |
|---|
| | 199 | } |
|---|