Don't subclass fx.Dragger - just use it.

This commit is contained in:
ahocevar
2012-06-22 18:25:44 +02:00
parent c54dda723a
commit 84ee96fbd0
+35 -72
View File
@@ -1,93 +1,56 @@
goog.provide('ol.event.Drag'); goog.provide('ol.event.Drag');
goog.require('ol.event.ISequence'); goog.require('ol.event.ISequence');
goog.require('ol.event.Events'); goog.require('ol.event');
goog.require('goog.functions');
goog.require('goog.fx.Dragger'); goog.require('goog.fx.Dragger');
goog.require('goog.fx.DragEvent'); goog.require('goog.fx.DragEvent');
goog.require('goog.fx.Dragger.EventType'); goog.require('goog.fx.Dragger.EventType');
goog.require('goog.functions');
/** /**
* @constructor * @constructor
* @param {ol.event.Events} target The Events instance that handles events. * @param {ol.event.Events} target The Events instance that handles events.
* @extends {goog.fx.Dragger}
* @implements {ol.event.ISequence} * @implements {ol.event.ISequence}
* @export * @export
*/ */
ol.event.Drag = function(target) { ol.event.Drag = function(target) {
goog.base(this, target.getElement()); var previousX = 0, previousY = 0,
element = target.getElement(),
/** dragger = new goog.fx.Dragger(element);
* @private
* @type {ol.event.Events}
*/
this.target_ = target;
/**
* @private
* @type {number} clientX of the previous event
*/
this.previousX_ = 0;
/**
* @private
* @type {number} clientY of the previous event
*/
this.previousY_ = 0;
};
goog.inherits(ol.event.Drag, goog.fx.Dragger);
/** /**
* @param {string|goog.fx.DragEvent} e * @private
* @return {boolean} If anyone called preventDefault on the event object (or * @type {goog.fx.Dragger}
* if any of the handlers returns false this will also return false. */
*/ this.dragger_ = dragger;
ol.event.Drag.prototype.dispatchEvent = function(e) {
if (e instanceof goog.fx.DragEvent) { dragger.defaultAction = function(x, y) {};
if (e.type === goog.fx.Dragger.EventType.START) { dragger.addEventListener(goog.fx.Dragger.EventType.START, function(evt) {
e.type = ol.event.Drag.EventType.DRAGSTART; evt.target = element;
} else if (e.type === goog.fx.Dragger.EventType.END) { evt.type = 'dragstart';
e.type = ol.event.Drag.EventType.DRAGEND; previousX = evt.clientX;
} previousY = evt.clientY;
e.target = e.browserEvent.target; target.triggerEvent(evt.type, evt);
e.dx = e.clientX - this.previousX_; });
e.dy = e.clientY - this.previousY_; dragger.addEventListener(goog.fx.Dragger.EventType.DRAG, function(evt) {
} evt.target = element;
this.target_.triggerEvent(e.type, /** @type {Object} (e.type) */ (e)); evt.dx = evt.clientX - previousX;
return goog.base(this, 'dispatchEvent', e); evt.dy = evt.clientY - previousY;
previousX = evt.clientX;
previousY = evt.clientY;
target.triggerEvent(evt.type, evt);
});
dragger.addEventListener(goog.fx.Dragger.EventType.END, function(evt) {
evt.target = element;
evt.type = 'dragend';
target.triggerEvent(evt.type, evt);
});
}; };
/** @inheritDoc */ /** @inheritDoc */
ol.event.Drag.prototype.startDrag = function(e) { ol.event.Drag.prototype.destroy = function() {
goog.base(this, 'startDrag', e); this.dragger_.dispose();
this.previousX_ = e.clientX;
this.previousY_ = e.clientY;
}; };
/** @override */
ol.event.Drag.prototype.doDrag = function(e, x, y, dragFromScroll) {
goog.base(this, 'doDrag', e, x, y, dragFromScroll);
this.previousX_ = e.clientX;
this.previousY_ = e.clientY;
};
/** @inheritDoc */ ol.event.addSequenceProvider('drag', ol.event.Drag);
ol.event.Drag.prototype.defaultAction = function(x, y) {};
/** @inheritDoc */
ol.event.Drag.prototype.destroy = ol.event.Drag.prototype.dispose;
ol.event.addSequenceProvider('drag', ol.event.Drag);
/**
* @type {Object.<string, string>}
*/
ol.event.Drag.EventType = {
DRAGSTART: 'dragstart',
DRAG: goog.fx.Dragger.EventType.DRAG,
DRAGEND: 'dragend'
};