From b5910f5f628e8c2421aff0b19eb44610abd51891 Mon Sep 17 00:00:00 2001 From: rolux Date: Sat, 30 Jun 2012 11:24:38 +0200 Subject: [PATCH] Ox.Element: use new event controller --- source/Ox.UI/js/Core/Element.js | 70 +++------------------------------ 1 file changed, 5 insertions(+), 65 deletions(-) diff --git a/source/Ox.UI/js/Core/Element.js b/source/Ox.UI/js/Core/Element.js index 04403ca0..c2bc5e78 100644 --- a/source/Ox.UI/js/Core/Element.js +++ b/source/Ox.UI/js/Core/Element.js @@ -81,10 +81,6 @@ Ox.Element = function(options, self) { self.defaults = {}; // allow for Ox.TestElement('') or Ox.TestElement('cssSelector') self.options = Ox.isString(options) ? {element: options} : options || {}; - // the actual event handler - self.$eventHandler = self.$eventHandler || $('
'); - // array of callbacks bound to any event - self.eventCallbacks = self.eventCallbacks || []; // stack of callbacks bound to option updates self.updateCallbacks = self.updateCallbacks || []; @@ -95,20 +91,6 @@ Ox.Element = function(options, self) { setTooltip(); - function bind(event, callback, once) { - self.$eventHandler[ - once ? 'one' : 'on' - ]('ox_' + event, function(event, data) { - call(callback, data, event); - }); - } - - function call(callback, data, event) { - event.ox_id = that.oxid; - event.ox_type = event.type.replace(/^ox_/, ''); - callback.call(that, data || {}, event); - } - function mousedown(e) { /* better mouse events @@ -275,13 +257,7 @@ Ox.Element = function(options, self) { Event names can be namespaced, like `'click.foo'` @*/ that.bindEvent = function() { - if (Ox.typeOf(arguments[0]) == 'function') { - self.eventCallbacks.push(arguments[0]); - } else { - Ox.forEach(Ox.makeObject(arguments), function(callback, event) { - bind(event, callback); - }); - } + Ox.Event.bind.apply(null, [self].concat(Ox.slice(arguments))); return that; }; @@ -295,9 +271,7 @@ Ox.Element = function(options, self) { Event names can be namespaced, like `'click.foo'` @*/ that.bindEventOnce = function() { - Ox.forEach(Ox.makeObject(arguments), function(callback, event) { - bind(event, callback, true); - }); + Ox.Event.bindOnce.apply(null, [self].concat(Ox.slice(arguments))); return that; }; @@ -381,13 +355,11 @@ Ox.Element = function(options, self) { @*/ that.remove = function(remove) { remove !== false && that.find('.OxElement').each(function() { - var oxid = $(this).data('oxid'), - element = Ox.UI.elements[oxid]; + var element = Ox.UI.elements[$(this).data('oxid')]; element && element.remove(false); }); Ox.Focus.remove(that.oxid); Ox.Keyboard.unbind(that.oxid); - delete self.$eventHandler; delete Ox.UI.elements[that.oxid]; that.$tooltip && that.$tooltip.remove(); remove !== false && that.$element.remove(); @@ -428,27 +400,7 @@ Ox.Element = function(options, self) { data Event data (key/value pairs) @*/ that.triggerEvent = function() { - Ox.forEach(Ox.makeObject(arguments), function(data, event) { - var type = 'ox_' + event; - // FIXME: remove this - if ([ - 'mousedown', 'mouserepeat', 'anyclick', 'singleclick', 'doubleclick', - 'dragstart', 'drag', 'dragenter', 'dragleave', 'dragpause', 'dragend', - 'draganddropstart', 'draganddrop', 'draganddropenter', 'draganddropleave', 'draganddropend', - 'playing', 'position', 'progress', 'request' - ].indexOf(event) == -1) { - if (!/^pandora_/.test(event)) { - Ox.Log('EVENT', that.oxid, self.options.id, 'trigger', event, data); - } - } - // it is necessary to check if self.$eventHandler exists, - // since, for example, when removing the element on click, - // singleclick will fire after the removal of the event handler - self.$eventHandler && self.$eventHandler.trigger(type, data); - self.eventCallbacks.forEach(function(callback) { - call(callback, data, {type: type}); - }); - }); + Ox.Event.trigger.apply(that, [self].concat(Ox.slice(arguments))); return that; }; @@ -469,19 +421,7 @@ Ox.Element = function(options, self) { event Event name @*/ that.unbindEvent = function() { - var callback = arguments[0]; - if (arguments.length == 0) { - self.eventCallbacks = []; - self.$eventHandler.off(); - } else if (Ox.typeOf(callback) == 'function') { - self.eventCallbacks = self.eventCallbacks.filter(function(fn) { - return fn !== callback; - }); - } else { - Ox.forEach(Ox.makeObject(arguments), function(callback, event) { - self.$eventHandler.off('ox_' + event, callback); - }); - } + Ox.Event.unbind.apply(null, [self].concat(Ox.slice(arguments))); return that; };