| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260 | 
							- <!DOCTYPE html>
 
- <html>
 
- <head>
 
-   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
-   <title>The source code</title>
 
-   <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />
 
-   <script type="text/javascript" src="../resources/prettify/prettify.js"></script>
 
-   <style type="text/css">
 
-     .highlight { display: block; background-color: #ddd; }
 
-   </style>
 
-   <script type="text/javascript">
 
-     function highlight() {
 
-       document.getElementById(location.hash.replace(/#/, "")).className = "highlight";
 
-     }
 
-   </script>
 
- </head>
 
- <body onload="prettyPrint(); highlight();">
 
-   <pre class="prettyprint lang-js"><span id='Ext-util-ClickRepeater'>/**
 
- </span> * 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 20 milliseconds.
 
-  *
 
-  * Optionally, a CSS class may be applied to the element during the time it is pressed.
 
-  */
 
- Ext.define('Ext.util.ClickRepeater', {
 
-     extend: 'Ext.util.Observable',
 
- <span id='Ext-util-ClickRepeater-method-constructor'>    /**
 
- </span>     * Creates new ClickRepeater.
 
-      * @param {String/HTMLElement/Ext.Element} el The element or its ID to listen on
 
-      * @param {Object} [config] Config object.
 
-      */
 
-     constructor : function(el, config){
 
-         var me = this;
 
-         me.el = Ext.get(el);
 
-         me.el.unselectable();
 
-         Ext.apply(me, config);
 
-         me.callParent();
 
-         me.addEvents(
 
- <span id='Ext-util-ClickRepeater-event-mousedown'>        /**
 
- </span>         * @event mousedown
 
-          * Fires when the mouse button is depressed.
 
-          * @param {Ext.util.ClickRepeater} this
 
-          * @param {Ext.EventObject} e
 
-          */
 
-         "mousedown",
 
- <span id='Ext-util-ClickRepeater-event-click'>        /**
 
- </span>         * @event click
 
-          * Fires on a specified interval during the time the element is pressed.
 
-          * @param {Ext.util.ClickRepeater} this
 
-          * @param {Ext.EventObject} e
 
-          */
 
-         "click",
 
- <span id='Ext-util-ClickRepeater-event-mouseup'>        /**
 
- </span>         * @event mouseup
 
-          * Fires when the mouse key is released.
 
-          * @param {Ext.util.ClickRepeater} this
 
-          * @param {Ext.EventObject} e
 
-          */
 
-         "mouseup"
 
-         );
 
-         if(!me.disabled){
 
-             me.disabled = true;
 
-             me.enable();
 
-         }
 
-         // allow inline handler
 
-         if(me.handler){
 
-             me.on("click", me.handler,  me.scope || me);
 
-         }
 
-     },
 
- <span id='Ext-util-ClickRepeater-cfg-el'>    /**
 
- </span>     * @cfg {String/HTMLElement/Ext.Element} el
 
-      * The element to act as a button.
 
-      */
 
- <span id='Ext-util-ClickRepeater-cfg-pressedCls'>    /**
 
- </span>     * @cfg {String} pressedCls
 
-      * A CSS class name to be applied to the element while pressed.
 
-      */
 
- <span id='Ext-util-ClickRepeater-cfg-accelerate'>    /**
 
- </span>     * @cfg {Boolean} accelerate
 
-      * True if autorepeating should start slowly and accelerate.
 
-      * "interval" and "delay" are ignored.
 
-      */
 
- <span id='Ext-util-ClickRepeater-cfg-interval'>    /**
 
- </span>     * @cfg {Number} interval
 
-      * The interval between firings of the "click" event (in milliseconds).
 
-      */
 
-     interval : 20,
 
- <span id='Ext-util-ClickRepeater-cfg-delay'>    /**
 
- </span>     * @cfg {Number} delay
 
-      * The initial delay before the repeating event begins firing.
 
-      * Similar to an autorepeat key delay.
 
-      */
 
-     delay: 250,
 
- <span id='Ext-util-ClickRepeater-cfg-preventDefault'>    /**
 
- </span>     * @cfg {Boolean} preventDefault
 
-      * True to prevent the default click event
 
-      */
 
-     preventDefault : true,
 
- <span id='Ext-util-ClickRepeater-cfg-stopDefault'>    /**
 
- </span>     * @cfg {Boolean} stopDefault
 
-      * True to stop the default click event
 
-      */
 
-     stopDefault : false,
 
-     timer : 0,
 
- <span id='Ext-util-ClickRepeater-method-enable'>    /**
 
- </span>     * Enables the repeater and allows events to fire.
 
-      */
 
-     enable: function(){
 
-         if(this.disabled){
 
-             this.el.on('mousedown', this.handleMouseDown, this);
 
-             // IE versions will detect clicks as in sequence as dblclicks
 
-             // if they happen in quick succession
 
-             if (Ext.isIE && !(Ext.isStrict && Ext.isIE9)){
 
-                 this.el.on('dblclick', this.handleDblClick, this);
 
-             }
 
-             if(this.preventDefault || this.stopDefault){
 
-                 this.el.on('click', this.eventOptions, this);
 
-             }
 
-         }
 
-         this.disabled = false;
 
-     },
 
- <span id='Ext-util-ClickRepeater-method-disable'>    /**
 
- </span>     * Disables the repeater and stops events from firing.
 
-      */
 
-     disable: function(/* private */ force){
 
-         if(force || !this.disabled){
 
-             clearTimeout(this.timer);
 
-             if(this.pressedCls){
 
-                 this.el.removeCls(this.pressedCls);
 
-             }
 
-             Ext.getDoc().un('mouseup', this.handleMouseUp, this);
 
-             this.el.removeAllListeners();
 
-         }
 
-         this.disabled = true;
 
-     },
 
- <span id='Ext-util-ClickRepeater-method-setDisabled'>    /**
 
- </span>     * Convenience function for setting disabled/enabled by boolean.
 
-      * @param {Boolean} disabled
 
-      */
 
-     setDisabled: function(disabled){
 
-         this[disabled ? 'disable' : 'enable']();
 
-     },
 
-     eventOptions: function(e){
 
-         if(this.preventDefault){
 
-             e.preventDefault();
 
-         }
 
-         if(this.stopDefault){
 
-             e.stopEvent();
 
-         }
 
-     },
 
-     // private
 
-     destroy : function() {
 
-         this.disable(true);
 
-         Ext.destroy(this.el);
 
-         this.clearListeners();
 
-     },
 
-     handleDblClick : function(e){
 
-         clearTimeout(this.timer);
 
-         this.el.blur();
 
-         this.fireEvent("mousedown", this, e);
 
-         this.fireEvent("click", this, e);
 
-     },
 
-     // private
 
-     handleMouseDown : function(e){
 
-         clearTimeout(this.timer);
 
-         this.el.blur();
 
-         if(this.pressedCls){
 
-             this.el.addCls(this.pressedCls);
 
-         }
 
-         this.mousedownTime = new Date();
 
-         Ext.getDoc().on("mouseup", this.handleMouseUp, this);
 
-         this.el.on("mouseout", this.handleMouseOut, this);
 
-         this.fireEvent("mousedown", this, e);
 
-         this.fireEvent("click", this, e);
 
-         // Do not honor delay or interval if acceleration wanted.
 
-         if (this.accelerate) {
 
-             this.delay = 400;
 
-         }
 
-         // Re-wrap the event object in a non-shared object, so it doesn't lose its context if
 
-         // the global shared EventObject gets a new Event put into it before the timer fires.
 
-         e = new Ext.EventObjectImpl(e);
 
-         this.timer =  Ext.defer(this.click, this.delay || this.interval, this, [e]);
 
-     },
 
-     // private
 
-     click : function(e){
 
-         this.fireEvent("click", this, e);
 
-         this.timer =  Ext.defer(this.click, this.accelerate ?
 
-             this.easeOutExpo(Ext.Date.getElapsed(this.mousedownTime),
 
-                 400,
 
-                 -390,
 
-                 12000) :
 
-             this.interval, this, [e]);
 
-     },
 
-     easeOutExpo : function (t, b, c, d) {
 
-         return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
 
-     },
 
-     // private
 
-     handleMouseOut : function(){
 
-         clearTimeout(this.timer);
 
-         if(this.pressedCls){
 
-             this.el.removeCls(this.pressedCls);
 
-         }
 
-         this.el.on("mouseover", this.handleMouseReturn, this);
 
-     },
 
-     // private
 
-     handleMouseReturn : function(){
 
-         this.el.un("mouseover", this.handleMouseReturn, this);
 
-         if(this.pressedCls){
 
-             this.el.addCls(this.pressedCls);
 
-         }
 
-         this.click();
 
-     },
 
-     // private
 
-     handleMouseUp : function(e){
 
-         clearTimeout(this.timer);
 
-         this.el.un("mouseover", this.handleMouseReturn, this);
 
-         this.el.un("mouseout", this.handleMouseOut, this);
 
-         Ext.getDoc().un("mouseup", this.handleMouseUp, this);
 
-         if(this.pressedCls){
 
-             this.el.removeCls(this.pressedCls);
 
-         }
 
-         this.fireEvent("mouseup", this, e);
 
-     }
 
- });
 
- </pre>
 
- </body>
 
- </html>
 
 
  |