123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- /*
- * Ext JS Library 2.0 Copyright(c) 2006-2007, Ext JS, LLC. licensing@extjs.com
- *
- * http://extjs.com/license
- */
- Ext.util.ClickRepeater = function(B, A) {
- this.el = Ext.get(B);
- this.el.unselectable();
- Ext.apply(this, A);
- this.addEvents("mousedown", "click", "mouseup");
- this.el.on("mousedown", this.handleMouseDown, this);
- if (this.preventDefault || this.stopDefault) {
- this.el.on("click", function(C) {
- if (this.preventDefault) {
- C.preventDefault()
- }
- if (this.stopDefault) {
- C.stopEvent()
- }
- }, this)
- }
- if (this.handler) {
- this.on("click", this.handler, this.scope || this)
- }
- Ext.util.ClickRepeater.superclass.constructor.call(this)
- };
- Ext.extend(Ext.util.ClickRepeater, Ext.util.Observable, {
- interval : 20,
- delay : 250,
- preventDefault : true,
- stopDefault : false,
- timer : 0,
- handleMouseDown : function() {
- clearTimeout(this.timer);
- this.el.blur();
- if (this.pressClass) {
- this.el.addClass(this.pressClass)
- }
- this.mousedownTime = allGetServerTime();
- Ext.getDoc().on("mouseup", this.handleMouseUp, this);
- this.el.on("mouseout", this.handleMouseOut, this);
- this.fireEvent("mousedown", this);
- this.fireEvent("click", this);
- if (this.accelerate) {
- this.delay = 400
- }
- this.timer = this.click
- .defer(this.delay || this.interval, this)
- },
- click : function() {
- this.fireEvent("click", this);
- this.timer = this.click
- .defer( this.accelerate ? this.easeOutExpo(
- this.mousedownTime.getElapsed(), 400,
- -390, 12000) : this.interval, this)
- },
- easeOutExpo : function(B, A, D, C) {
- return (B == C) ? A + D : D * (-Math.pow(2, -10 * B / C) + 1)
- + A
- },
- handleMouseOut : function() {
- clearTimeout(this.timer);
- if (this.pressClass) {
- this.el.removeClass(this.pressClass)
- }
- this.el.on("mouseover", this.handleMouseReturn, this)
- },
- handleMouseReturn : function() {
- this.el.un("mouseover", this.handleMouseReturn);
- if (this.pressClass) {
- this.el.addClass(this.pressClass)
- }
- this.click()
- },
- handleMouseUp : function() {
- clearTimeout(this.timer);
- this.el.un("mouseover", this.handleMouseReturn);
- this.el.un("mouseout", this.handleMouseOut);
- Ext.getDoc().un("mouseup", this.handleMouseUp);
- this.el.removeClass(this.pressClass);
- this.fireEvent("mouseup", this)
- }
- });
|