| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237 | 
							- <!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-ux-Spotlight'>/**
 
- </span> * @class Ext.ux.Spotlight
 
-  * UX used to provide a spotlight around a specified component/element.
 
-  */
 
- Ext.define('Ext.ux.Spotlight', {
 
-     extend: 'Object',
 
- <span id='Ext-ux-Spotlight-property-baseCls'>    /**
 
- </span>     * @private
 
-      * The baseCls for the spotlight elements
 
-      */
 
-     baseCls: 'x-spotlight',
 
- <span id='Ext-ux-Spotlight-cfg-animate'>    /**
 
- </span>     * @cfg animate {Boolean} True to animate the spotlight change
 
-      * (defaults to true)
 
-      */
 
-     animate: true,
 
- <span id='Ext-ux-Spotlight-cfg-duration'>    /**
 
- </span>     * @cfg duration {Integer} The duration of the animation, in milliseconds
 
-      * (defaults to 250)
 
-      */
 
-     duration: 250,
 
- <span id='Ext-ux-Spotlight-cfg-easing'>    /**
 
- </span>     * @cfg easing {String} The type of easing for the spotlight animatation
 
-      * (defaults to null)
 
-      */
 
-     easing: null,
 
- <span id='Ext-ux-Spotlight-property-active'>    /**
 
- </span>     * @private
 
-      * True if the spotlight is active on the element
 
-      */
 
-     active: false,
 
-     
 
-     constructor: function(config){
 
-         Ext.apply(this, config);
 
-     },
 
- <span id='Ext-ux-Spotlight-method-createElements'>    /**
 
- </span>     * Create all the elements for the spotlight
 
-      */
 
-     createElements: function() {
 
-         var me = this,
 
-             baseCls = me.baseCls,
 
-             body = Ext.getBody();
 
-         me.right = body.createChild({
 
-             cls: baseCls
 
-         });
 
-         me.left = body.createChild({
 
-             cls: baseCls
 
-         });
 
-         me.top = body.createChild({
 
-             cls: baseCls
 
-         });
 
-         me.bottom = body.createChild({
 
-             cls: baseCls
 
-         });
 
-         me.all = Ext.create('Ext.CompositeElement', [me.right, me.left, me.top, me.bottom]);
 
-     },
 
- <span id='Ext-ux-Spotlight-method-show'>    /**
 
- </span>     * Show the spotlight
 
-      */
 
-     show: function(el, callback, scope) {
 
-         var me = this;
 
-         
 
-         //get the target element
 
-         me.el = Ext.get(el);
 
-         //create the elements if they don't already exist
 
-         if (!me.right) {
 
-             me.createElements();
 
-         }
 
-         if (!me.active) {
 
-             //if the spotlight is not active, show it
 
-             me.all.setDisplayed('');
 
-             me.active = true;
 
-             Ext.EventManager.onWindowResize(me.syncSize, me);
 
-             me.applyBounds(me.animate, false);
 
-         } else {
 
-             //if the spotlight is currently active, just move it
 
-             me.applyBounds(false, false);
 
-         }
 
-     },
 
- <span id='Ext-ux-Spotlight-method-hide'>    /**
 
- </span>     * Hide the spotlight
 
-      */
 
-     hide: function(callback, scope) {
 
-         var me = this;
 
-         
 
-         Ext.EventManager.removeResizeListener(me.syncSize, me);
 
-         me.applyBounds(me.animate, true);
 
-     },
 
- <span id='Ext-ux-Spotlight-method-syncSize'>    /**
 
- </span>     * Resizes the spotlight with the window size.
 
-      */
 
-     syncSize: function() {
 
-         this.applyBounds(false, false);
 
-     },
 
- <span id='Ext-ux-Spotlight-method-applyBounds'>    /**
 
- </span>     * Resizes the spotlight depending on the arguments
 
-      * @param {Boolean} animate True to animate the changing of the bounds
 
-      * @param {Boolean} reverse True to reverse the animation
 
-      */
 
-     applyBounds: function(animate, reverse) {
 
-         var me = this,
 
-             box = me.el.getBox(),
 
-             //get the current view width and height
 
-             viewWidth = Ext.Element.getViewWidth(true),
 
-             viewHeight = Ext.Element.getViewHeight(true),
 
-             i = 0,
 
-             config = false,
 
-             from, to, clone;
 
-             
 
-         //where the element should start (if animation)
 
-         from = {
 
-             right: {
 
-                 x: box.right,
 
-                 y: viewHeight,
 
-                 width: (viewWidth - box.right),
 
-                 height: 0
 
-             },
 
-             left: {
 
-                 x: 0,
 
-                 y: 0,
 
-                 width: box.x,
 
-                 height: 0
 
-             },
 
-             top: {
 
-                 x: viewWidth,
 
-                 y: 0,
 
-                 width: 0,
 
-                 height: box.y
 
-             },
 
-             bottom: {
 
-                 x: 0,
 
-                 y: (box.y + box.height),
 
-                 width: 0,
 
-                 height: (viewHeight - (box.y + box.height)) + 'px'
 
-             }
 
-         };
 
-         //where the element needs to finish
 
-         to = {
 
-             right: {
 
-                 x: box.right,
 
-                 y: box.y,
 
-                 width: (viewWidth - box.right) + 'px',
 
-                 height: (viewHeight - box.y) + 'px'
 
-             },
 
-             left: {
 
-                 x: 0,
 
-                 y: 0,
 
-                 width: box.x + 'px',
 
-                 height: (box.y + box.height) + 'px'
 
-             },
 
-             top: {
 
-                 x: box.x,
 
-                 y: 0,
 
-                 width: (viewWidth - box.x) + 'px',
 
-                 height: box.y + 'px'
 
-             },
 
-             bottom: {
 
-                 x: 0,
 
-                 y: (box.y + box.height),
 
-                 width: (box.x + box.width) + 'px',
 
-                 height: (viewHeight - (box.y + box.height)) + 'px'
 
-             }
 
-         };
 
-         //reverse the objects
 
-         if (reverse) {
 
-             clone = Ext.clone(from);
 
-             from = to;
 
-             to = clone;
 
-         }
 
-         if (animate) {
 
-             Ext.Array.forEach(['right', 'left', 'top', 'bottom'], function(side) {
 
-                 me[side].setBox(from[side]);
 
-                 me[side].animate({
 
-                     duration: me.duration,
 
-                     easing: me.easing,
 
-                     to: to[side]
 
-                 });
 
-             },
 
-             this);
 
-         } else {
 
-             Ext.Array.forEach(['right', 'left', 'top', 'bottom'], function(side) {
 
-                 me[side].setBox(Ext.apply(from[side], to[side]));
 
-                 me[side].repaint();
 
-             },
 
-             this);
 
-         }
 
-     },
 
- <span id='Ext-ux-Spotlight-method-destroy'>    /**
 
- </span>     * Removes all the elements for the spotlight
 
-      */
 
-     destroy: function() {
 
-         var me = this;
 
-         
 
-         Ext.destroy(me.right, me.left, me.top, me.bottom);
 
-         delete me.el;
 
-         delete me.all;
 
-     }
 
- });
 
- </pre>
 
- </body>
 
- </html>
 
 
  |