/docs/map/openlayers/tests/Handler/test_Feature.html

https://github.com/jj0hns0n/oam-original · HTML · 253 lines · 221 code · 32 blank · 0 comment · 0 complexity · 01ee9132f190e468c7169f08afd965eb MD5 · raw file

  1. <html>
  2. <head>
  3. <script src="../../lib/OpenLayers.js"></script>
  4. <script type="text/javascript">
  5. function test_Handler_Feature_constructor(t) {
  6. t.plan(4);
  7. var control = new OpenLayers.Control();
  8. control.id = Math.random();
  9. var layer = "boo";
  10. var callbacks = {foo: "bar"};
  11. var options = {bar: "foo"};
  12. var oldInit = OpenLayers.Handler.prototype.initialize;
  13. OpenLayers.Handler.prototype.initialize = function(con, call, opt) {
  14. t.eq(con.id, control.id,
  15. "constructor calls parent with the correct control");
  16. t.eq(call, callbacks,
  17. "constructor calls parent with the correct callbacks");
  18. t.eq(opt, options,
  19. "constructor calls parent with the correct options");
  20. }
  21. var handler = new OpenLayers.Handler.Feature(control, layer,
  22. callbacks, options);
  23. t.eq(handler.layer, "boo",
  24. "layer property properly set");
  25. OpenLayers.Handler.prototype.initialize = oldInit;
  26. }
  27. function test_Handler_Feature_activate(t) {
  28. t.plan(4);
  29. var map = new OpenLayers.Map('map');
  30. var control = new OpenLayers.Control();
  31. map.addControl(control);
  32. var layer = new OpenLayers.Layer();
  33. map.addLayer(layer);
  34. var handler = new OpenLayers.Handler.Feature(control, layer);
  35. handler.active = true;
  36. var activated = handler.activate();
  37. t.ok(!activated,
  38. "activate returns false if the handler was already active");
  39. handler.active = false;
  40. var zIndex = layer.div.style.zIndex;
  41. activated = handler.activate();
  42. t.ok(activated,
  43. "activate returns true if the handler was not already active");
  44. t.eq(handler.layerIndex, zIndex,
  45. "layerIndex property properly set");
  46. t.eq(parseInt(layer.div.style.zIndex),
  47. map.Z_INDEX_BASE['Popup'] - 1,
  48. "layer z-index properly adjusted");
  49. }
  50. function test_Handler_Feature_events(t) {
  51. t.plan(25);
  52. var map = new OpenLayers.Map('map');
  53. var control = new OpenLayers.Control();
  54. map.addControl(control);
  55. var layer = new OpenLayers.Layer();
  56. map.addLayer(layer);
  57. var handler = new OpenLayers.Handler.Feature(control, layer);
  58. // list below events that should be handled (events) and those
  59. // that should not be handled (nonevents) by the handler
  60. var events = ["mousedown", "mouseup", "mousemove", "click", "dblclick"];
  61. var nonevents = ["mouseout", "resize", "focus", "blur"];
  62. map.events.registerPriority = function(type, obj, func) {
  63. var output = func();
  64. // Don't listen for setEvent handlers (#902)
  65. if (typeof output == "string") {
  66. t.eq(OpenLayers.Util.indexOf(nonevents, type), -1,
  67. "registered method is not one of the events " +
  68. "that should not be handled");
  69. t.ok(OpenLayers.Util.indexOf(events, type) > -1,
  70. "activate calls registerPriority with browser event: " + type);
  71. t.eq(typeof func, "function",
  72. "activate calls registerPriority with a function");
  73. t.eq(func(), type,
  74. "activate calls registerPriority with the correct method:"+type);
  75. t.eq(obj["CLASS_NAME"], "OpenLayers.Handler.Feature",
  76. "activate calls registerPriority with the handler");
  77. }
  78. }
  79. // set browser event like properties on the handler
  80. for(var i=0; i<events.length; ++i) {
  81. setMethod(events[i]);
  82. }
  83. function setMethod(key) {
  84. handler[key] = function() {return key};
  85. }
  86. var activated = handler.activate();
  87. }
  88. function test_Handler_feature_geometrytype_limit(t) {
  89. t.plan(2);
  90. var feature = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(0,0));
  91. var map = new OpenLayers.Map('map');
  92. var control = new OpenLayers.Control();
  93. map.addControl(control);
  94. var layer = new OpenLayers.Layer();
  95. layer.getFeatureFromEvent = function(evt) { return feature };
  96. map.addLayer(layer);
  97. var handler = new OpenLayers.Handler.Feature(control, layer, {}, {'geometryTypes':['OpenLayers.Geometry.Point']});
  98. handler.activate();
  99. handler.callback = function(type,featurelist) {
  100. t.eq(featurelist[0].id, feature.id, "Correct feature called back on");
  101. }
  102. handler.select("foo", {});
  103. handler.feature = null;
  104. handler.callback = function(type,featurelist) {
  105. t.fail("Shouldn't have called back on " + featurelist[0].geometry);
  106. }
  107. feature = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.LineString(0,0));
  108. handler.select("foo", {});
  109. }
  110. function test_Handler_Feature_callbacks(t) {
  111. t.plan(75);
  112. var map = new OpenLayers.Map('map', {controls: []});
  113. var control = new OpenLayers.Control();
  114. map.addControl(control);
  115. var layer = new OpenLayers.Layer();
  116. map.addLayer(layer);
  117. var evtsToTest = [
  118. {
  119. shortName: "down",
  120. longName: "mousedown"
  121. },
  122. {
  123. shortName: "move",
  124. longName: "mousemove"
  125. },
  126. {
  127. shortName: "up",
  128. longName: "mouseup"
  129. },
  130. {
  131. shortName: "click",
  132. longName: "click"
  133. },
  134. {
  135. shortName: "dblclick",
  136. longName: "dblclick"
  137. }
  138. ];
  139. var numEvents = {};
  140. var callbacks = {};
  141. var newFeature;
  142. var oldFeature;
  143. function getCallback(evt, feature) {
  144. return function(f) {
  145. t.ok(f == feature, "callback called with proper feature");
  146. numEvents[evt]++;
  147. };
  148. }
  149. layer.getFeatureFromEvent = function(evt) { return newFeature; };
  150. var handler = new OpenLayers.Handler.Feature(control, layer, callbacks);
  151. handler.activate();
  152. for (var i = 0; i < evtsToTest.length; i++) {
  153. evt = evtsToTest[i];
  154. var evtShortName = evt.shortName;
  155. var evtLongName = evt.longName;
  156. var evtPx = {xy: new OpenLayers.Pixel(Math.random(), Math.random())};
  157. handler.feature = null;
  158. numEvents[evtShortName] = 0;
  159. numEvents["over"] = 0;
  160. numEvents["out"] = 0;
  161. oldFeature = null;
  162. newFeature = new OpenLayers.Feature.Vector();
  163. callbacks[evtShortName] = getCallback(evtShortName, newFeature);
  164. callbacks["over"] = getCallback("over", newFeature);
  165. callbacks["out"] = getCallback("out", oldFeature);
  166. map.events.triggerEvent(evtLongName, evtPx);
  167. t.ok(numEvents[evtShortName] == 1, evtShortName + " triggered click callback");
  168. t.ok(numEvents["over"] == 1, evtShortName + " triggered over callbacks");
  169. t.ok(numEvents["out"] == 0, evtShortName + " did not trigger out callback");
  170. numEvents[evtShortName] = 0;
  171. numEvents["over"] = 0;
  172. numEvents["out"] = 0;
  173. oldFeature = newFeature;
  174. newFeature = new OpenLayers.Feature.Vector();
  175. callbacks[evtShortName] = getCallback(evtShortName, newFeature);
  176. callbacks["over"] = getCallback("over", newFeature);
  177. callbacks["out"] = getCallback("out", oldFeature);
  178. map.events.triggerEvent(evtLongName, evtPx);
  179. t.ok(numEvents[evtShortName] == 1, evtShortName + " triggered click callback");
  180. t.ok(numEvents["over"] == 1, evtShortName + " triggered over callbacks");
  181. t.ok(numEvents["out"] == 1, evtShortName + " triggered out callback");
  182. numEvents[evtShortName] = 0;
  183. numEvents["over"] = 0;
  184. numEvents["out"] = 0;
  185. oldFeature = newFeature;
  186. callbacks[evtShortName] = getCallback(evtShortName, newFeature);
  187. callbacks["over"] = getCallback("over", newFeature);
  188. callbacks["out"] = getCallback("out", oldFeature);
  189. map.events.triggerEvent(evtLongName, evtPx);
  190. t.ok(numEvents[evtShortName] == 1, evtShortName + " triggered click callback");
  191. t.ok(numEvents["over"] == 0, evtShortName + " did not trigger over callbacks");
  192. t.ok(numEvents["out"] == 0, evtShortName + " did not trigger out callback");
  193. }
  194. }
  195. function test_Handler_Feature_deactivate(t) {
  196. t.plan(3);
  197. var map = new OpenLayers.Map('map');
  198. var control = new OpenLayers.Control();
  199. map.addControl(control);
  200. var layer = new OpenLayers.Layer();
  201. map.addLayer(layer);
  202. var handler = new OpenLayers.Handler.Feature(control, layer);
  203. handler.active = false;
  204. var deactivated = handler.deactivate();
  205. t.ok(!deactivated,
  206. "deactivate returns false if the handler was not already active");
  207. handler.active = true;
  208. handler.layerIndex = Math.floor(Math.random() * 10);
  209. deactivated = handler.deactivate();
  210. t.ok(deactivated,
  211. "deactivate returns true if the handler was active already");
  212. t.eq(parseInt(layer.div.style.zIndex),
  213. handler.layerIndex,
  214. "deactivate sets the layer z-index back");
  215. }
  216. </script>
  217. </head>
  218. <body>
  219. <div id="map" style="width: 300px; height: 150px;"/>
  220. </body>
  221. </html>