+++ /dev/null
-<html><head><title>/home/alan/gitlive/roojs1/Roo/util/ClickRepeater.js</title><link rel="stylesheet" type="text/css" href="../../css/highlight-js.css"/></head><body class="highlightpage"><code class="jsdoc-pretty"><span class="jsdoc-comment">/*
- * Based on:
- * Ext JS Library 1.1.1
- * Copyright(c) 2006-2007, Ext JS, LLC.
- *
- * Originally Released Under LGPL - original licence link has changed is not relivant.
- *
- * Fork - LGPL
- * <script type="text/javascript">
- */
-
-
-
-/**
- * @class Roo.util.ClickRepeater
- * @extends Roo.util.Observable
- *
- * A wrapper class which can be applied to any element. Fires a "click" event while the
- * mouse is pressed. The interval between firings may be specified in the config but
- * defaults to 10 milliseconds.
- *
- * Optionally, a CSS class may be applied to the element during the time it is pressed.
- *
- * @cfg {String/HTMLElement/Element} el The element to act as a button.
- * @cfg {Number} delay The initial delay before the repeating event begins firing.
- * Similar to an autorepeat key delay.
- * @cfg {Number} interval The interval between firings of the "click" event. Default 10 ms.
- * @cfg {String} pressClass A CSS class name to be applied to the element while pressed.
- * @cfg {Boolean} accelerate True if autorepeating should start slowly and accelerate.
- * "interval" and "delay" are ignored. "immediate" is honored.
- * @cfg {Boolean} preventDefault True to prevent the default click event
- * @cfg {Boolean} stopDefault True to stop the default click event
- *
- * @history
- * 2007-02-02 jvs Original code contributed by Nige "Animal" White
- * 2007-02-02 jvs Renamed to ClickRepeater
- * 2007-02-03 jvs Modifications for FF Mac and Safari
- *
- * @constructor
- * @param {String/HTMLElement/Element} el The element to listen on
- * @param {Object} config
- **/
-</span><span class="jsdoc-var">Roo.util.ClickRepeater </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">config</span><span class="jsdoc-syntax">)
-{
- </span><span class="jsdoc-var">this.el </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">);
- </span><span class="jsdoc-var">this.el.unselectable</span><span class="jsdoc-syntax">();
-
- </span><span class="jsdoc-var">Roo.apply</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">config</span><span class="jsdoc-syntax">);
-
- </span><span class="jsdoc-var">this.addEvents</span><span class="jsdoc-syntax">({
- </span><span class="jsdoc-comment">/**
- * @event mousedown
- * Fires when the mouse button is depressed.
- * @param {Roo.util.ClickRepeater} this
- */
- </span><span class="jsdoc-string">"mousedown" </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
- </span><span class="jsdoc-comment">/**
- * @event click
- * Fires on a specified interval during the time the element is pressed.
- * @param {Roo.util.ClickRepeater} this
- */
- </span><span class="jsdoc-string">"click" </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
- </span><span class="jsdoc-comment">/**
- * @event mouseup
- * Fires when the mouse key is released.
- * @param {Roo.util.ClickRepeater} this
- */
- </span><span class="jsdoc-string">"mouseup" </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true
- </span><span class="jsdoc-syntax">});
-
- </span><span class="jsdoc-var">this.el.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"mousedown"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.handleMouseDown</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
- </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.preventDefault </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">this.stopDefault</span><span class="jsdoc-syntax">){
- </span><span class="jsdoc-var">this.el.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"click"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">){
- </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.preventDefault</span><span class="jsdoc-syntax">){
- </span><span class="jsdoc-var">e.preventDefault</span><span class="jsdoc-syntax">();
- }
- </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.stopDefault</span><span class="jsdoc-syntax">){
- </span><span class="jsdoc-var">e.stopEvent</span><span class="jsdoc-syntax">();
- }
- }, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
- }
-
- </span><span class="jsdoc-comment">// allow inline handler
- </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.handler</span><span class="jsdoc-syntax">){
- </span><span class="jsdoc-var">this.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"click"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.handler</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.scope </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
- }
-
- </span><span class="jsdoc-var">Roo.util.ClickRepeater.superclass.constructor.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
-};
-
-</span><span class="jsdoc-var">Roo.extend</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.util.ClickRepeater</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">Roo.util.Observable</span><span class="jsdoc-syntax">, {
- </span><span class="jsdoc-var">interval </span><span class="jsdoc-syntax">: 20,
- </span><span class="jsdoc-var">delay</span><span class="jsdoc-syntax">: 250,
- </span><span class="jsdoc-var">preventDefault </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
- </span><span class="jsdoc-var">stopDefault </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
- </span><span class="jsdoc-var">timer </span><span class="jsdoc-syntax">: 0,
-
- </span><span class="jsdoc-comment">// private
- </span><span class="jsdoc-var">handleMouseDown </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
- </span><span class="jsdoc-var">clearTimeout</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.timer</span><span class="jsdoc-syntax">);
- </span><span class="jsdoc-var">this.el.blur</span><span class="jsdoc-syntax">();
- </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.pressClass</span><span class="jsdoc-syntax">){
- </span><span class="jsdoc-var">this.el.addClass</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.pressClass</span><span class="jsdoc-syntax">);
- }
- </span><span class="jsdoc-var">this.mousedownTime </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Date</span><span class="jsdoc-syntax">();
-
- </span><span class="jsdoc-var">Roo.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">document</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"mouseup"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.handleMouseUp</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
- </span><span class="jsdoc-var">this.el.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"mouseout"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.handleMouseOut</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
-
- </span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"mousedown"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
- </span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"click"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
-
- </span><span class="jsdoc-var">this.timer </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.click.defer</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.delay </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">this.interval</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
- },
-
- </span><span class="jsdoc-comment">// private
- </span><span class="jsdoc-var">click </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
- </span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"click"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
- </span><span class="jsdoc-var">this.timer </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.click.defer</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.getInterval</span><span class="jsdoc-syntax">(), </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
- },
-
- </span><span class="jsdoc-comment">// private
- </span><span class="jsdoc-var">getInterval</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
- </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.accelerate</span><span class="jsdoc-syntax">){
- </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.interval</span><span class="jsdoc-syntax">;
- }
- </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">pressTime </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.mousedownTime.getElapsed</span><span class="jsdoc-syntax">();
- </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">pressTime </span><span class="jsdoc-syntax">< 500){
- </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">400;
- }</span><span class="jsdoc-keyword">else if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">pressTime </span><span class="jsdoc-syntax">< 1700){
- </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">320;
- }</span><span class="jsdoc-keyword">else if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">pressTime </span><span class="jsdoc-syntax">< 2600){
- </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">250;
- }</span><span class="jsdoc-keyword">else if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">pressTime </span><span class="jsdoc-syntax">< 3500){
- </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">180;
- }</span><span class="jsdoc-keyword">else if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">pressTime </span><span class="jsdoc-syntax">< 4400){
- </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">140;
- }</span><span class="jsdoc-keyword">else if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">pressTime </span><span class="jsdoc-syntax">< 5300){
- </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">80;
- }</span><span class="jsdoc-keyword">else if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">pressTime </span><span class="jsdoc-syntax">< 6200){
- </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">50;
- }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
- </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">10;
- }
- },
-
- </span><span class="jsdoc-comment">// private
- </span><span class="jsdoc-var">handleMouseOut </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
- </span><span class="jsdoc-var">clearTimeout</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.timer</span><span class="jsdoc-syntax">);
- </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.pressClass</span><span class="jsdoc-syntax">){
- </span><span class="jsdoc-var">this.el.removeClass</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.pressClass</span><span class="jsdoc-syntax">);
- }
- </span><span class="jsdoc-var">this.el.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"mouseover"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.handleMouseReturn</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
- },
-
- </span><span class="jsdoc-comment">// private
- </span><span class="jsdoc-var">handleMouseReturn </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
- </span><span class="jsdoc-var">this.el.un</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"mouseover"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.handleMouseReturn</span><span class="jsdoc-syntax">);
- </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.pressClass</span><span class="jsdoc-syntax">){
- </span><span class="jsdoc-var">this.el.addClass</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.pressClass</span><span class="jsdoc-syntax">);
- }
- </span><span class="jsdoc-var">this.click</span><span class="jsdoc-syntax">();
- },
-
- </span><span class="jsdoc-comment">// private
- </span><span class="jsdoc-var">handleMouseUp </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
- </span><span class="jsdoc-var">clearTimeout</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.timer</span><span class="jsdoc-syntax">);
- </span><span class="jsdoc-var">this.el.un</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"mouseover"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.handleMouseReturn</span><span class="jsdoc-syntax">);
- </span><span class="jsdoc-var">this.el.un</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"mouseout"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.handleMouseOut</span><span class="jsdoc-syntax">);
- </span><span class="jsdoc-var">Roo.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">document</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.un</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"mouseup"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.handleMouseUp</span><span class="jsdoc-syntax">);
- </span><span class="jsdoc-var">this.el.removeClass</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.pressClass</span><span class="jsdoc-syntax">);
- </span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"mouseup"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
- }
-});</span></code></body></html>
\ No newline at end of file