/* * 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) } });