X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/ee06f37b0f6f6d94cd05a6ffae556660f7c4a2bc..c930e9176a5a85509c5b0230e2bff5c22a591432:/docs/source/EventManager-more.html diff --git a/docs/source/EventManager-more.html b/docs/source/EventManager-more.html new file mode 100644 index 00000000..ffdd0cf8 --- /dev/null +++ b/docs/source/EventManager-more.html @@ -0,0 +1,337 @@ + + + The source code + + + + +
/**
+ * @class Ext.EventManager
+ */
+Ext.apply(Ext.EventManager, function(){
+	var resizeEvent, 
+    	resizeTask, 
+    	textEvent, 
+    	textSize,
+    	D = Ext.lib.Dom,
+    	E = Ext.lib.Event,
+    	propRe = /^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized|args|delegate)$/,
+        curWidth = 0,
+        curHeight = 0,
+        // note 1: IE fires ONLY the keydown event on specialkey autorepeat
+        // note 2: Safari < 3.1, Gecko (Mac/Linux) & Opera fire only the keypress event on specialkey autorepeat
+        // (research done by @Jan Wolter at http://unixpapa.com/js/key.html)
+        useKeydown = Ext.isSafari ? 
+                    Ext.num(navigator.userAgent.toLowerCase().match(/version\/(\d+\.\d)/)[1] || 2) >= 3.1 :
+                    !((Ext.isGecko && !Ext.isWindows) || Ext.isOpera);
+      	
+	return { 
+		// private
+	    doResizeEvent: function(){
+            var h = D.getViewHeight(),
+                w = D.getViewWidth();
+            
+            //whacky problem in IE where the resize event will fire even though the w/h are the same.
+            if(curHeight != h || curWidth != w){
+                resizeEvent.fire(curWidth = w, curHeight = h);
+            }
+	    },
+	    
+	    
/** + * Fires when the window is resized and provides resize event buffering (50 milliseconds), passes new viewport width and height to handlers. + * @param {Function} fn The method the event invokes + * @param {Object} scope An object that becomes the scope of the handler + * @param {boolean} options + */ + onWindowResize : function(fn, scope, options){ + if(!resizeEvent){ + resizeEvent = new Ext.util.Event(); + resizeTask = new Ext.util.DelayedTask(this.doResizeEvent); + E.on(window, "resize", this.fireWindowResize, this); + } + resizeEvent.addListener(fn, scope, options); + }, + + // exposed only to allow manual firing + fireWindowResize : function(){ + if(resizeEvent){ + if((Ext.isIE||Ext.isAir) && resizeTask){ + resizeTask.delay(50); + }else{ + resizeEvent.fire(D.getViewWidth(), D.getViewHeight()); + } + } + }, + +
/** + * Fires when the user changes the active text size. Handler gets called with 2 params, the old size and the new size. + * @param {Function} fn The method the event invokes + * @param {Object} scope An object that becomes the scope of the handler + * @param {boolean} options + */ + onTextResize : function(fn, scope, options){ + if(!textEvent){ + textEvent = new Ext.util.Event(); + var textEl = new Ext.Element(document.createElement('div')); + textEl.dom.className = 'x-text-resize'; + textEl.dom.innerHTML = 'X'; + textEl.appendTo(document.body); + textSize = textEl.dom.offsetHeight; + setInterval(function(){ + if(textEl.dom.offsetHeight != textSize){ + textEvent.fire(textSize, textSize = textEl.dom.offsetHeight); + } + }, this.textResizeInterval); + } + textEvent.addListener(fn, scope, options); + }, + +
/** + * Removes the passed window resize listener. + * @param {Function} fn The method the event invokes + * @param {Object} scope The scope of handler + */ + removeResizeListener : function(fn, scope){ + if(resizeEvent){ + resizeEvent.removeListener(fn, scope); + } + }, + + // private + fireResize : function(){ + if(resizeEvent){ + resizeEvent.fire(D.getViewWidth(), D.getViewHeight()); + } + }, + +
/** + * The frequency, in milliseconds, to check for text resize events (defaults to 50) + */ + textResizeInterval : 50, + +
/** + * Url used for onDocumentReady with using SSL (defaults to Ext.SSL_SECURE_URL) + */ + ieDeferSrc : false, + + // protected for use inside the framework + // detects whether we should use keydown or keypress based on the browser. + useKeydown: useKeydown + }; +}()); + +Ext.EventManager.on = Ext.EventManager.addListener; + + +Ext.apply(Ext.EventObjectImpl.prototype, { +
/** Key constant @type Number */ + BACKSPACE: 8, +
/** Key constant @type Number */ + TAB: 9, +
/** Key constant @type Number */ + NUM_CENTER: 12, +
/** Key constant @type Number */ + ENTER: 13, +
/** Key constant @type Number */ + RETURN: 13, +
/** Key constant @type Number */ + SHIFT: 16, +
/** Key constant @type Number */ + CTRL: 17, + CONTROL : 17, // legacy +
/** Key constant @type Number */ + ALT: 18, +
/** Key constant @type Number */ + PAUSE: 19, +
/** Key constant @type Number */ + CAPS_LOCK: 20, +
/** Key constant @type Number */ + ESC: 27, +
/** Key constant @type Number */ + SPACE: 32, +
/** Key constant @type Number */ + PAGE_UP: 33, + PAGEUP : 33, // legacy +
/** Key constant @type Number */ + PAGE_DOWN: 34, + PAGEDOWN : 34, // legacy +
/** Key constant @type Number */ + END: 35, +
/** Key constant @type Number */ + HOME: 36, +
/** Key constant @type Number */ + LEFT: 37, +
/** Key constant @type Number */ + UP: 38, +
/** Key constant @type Number */ + RIGHT: 39, +
/** Key constant @type Number */ + DOWN: 40, +
/** Key constant @type Number */ + PRINT_SCREEN: 44, +
/** Key constant @type Number */ + INSERT: 45, +
/** Key constant @type Number */ + DELETE: 46, +
/** Key constant @type Number */ + ZERO: 48, +
/** Key constant @type Number */ + ONE: 49, +
/** Key constant @type Number */ + TWO: 50, +
/** Key constant @type Number */ + THREE: 51, +
/** Key constant @type Number */ + FOUR: 52, +
/** Key constant @type Number */ + FIVE: 53, +
/** Key constant @type Number */ + SIX: 54, +
/** Key constant @type Number */ + SEVEN: 55, +
/** Key constant @type Number */ + EIGHT: 56, +
/** Key constant @type Number */ + NINE: 57, +
/** Key constant @type Number */ + A: 65, +
/** Key constant @type Number */ + B: 66, +
/** Key constant @type Number */ + C: 67, +
/** Key constant @type Number */ + D: 68, +
/** Key constant @type Number */ + E: 69, +
/** Key constant @type Number */ + F: 70, +
/** Key constant @type Number */ + G: 71, +
/** Key constant @type Number */ + H: 72, +
/** Key constant @type Number */ + I: 73, +
/** Key constant @type Number */ + J: 74, +
/** Key constant @type Number */ + K: 75, +
/** Key constant @type Number */ + L: 76, +
/** Key constant @type Number */ + M: 77, +
/** Key constant @type Number */ + N: 78, +
/** Key constant @type Number */ + O: 79, +
/** Key constant @type Number */ + P: 80, +
/** Key constant @type Number */ + Q: 81, +
/** Key constant @type Number */ + R: 82, +
/** Key constant @type Number */ + S: 83, +
/** Key constant @type Number */ + T: 84, +
/** Key constant @type Number */ + U: 85, +
/** Key constant @type Number */ + V: 86, +
/** Key constant @type Number */ + W: 87, +
/** Key constant @type Number */ + X: 88, +
/** Key constant @type Number */ + Y: 89, +
/** Key constant @type Number */ + Z: 90, +
/** Key constant @type Number */ + CONTEXT_MENU: 93, +
/** Key constant @type Number */ + NUM_ZERO: 96, +
/** Key constant @type Number */ + NUM_ONE: 97, +
/** Key constant @type Number */ + NUM_TWO: 98, +
/** Key constant @type Number */ + NUM_THREE: 99, +
/** Key constant @type Number */ + NUM_FOUR: 100, +
/** Key constant @type Number */ + NUM_FIVE: 101, +
/** Key constant @type Number */ + NUM_SIX: 102, +
/** Key constant @type Number */ + NUM_SEVEN: 103, +
/** Key constant @type Number */ + NUM_EIGHT: 104, +
/** Key constant @type Number */ + NUM_NINE: 105, +
/** Key constant @type Number */ + NUM_MULTIPLY: 106, +
/** Key constant @type Number */ + NUM_PLUS: 107, +
/** Key constant @type Number */ + NUM_MINUS: 109, +
/** Key constant @type Number */ + NUM_PERIOD: 110, +
/** Key constant @type Number */ + NUM_DIVISION: 111, +
/** Key constant @type Number */ + F1: 112, +
/** Key constant @type Number */ + F2: 113, +
/** Key constant @type Number */ + F3: 114, +
/** Key constant @type Number */ + F4: 115, +
/** Key constant @type Number */ + F5: 116, +
/** Key constant @type Number */ + F6: 117, +
/** Key constant @type Number */ + F7: 118, +
/** Key constant @type Number */ + F8: 119, +
/** Key constant @type Number */ + F9: 120, +
/** Key constant @type Number */ + F10: 121, +
/** Key constant @type Number */ + F11: 122, +
/** Key constant @type Number */ + F12: 123, + + /** @private */ + isNavKeyPress : function(){ + var me = this, + k = this.normalizeKey(me.keyCode); + return (k >= 33 && k <= 40) || // Page Up/Down, End, Home, Left, Up, Right, Down + k == me.RETURN || + k == me.TAB || + k == me.ESC; + }, + + isSpecialKey : function(){ + var k = this.normalizeKey(this.keyCode); + return (this.type == 'keypress' && this.ctrlKey) || + this.isNavKeyPress() || + (k == this.BACKSPACE) || // Backspace + (k >= 16 && k <= 20) || // Shift, Ctrl, Alt, Pause, Caps Lock + (k >= 44 && k <= 45); // Print Screen, Insert + }, + + getPoint : function(){ + return new Ext.lib.Point(this.xy[0], this.xy[1]); + }, + +
/** + * Returns true if the control, meta, shift or alt key was pressed during this event. + * @return {Boolean} + */ + hasModifier : function(){ + return ((this.ctrlKey || this.altKey) || this.shiftKey); + } +});
+ + \ No newline at end of file