From c1c35369d1ae017971e6d8cbafc06844f02fd00d Mon Sep 17 00:00:00 2001 From: Johannes Eder Date: Mon, 14 Jun 2021 14:44:03 +0200 Subject: [PATCH] feat: implemented an event manager --- .../src/lib/event-manager/event-manager.js | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 frontend/src/lib/event-manager/event-manager.js diff --git a/frontend/src/lib/event-manager/event-manager.js b/frontend/src/lib/event-manager/event-manager.js new file mode 100644 index 000000000..810cfab55 --- /dev/null +++ b/frontend/src/lib/event-manager/event-manager.js @@ -0,0 +1,65 @@ + +export const EVENT_TYPE = { + CLICK : 'click', + KEYDOWN : 'keydown', + //more to be added +}; + + + +export class EventManager { + _registeredListeners; + + + constructor() { + this._registeredListeners = []; + } + + registerNewListener(eventWrapper) { + this._debugLog('registerNewListener', eventWrapper); + let element = eventWrapper.element; + element.addEventListener(eventWrapper.eventType, eventWrapper.eventHandler); + this._registeredListeners.push(eventWrapper); + } + + removeAllEventListenersFromUtil() { + this._debugLog('removeAllEventListenersFromUtil',); + for (let eventWrapper of this._registeredListeners) { + let element = eventWrapper.element; + element.removeEventListener(eventWrapper.eventType, eventWrapper.eventHandler); + } + this._registeredListeners = []; + } + + //_debugLog() {} + _debugLog(fName, ...args) { + console.log(`[DEBUGLOG] EventManager.${fName}`, { args: args, instance: this }); + } +} + +export class EventWrapper { + _eventType; + _eventHandler; + _element; + + constructor(_eventType, _eventHandler, _element) { + if(!_eventType || !_eventHandler || !_element) { + throw new Error('Not enough arguments!'); + } + this._eventType = _eventType; + this._eventHandler = _eventHandler; + this._element = _element; + } + + get eventType() { + return this._eventType; + } + + get eventHandler() { + return this._eventHandler; + } + + get element() { + return this._element; + } +} \ No newline at end of file