feat: implemented an event manager

This commit is contained in:
Johannes Eder 2021-06-14 14:44:03 +02:00 committed by Sarah Vaupel
parent 7d7c376622
commit c1c35369d1

View File

@ -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;
}
}