diff options
Diffstat (limited to 'ecomp-portal-FE/client/bower_components/jqTree/lib/mouse.widget.js')
-rw-r--r-- | ecomp-portal-FE/client/bower_components/jqTree/lib/mouse.widget.js | 191 |
1 files changed, 191 insertions, 0 deletions
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/lib/mouse.widget.js b/ecomp-portal-FE/client/bower_components/jqTree/lib/mouse.widget.js new file mode 100644 index 00000000..93bdb576 --- /dev/null +++ b/ecomp-portal-FE/client/bower_components/jqTree/lib/mouse.widget.js @@ -0,0 +1,191 @@ + +/* +This widget does the same a the mouse widget in jqueryui. + */ +var $, MouseWidget, SimpleWidget, + extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, + hasProp = {}.hasOwnProperty; + +SimpleWidget = require('./simple.widget'); + +$ = jQuery; + +MouseWidget = (function(superClass) { + extend(MouseWidget, superClass); + + function MouseWidget() { + return MouseWidget.__super__.constructor.apply(this, arguments); + } + + MouseWidget.is_mouse_handled = false; + + MouseWidget.prototype._init = function() { + this.$el.bind('mousedown.mousewidget', $.proxy(this._mouseDown, this)); + this.$el.bind('touchstart.mousewidget', $.proxy(this._touchStart, this)); + this.is_mouse_started = false; + this.mouse_delay = 0; + this._mouse_delay_timer = null; + this._is_mouse_delay_met = true; + return this.mouse_down_info = null; + }; + + MouseWidget.prototype._deinit = function() { + var $document; + this.$el.unbind('mousedown.mousewidget'); + this.$el.unbind('touchstart.mousewidget'); + $document = $(document); + $document.unbind('mousemove.mousewidget'); + return $document.unbind('mouseup.mousewidget'); + }; + + MouseWidget.prototype._mouseDown = function(e) { + var result; + if (e.which !== 1) { + return; + } + result = this._handleMouseDown(e, this._getPositionInfo(e)); + if (result) { + e.preventDefault(); + } + return result; + }; + + MouseWidget.prototype._handleMouseDown = function(e, position_info) { + if (MouseWidget.is_mouse_handled) { + return; + } + if (this.is_mouse_started) { + this._handleMouseUp(position_info); + } + this.mouse_down_info = position_info; + if (!this._mouseCapture(position_info)) { + return; + } + this._handleStartMouse(); + this.is_mouse_handled = true; + return true; + }; + + MouseWidget.prototype._handleStartMouse = function() { + var $document; + $document = $(document); + $document.bind('mousemove.mousewidget', $.proxy(this._mouseMove, this)); + $document.bind('touchmove.mousewidget', $.proxy(this._touchMove, this)); + $document.bind('mouseup.mousewidget', $.proxy(this._mouseUp, this)); + $document.bind('touchend.mousewidget', $.proxy(this._touchEnd, this)); + if (this.mouse_delay) { + return this._startMouseDelayTimer(); + } + }; + + MouseWidget.prototype._startMouseDelayTimer = function() { + if (this._mouse_delay_timer) { + clearTimeout(this._mouse_delay_timer); + } + this._mouse_delay_timer = setTimeout((function(_this) { + return function() { + return _this._is_mouse_delay_met = true; + }; + })(this), this.mouse_delay); + return this._is_mouse_delay_met = false; + }; + + MouseWidget.prototype._mouseMove = function(e) { + return this._handleMouseMove(e, this._getPositionInfo(e)); + }; + + MouseWidget.prototype._handleMouseMove = function(e, position_info) { + if (this.is_mouse_started) { + this._mouseDrag(position_info); + return e.preventDefault(); + } + if (this.mouse_delay && !this._is_mouse_delay_met) { + return true; + } + this.is_mouse_started = this._mouseStart(this.mouse_down_info) !== false; + if (this.is_mouse_started) { + this._mouseDrag(position_info); + } else { + this._handleMouseUp(position_info); + } + return !this.is_mouse_started; + }; + + MouseWidget.prototype._getPositionInfo = function(e) { + return { + page_x: e.pageX, + page_y: e.pageY, + target: e.target, + original_event: e + }; + }; + + MouseWidget.prototype._mouseUp = function(e) { + return this._handleMouseUp(this._getPositionInfo(e)); + }; + + MouseWidget.prototype._handleMouseUp = function(position_info) { + var $document; + $document = $(document); + $document.unbind('mousemove.mousewidget'); + $document.unbind('touchmove.mousewidget'); + $document.unbind('mouseup.mousewidget'); + $document.unbind('touchend.mousewidget'); + if (this.is_mouse_started) { + this.is_mouse_started = false; + this._mouseStop(position_info); + } + }; + + MouseWidget.prototype._mouseCapture = function(position_info) { + return true; + }; + + MouseWidget.prototype._mouseStart = function(position_info) { + return null; + }; + + MouseWidget.prototype._mouseDrag = function(position_info) { + return null; + }; + + MouseWidget.prototype._mouseStop = function(position_info) { + return null; + }; + + MouseWidget.prototype.setMouseDelay = function(mouse_delay) { + return this.mouse_delay = mouse_delay; + }; + + MouseWidget.prototype._touchStart = function(e) { + var touch; + if (e.originalEvent.touches.length > 1) { + return; + } + touch = e.originalEvent.changedTouches[0]; + return this._handleMouseDown(e, this._getPositionInfo(touch)); + }; + + MouseWidget.prototype._touchMove = function(e) { + var touch; + if (e.originalEvent.touches.length > 1) { + return; + } + touch = e.originalEvent.changedTouches[0]; + return this._handleMouseMove(e, this._getPositionInfo(touch)); + }; + + MouseWidget.prototype._touchEnd = function(e) { + var touch; + if (e.originalEvent.touches.length > 1) { + return; + } + touch = e.originalEvent.changedTouches[0]; + return this._handleMouseUp(this._getPositionInfo(touch)); + }; + + return MouseWidget; + +})(SimpleWidget); + +module.exports = MouseWidget; |