source: trunk/themes/default/js/ui/jquery.ui.mouse.js @ 9559

Last change on this file since 9559 was 9559, checked in by patdenice, 13 years ago

Update jQuery UI to 1.8.10.
Improve jquery ui management in template class.

File size: 4.0 KB
Line 
1/*!
2 * jQuery UI Mouse 1.8.10
3 *
4 * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
5 * Dual licensed under the MIT or GPL Version 2 licenses.
6 * http://jquery.org/license
7 *
8 * http://docs.jquery.com/UI/Mouse
9 *
10 * Depends:
11 *      jquery.ui.widget.js
12 */
13(function( $, undefined ) {
14
15$.widget("ui.mouse", {
16        options: {
17                cancel: ':input,option',
18                distance: 1,
19                delay: 0
20        },
21        _mouseInit: function() {
22                var self = this;
23
24                this.element
25                        .bind('mousedown.'+this.widgetName, function(event) {
26                                return self._mouseDown(event);
27                        })
28                        .bind('click.'+this.widgetName, function(event) {
29                                if (true === $.data(event.target, self.widgetName + '.preventClickEvent')) {
30                                    $.removeData(event.target, self.widgetName + '.preventClickEvent');
31                                        event.stopImmediatePropagation();
32                                        return false;
33                                }
34                        });
35
36                this.started = false;
37        },
38
39        // TODO: make sure destroying one instance of mouse doesn't mess with
40        // other instances of mouse
41        _mouseDestroy: function() {
42                this.element.unbind('.'+this.widgetName);
43        },
44
45        _mouseDown: function(event) {
46                // don't let more than one widget handle mouseStart
47                // TODO: figure out why we have to use originalEvent
48                event.originalEvent = event.originalEvent || {};
49                if (event.originalEvent.mouseHandled) { return; }
50
51                // we may have missed mouseup (out of window)
52                (this._mouseStarted && this._mouseUp(event));
53
54                this._mouseDownEvent = event;
55
56                var self = this,
57                        btnIsLeft = (event.which == 1),
58                        elIsCancel = (typeof this.options.cancel == "string" ? $(event.target).parents().add(event.target).filter(this.options.cancel).length : false);
59                if (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) {
60                        return true;
61                }
62
63                this.mouseDelayMet = !this.options.delay;
64                if (!this.mouseDelayMet) {
65                        this._mouseDelayTimer = setTimeout(function() {
66                                self.mouseDelayMet = true;
67                        }, this.options.delay);
68                }
69
70                if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {
71                        this._mouseStarted = (this._mouseStart(event) !== false);
72                        if (!this._mouseStarted) {
73                                event.preventDefault();
74                                return true;
75                        }
76                }
77
78                // these delegates are required to keep context
79                this._mouseMoveDelegate = function(event) {
80                        return self._mouseMove(event);
81                };
82                this._mouseUpDelegate = function(event) {
83                        return self._mouseUp(event);
84                };
85                $(document)
86                        .bind('mousemove.'+this.widgetName, this._mouseMoveDelegate)
87                        .bind('mouseup.'+this.widgetName, this._mouseUpDelegate);
88
89                event.preventDefault();
90                event.originalEvent.mouseHandled = true;
91                return true;
92        },
93
94        _mouseMove: function(event) {
95                // IE mouseup check - mouseup happened when mouse was out of window
96                if ($.browser.msie && !(document.documentMode >= 9) && !event.button) {
97                        return this._mouseUp(event);
98                }
99
100                if (this._mouseStarted) {
101                        this._mouseDrag(event);
102                        return event.preventDefault();
103                }
104
105                if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {
106                        this._mouseStarted =
107                                (this._mouseStart(this._mouseDownEvent, event) !== false);
108                        (this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event));
109                }
110
111                return !this._mouseStarted;
112        },
113
114        _mouseUp: function(event) {
115                $(document)
116                        .unbind('mousemove.'+this.widgetName, this._mouseMoveDelegate)
117                        .unbind('mouseup.'+this.widgetName, this._mouseUpDelegate);
118
119                if (this._mouseStarted) {
120                        this._mouseStarted = false;
121
122                        if (event.target == this._mouseDownEvent.target) {
123                            $.data(event.target, this.widgetName + '.preventClickEvent', true);
124                        }
125
126                        this._mouseStop(event);
127                }
128
129                return false;
130        },
131
132        _mouseDistanceMet: function(event) {
133                return (Math.max(
134                                Math.abs(this._mouseDownEvent.pageX - event.pageX),
135                                Math.abs(this._mouseDownEvent.pageY - event.pageY)
136                        ) >= this.options.distance
137                );
138        },
139
140        _mouseDelayMet: function(event) {
141                return this.mouseDelayMet;
142        },
143
144        // These are placeholder methods, to be overriden by extending plugin
145        _mouseStart: function(event) {},
146        _mouseDrag: function(event) {},
147        _mouseStop: function(event) {},
148        _mouseCapture: function(event) { return true; }
149});
150
151})(jQuery);
Note: See TracBrowser for help on using the repository browser.