EventManager.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. "use strict";
  2. /**
  3. * EventManager is used to manager DOM events creationg and destruction in a single function call.
  4. *
  5. * It is used by objects to make it easier to add and remove events from global DOM objects.
  6. *
  7. * @class
  8. */
  9. function EventManager()
  10. {
  11. /**
  12. * Stores all events in the manager, their target and callback.
  13. *
  14. * Format [target, event, callback, active]
  15. *
  16. * @type {Array}
  17. */
  18. this.events = [];
  19. }
  20. /**
  21. * Add new event to the manager.
  22. *
  23. * @param {DOM} target Event target element.
  24. * @param {String} event Event name.
  25. * @param {Function} callback Callback function.
  26. */
  27. EventManager.prototype.add = function(target, event, callback)
  28. {
  29. this.events.push([target, event, callback, false]);
  30. };
  31. /**
  32. * Destroys this manager and remove all events.
  33. */
  34. EventManager.prototype.clear = function()
  35. {
  36. this.destroy();
  37. this.events = [];
  38. };
  39. /**
  40. * Creates all events in this manager.
  41. */
  42. EventManager.prototype.create = function()
  43. {
  44. for(var i = 0; i < this.events.length; i++)
  45. {
  46. var event = this.events[i];
  47. event[0].addEventListener(event[1], event[2]);
  48. event[3] = true;
  49. }
  50. };
  51. /**
  52. * Removes all events in this manager.
  53. */
  54. EventManager.prototype.destroy = function()
  55. {
  56. for(var i = 0; i < this.events.length; i++)
  57. {
  58. var event = this.events[i];
  59. event[0].removeEventListener(event[1], event[2]);
  60. event[3] = false;
  61. }
  62. };
  63. //export {EventManager};