| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826 | 
							- <!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-window-Window'>/**
 
- </span> * A specialized panel intended for use as an application window. Windows are floated, {@link #resizable}, and
 
-  * {@link #cfg-draggable} by default. Windows can be {@link #maximizable maximized} to fill the viewport, restored to
 
-  * their prior size, and can be {@link #method-minimize}d.
 
-  *
 
-  * Windows can also be linked to a {@link Ext.ZIndexManager} or managed by the {@link Ext.WindowManager} to provide
 
-  * grouping, activation, to front, to back and other application-specific behavior.
 
-  *
 
-  * By default, Windows will be rendered to document.body. To {@link #constrain} a Window to another element specify
 
-  * {@link Ext.Component#renderTo renderTo}.
 
-  *
 
-  * **As with all {@link Ext.container.Container Container}s, it is important to consider how you want the Window to size
 
-  * and arrange any child Components. Choose an appropriate {@link #layout} configuration which lays out child Components
 
-  * in the required manner.**
 
-  *
 
-  *     @example
 
-  *     Ext.create('Ext.window.Window', {
 
-  *         title: 'Hello',
 
-  *         height: 200,
 
-  *         width: 400,
 
-  *         layout: 'fit',
 
-  *         items: {  // Let's put an empty grid in just to illustrate fit layout
 
-  *             xtype: 'grid',
 
-  *             border: false,
 
-  *             columns: [{header: 'World'}],                 // One header just for show. There's no data,
 
-  *             store: Ext.create('Ext.data.ArrayStore', {}) // A dummy empty data store
 
-  *         }
 
-  *     }).show();
 
-  */
 
- Ext.define('Ext.window.Window', {
 
-     extend: 'Ext.panel.Panel',
 
-     alternateClassName: 'Ext.Window',
 
-     requires: ['Ext.util.ComponentDragger', 'Ext.util.Region', 'Ext.EventManager'],
 
-     alias: 'widget.window',
 
- <span id='Ext-window-Window-cfg-x'>    /**
 
- </span>     * @cfg {Number} x
 
-      * The X position of the left edge of the window on initial showing. Defaults to centering the Window within the
 
-      * width of the Window's container {@link Ext.Element Element} (The Element that the Window is rendered to).
 
-      */
 
- <span id='Ext-window-Window-cfg-y'>    /**
 
- </span>     * @cfg {Number} y
 
-      * The Y position of the top edge of the window on initial showing. Defaults to centering the Window within the
 
-      * height of the Window's container {@link Ext.Element Element} (The Element that the Window is rendered to).
 
-      */
 
- <span id='Ext-window-Window-cfg-modal'>    /**
 
- </span>     * @cfg {Boolean} [modal=false]
 
-      * True to make the window modal and mask everything behind it when displayed, false to display it without
 
-      * restricting access to other UI elements.
 
-      */
 
- <span id='Ext-window-Window-cfg-animateTarget'>    /**
 
- </span>     * @cfg {String/Ext.Element} [animateTarget=null]
 
-      * Id or element from which the window should animate while opening.
 
-      */
 
- <span id='Ext-window-Window-cfg-defaultFocus'>    /**
 
- </span>     * @cfg {String/Number/Ext.Component} defaultFocus
 
-      * Specifies a Component to receive focus when this Window is focused.
 
-      *
 
-      * This may be one of:
 
-      *
 
-      *   - The index of a footer Button.
 
-      *   - The id or {@link Ext.AbstractComponent#itemId} of a descendant Component.
 
-      *   - A Component.
 
-      */
 
- <span id='Ext-window-Window-cfg-onEsc'>    /**
 
- </span>     * @cfg {Function} onEsc
 
-      * Allows override of the built-in processing for the escape key. Default action is to close the Window (performing
 
-      * whatever action is specified in {@link #closeAction}. To prevent the Window closing when the escape key is
 
-      * pressed, specify this as {@link Ext#emptyFn Ext.emptyFn}.
 
-      */
 
- <span id='Ext-window-Window-cfg-collapsed'>    /**
 
- </span>     * @cfg {Boolean} [collapsed=false]
 
-      * True to render the window collapsed, false to render it expanded. Note that if {@link #expandOnShow}
 
-      * is true (the default) it will override the `collapsed` config and the window will always be
 
-      * expanded when shown.
 
-      */
 
- <span id='Ext-window-Window-cfg-maximized'>    /**
 
- </span>     * @cfg {Boolean} [maximized=false]
 
-      * True to initially display the window in a maximized state.
 
-      */
 
- <span id='Ext-window-Window-cfg-baseCls'>    /**
 
- </span>    * @cfg {String} [baseCls='x-window']
 
-     * The base CSS class to apply to this panel's element.
 
-     */
 
-     baseCls: Ext.baseCSSPrefix + 'window',
 
- <span id='Ext-window-Window-cfg-resizable'>    /**
 
- </span>     * @cfg {Boolean/Object} resizable
 
-      * Specify as `true` to allow user resizing at each edge and corner of the window, false to disable resizing.
 
-      *
 
-      * This may also be specified as a config object to Ext.resizer.Resizer
 
-      */
 
-     resizable: true,
 
- <span id='Ext-window-Window-cfg-draggable'>    /**
 
- </span>     * @cfg {Boolean} draggable
 
-      * True to allow the window to be dragged by the header bar, false to disable dragging. Note that
 
-      * by default the window will be centered in the viewport, so if dragging is disabled the window may need to be
 
-      * positioned programmatically after render (e.g., myWindow.setPosition(100, 100);).
 
-      */
 
-     draggable: true,
 
- <span id='Ext-window-Window-cfg-constrain'>    /**
 
- </span>     * @cfg {Boolean} constrain
 
-      * True to constrain the window within its containing element, false to allow it to fall outside of its containing
 
-      * element. By default the window will be rendered to document.body. To render and constrain the window within
 
-      * another element specify {@link #renderTo}. Optionally the header only can be constrained
 
-      * using {@link #constrainHeader}.
 
-      */
 
-     constrain: false,
 
- <span id='Ext-window-Window-cfg-constrainHeader'>    /**
 
- </span>     * @cfg {Boolean} constrainHeader
 
-      * True to constrain the window header within its containing element (allowing the window body to fall outside of
 
-      * its containing element) or false to allow the header to fall outside its containing element.
 
-      * Optionally the entire window can be constrained using {@link #constrain}.
 
-      */
 
-     constrainHeader: false,
 
- <span id='Ext-window-Window-cfg-constrainTo'>    /**
 
- </span>     * @cfg {Ext.util.Region/Ext.Element} constrainTo
 
-      * A {@link Ext.util.Region Region} (or an element from which a Region measurement will be read) which is used
 
-      * to constrain the window.
 
-      */
 
- <span id='Ext-window-Window-cfg-plain'>    /**
 
- </span>     * @cfg {Boolean} plain
 
-      * True to render the window body with a transparent background so that it will blend into the framing elements,
 
-      * false to add a lighter background color to visually highlight the body element and separate it more distinctly
 
-      * from the surrounding frame.
 
-      */
 
-     plain: false,
 
- <span id='Ext-window-Window-cfg-minimizable'>    /**
 
- </span>     * @cfg {Boolean} minimizable
 
-      * True to display the 'minimize' tool button and allow the user to minimize the window, false to hide the button
 
-      * and disallow minimizing the window. Note that this button provides no implementation -- the
 
-      * behavior of minimizing a window is implementation-specific, so the minimize event must be handled and a custom
 
-      * minimize behavior implemented for this option to be useful.
 
-      */
 
-     minimizable: false,
 
- <span id='Ext-window-Window-cfg-maximizable'>    /**
 
- </span>     * @cfg {Boolean} maximizable
 
-      * True to display the 'maximize' tool button and allow the user to maximize the window, false to hide the button
 
-      * and disallow maximizing the window. Note that when a window is maximized, the tool button
 
-      * will automatically change to a 'restore' button with the appropriate behavior already built-in that will restore
 
-      * the window to its previous size.
 
-      */
 
-     maximizable: false,
 
-     // inherit docs
 
-     minHeight: 50,
 
-     // inherit docs
 
-     minWidth: 50,
 
- <span id='Ext-window-Window-cfg-expandOnShow'>    /**
 
- </span>     * @cfg {Boolean} expandOnShow
 
-      * True to always expand the window when it is displayed, false to keep it in its current state (which may be
 
-      * {@link #collapsed}) when displayed.
 
-      */
 
-     expandOnShow: true,
 
-     // inherited docs, same default
 
-     collapsible: false,
 
- <span id='Ext-window-Window-cfg-closable'>    /**
 
- </span>     * @cfg {Boolean} closable
 
-      * True to display the 'close' tool button and allow the user to close the window, false to hide the button and
 
-      * disallow closing the window.
 
-      *
 
-      * By default, when close is requested by either clicking the close button in the header or pressing ESC when the
 
-      * Window has focus, the {@link #method-close} method will be called. This will _{@link Ext.Component#method-destroy destroy}_ the
 
-      * Window and its content meaning that it may not be reused.
 
-      *
 
-      * To make closing a Window _hide_ the Window so that it may be reused, set {@link #closeAction} to 'hide'.
 
-      */
 
-     closable: true,
 
- <span id='Ext-window-Window-cfg-hidden'>    /**
 
- </span>     * @cfg {Boolean} hidden
 
-      * Render this Window hidden. If `true`, the {@link #method-hide} method will be called internally.
 
-      */
 
-     hidden: true,
 
- <span id='Ext-window-Window-cfg-autoRender'>    /**
 
- </span>     * @cfg
 
-      * @inheritdoc
 
-      * Windows render to the body on first show.
 
-      */
 
-     autoRender: true,
 
- <span id='Ext-window-Window-cfg-hideMode'>    /**
 
- </span>     * @cfg
 
-      * @inheritdoc
 
-      * Windows hide using offsets in order to preserve the scroll positions of their descendants.
 
-      */
 
-     hideMode: 'offsets',
 
- <span id='Ext-window-Window-cfg-floating'>    /**
 
- </span>     * @cfg
 
-      * @private
 
-      */
 
-     floating: true,
 
-     ariaRole: 'alertdialog',
 
-     itemCls: Ext.baseCSSPrefix + 'window-item',
 
-     
 
-     initialAlphaNum: /^[a-z0-9]/,
 
-     overlapHeader: true,
 
-     ignoreHeaderBorderManagement: true,
 
-     // Flag to Renderable to always look up the framing styles for this Component
 
-     alwaysFramed: true,
 
- <span id='Ext-window-Window-property-isWindow'>    /**
 
- </span>     * @property {Boolean} isWindow
 
-      * `true` in this class to identify an object as an instantiated Window, or subclass thereof.
 
-      */
 
-     isWindow: true,
 
-     // private
 
-     initComponent: function() {
 
-         var me = this;
 
-         // Explicitly set frame to false, since alwaysFramed is
 
-         // true, we only want to lookup framing in a specific instance
 
-         me.frame = false;
 
-         me.callParent();
 
-         me.addEvents(
 
- <span id='Ext-window-Window-event-activate'>            /**
 
- </span>             * @event activate
 
-              * Fires after the window has been visually activated via {@link #setActive}.
 
-              * @param {Ext.window.Window} this
 
-              */
 
- <span id='Ext-window-Window-event-deactivate'>            /**
 
- </span>             * @event deactivate
 
-              * Fires after the window has been visually deactivated via {@link #setActive}.
 
-              * @param {Ext.window.Window} this
 
-              */
 
- <span id='Ext-window-Window-event-resize'>            /**
 
- </span>             * @event resize
 
-              * Fires after the window has been resized.
 
-              * @param {Ext.window.Window} this
 
-              * @param {Number} width The window's new width
 
-              * @param {Number} height The window's new height
 
-              */
 
-             'resize',
 
- <span id='Ext-window-Window-event-maximize'>            /**
 
- </span>             * @event maximize
 
-              * Fires after the window has been maximized.
 
-              * @param {Ext.window.Window} this
 
-              */
 
-             'maximize',
 
- <span id='Ext-window-Window-event-minimize'>            /**
 
- </span>             * @event minimize
 
-              * Fires after the window has been minimized.
 
-              * @param {Ext.window.Window} this
 
-              */
 
-             'minimize',
 
- <span id='Ext-window-Window-event-restore'>            /**
 
- </span>             * @event restore
 
-              * Fires after the window has been restored to its original size after being maximized.
 
-              * @param {Ext.window.Window} this
 
-              */
 
-             'restore'
 
-         );
 
-         if (me.plain) {
 
-             me.addClsWithUI('plain');
 
-         }
 
-         if (me.modal) {
 
-             me.ariaRole = 'dialog';
 
-         }
 
-         // clickToRaise
 
-         if (me.floating) {
 
-             me.on({
 
-                 element: 'el',
 
-                 mousedown: me.onMouseDown,
 
-                 scope: me
 
-             });
 
-         }
 
-         me.addStateEvents(['maximize', 'restore', 'resize', 'dragend']);
 
-     },
 
-     getElConfig: function () {
 
-         var me = this,
 
-             elConfig;
 
-         elConfig = me.callParent();
 
-         elConfig.tabIndex = -1;
 
-         return elConfig;
 
-     },
 
-     // State Management
 
-     // private
 
-     getState: function() {
 
-         var me = this,
 
-             state = me.callParent() || {},
 
-             maximized = !!me.maximized;
 
-         state.maximized = maximized;
 
-         Ext.apply(state, {
 
-             size: maximized ? me.restoreSize : me.getSize(),
 
-             pos: maximized ? me.restorePos : me.getPosition()
 
-         });
 
-         return state;
 
-     },
 
-     applyState: function(state){
 
-         var me = this;
 
-         if (state) {
 
-             me.maximized = state.maximized;
 
-             if (me.maximized) {
 
-                 me.hasSavedRestore = true;
 
-                 me.restoreSize = state.size;
 
-                 me.restorePos = state.pos;
 
-             } else {
 
-                 Ext.apply(me, {
 
-                     width: state.size.width,
 
-                     height: state.size.height,
 
-                     x: state.pos[0],
 
-                     y: state.pos[1]
 
-                 });
 
-             }
 
-         }
 
-     },
 
-     // private
 
-     onMouseDown: function (e) {
 
-         var preventFocus;
 
-             
 
-         if (this.floating) {
 
-             if (Ext.fly(e.getTarget()).focusable()) {
 
-                 preventFocus = true;
 
-             }
 
-             this.toFront(preventFocus);
 
-         }
 
-     },
 
-     // private
 
-     onRender: function(ct, position) {
 
-         var me = this;
 
-         me.callParent(arguments);
 
-         me.focusEl = me.el;
 
-         // Double clicking a header will toggleMaximize
 
-         if (me.maximizable) {
 
-             me.header.on({
 
-                 scope: me,
 
-                 dblclick: me.toggleMaximize
 
-             });
 
-         }
 
-     },
 
-     // private
 
-     afterRender: function() {
 
-         var me = this,
 
-             keyMap;
 
-         me.callParent();
 
-         // Initialize
 
-         if (me.maximized) {
 
-             me.maximized = false;
 
-             me.maximize();
 
-         }
 
-         if (me.closable) {
 
-             keyMap = me.getKeyMap();
 
-             keyMap.on(27, me.onEsc, me);
 
-         } else {
 
-             keyMap = me.keyMap;
 
-         }
 
-         if (keyMap && me.hidden) {
 
-             keyMap.disable();
 
-         }
 
-     },
 
- <span id='Ext-window-Window-method-initDraggable'>    /**
 
- </span>     * @private
 
-      * Override Component.initDraggable.
 
-      * Window uses the header element as the delegate.
 
-      */
 
-     initDraggable: function() {
 
-         var me = this,
 
-             ddConfig;
 
-         if (!me.header) {
 
-             me.updateHeader(true);
 
-         }
 
-         /*
 
-          * Check the header here again. If for whatever reason it wasn't created in
 
-          * updateHeader (we were configured with header: false) then we'll just ignore the rest since the
 
-          * header acts as the drag handle.
 
-          */
 
-         if (me.header) {
 
-             ddConfig = Ext.applyIf({
 
-                 el: me.el,
 
-                 delegate: '#' + Ext.escapeId(me.header.id)
 
-             }, me.draggable);
 
-             // Add extra configs if Window is specified to be constrained
 
-             if (me.constrain || me.constrainHeader) {
 
-                 ddConfig.constrain = me.constrain;
 
-                 ddConfig.constrainDelegate = me.constrainHeader;
 
-                 ddConfig.constrainTo = me.constrainTo || me.container;
 
-             }
 
- <span id='Ext-window-Window-property-dd'>            /**
 
- </span>             * @property {Ext.util.ComponentDragger} dd
 
-              * If this Window is configured {@link #cfg-draggable}, this property will contain an instance of
 
-              * {@link Ext.util.ComponentDragger} (A subclass of {@link Ext.dd.DragTracker DragTracker}) which handles dragging
 
-              * the Window's DOM Element, and constraining according to the {@link #constrain} and {@link #constrainHeader} .
 
-              *
 
-              * This has implementations of `onBeforeStart`, `onDrag` and `onEnd` which perform the dragging action. If
 
-              * extra logic is needed at these points, use {@link Ext.Function#createInterceptor createInterceptor} or
 
-              * {@link Ext.Function#createSequence createSequence} to augment the existing implementations.
 
-              */
 
-             me.dd = new Ext.util.ComponentDragger(this, ddConfig);
 
-             me.relayEvents(me.dd, ['dragstart', 'drag', 'dragend']);
 
-         }
 
-     },
 
-     // private
 
-     onEsc: function(k, e) {
 
-         // Only process ESC if the FocusManager is not doing it
 
-         if (!Ext.FocusManager || !Ext.FocusManager.enabled || Ext.FocusManager.focusedCmp === this) {
 
-             e.stopEvent();
 
-             this.close();
 
-         }
 
-     },
 
-     // private
 
-     beforeDestroy: function() {
 
-         var me = this;
 
-         if (me.rendered) {
 
-             delete this.animateTarget;
 
-             me.hide();
 
-             Ext.destroy(
 
-                 me.keyMap
 
-             );
 
-         }
 
-         me.callParent();
 
-     },
 
- <span id='Ext-window-Window-method-addTools'>    /**
 
- </span>     * @private
 
-      * Contribute class-specific tools to the header.
 
-      * Called by Panel's initTools.
 
-      */
 
-     addTools: function() {
 
-         var me = this;
 
-         // Call Panel's initTools
 
-         me.callParent();
 
-         if (me.minimizable) {
 
-             me.addTool({
 
-                 type: 'minimize',
 
-                 handler: Ext.Function.bind(me.minimize, me, [])
 
-             });
 
-         }
 
-         if (me.maximizable) {
 
-             me.addTool({
 
-                 type: 'maximize',
 
-                 handler: Ext.Function.bind(me.maximize, me, [])
 
-             });
 
-             me.addTool({
 
-                 type: 'restore',
 
-                 handler: Ext.Function.bind(me.restore, me, []),
 
-                 hidden: true
 
-             });
 
-         }
 
-     },
 
- <span id='Ext-window-Window-method-getFocusEl'>    /**
 
- </span>     * @private
 
-      * Returns the focus holder element associated with this Window. By default, this is the Window's element.
 
-      * @returns {Ext.Element/Ext.Component} the focus holding element or Component.
 
-      */
 
-     getFocusEl: function() {
 
-         return this.getDefaultFocus();
 
-     },
 
- <span id='Ext-window-Window-method-getDefaultFocus'>    /**
 
- </span>     * Gets the configured default focus item.  If a {@link #defaultFocus} is set, it will
 
-      * receive focus when the Window's <code>focus</code> method is called, otherwise the
 
-      * Window itself will receive focus.
 
-      */
 
-     getDefaultFocus: function() {
 
-         var me = this,
 
-             result,
 
-             defaultComp = me.defaultButton || me.defaultFocus,
 
-             selector;
 
-         if (defaultComp !== undefined) {
 
-             // Number is index of Button
 
-             if (Ext.isNumber(defaultComp)) {
 
-                 result = me.query('button')[defaultComp];
 
-             }
 
-             // String is ID or CQ selector
 
-             else if (Ext.isString(defaultComp)) {
 
-                 selector = defaultComp;
 
-                 
 
-                 // Try id/itemId match if selector begins with alphanumeric
 
-                 if (selector.match(me.initialAlphaNum)) {
 
-                     result = me.down('#' + selector);
 
-                 }
 
-                 // If not found, use as selector
 
-                 if (!result) {
 
-                     result = me.down(selector);
 
-                 }
 
-             }
 
-             // Otherwise, if it's got a focus method, use it
 
-             else if (defaultComp.focus) {
 
-                 result = defaultComp;
 
-             }
 
-         }
 
-         return result || me.el;
 
-     },
 
- <span id='Ext-window-Window-method-onFocus'>    /**
 
- </span>     * @private
 
-      * Called when a Component's focusEl receives focus.
 
-      * If there is a valid default focus Component to jump to, focus that,
 
-      * otherwise continue as usual, focus this Component.
 
-      */
 
-     onFocus: function() {
 
-         var me = this,
 
-             focusDescendant;
 
-         // If the FocusManager is enabled, then we must noy jumpt to focus the default focus. We must focus the Window
 
-         if ((Ext.FocusManager && Ext.FocusManager.enabled) || ((focusDescendant = me.getDefaultFocus()) === me)) {
 
-             me.callParent(arguments);
 
-         } else {
 
-             focusDescendant.focus();
 
-         }
 
-     },
 
-     beforeLayout: function () {
 
-         var shadow = this.el.shadow;
 
-         this.callParent();
 
-         if (shadow) {
 
-             shadow.hide();
 
-         }
 
-     },
 
-     onShow: function() {
 
-         var me = this;
 
-         me.callParent(arguments);
 
-         if (me.expandOnShow) {
 
-             me.expand(false);
 
-         }
 
-         me.syncMonitorWindowResize();
 
-         if (me.keyMap) {
 
-             me.keyMap.enable();
 
-         }
 
-    },
 
-     // private
 
-     doClose: function() {
 
-         var me = this;
 
-         // Being called as callback after going through the hide call below
 
-         if (me.hidden) {
 
-             me.fireEvent('close', me);
 
-             if (me.closeAction == 'destroy') {
 
-                 this.destroy();
 
-             }
 
-         } else {
 
-             // close after hiding
 
-             me.hide(me.animateTarget, me.doClose, me);
 
-         }
 
-     },
 
-     // private
 
-     afterHide: function() {
 
-         var me = this;
 
-         // No longer subscribe to resizing now that we're hidden
 
-         me.syncMonitorWindowResize();
 
-         // Turn off keyboard handling once window is hidden
 
-         if (me.keyMap) {
 
-             me.keyMap.disable();
 
-         }
 
-         // Perform superclass's afterHide tasks.
 
-         me.callParent(arguments);
 
-     },
 
-     // private
 
-     onWindowResize: function() {
 
-         var me = this,
 
-             sizeModel;
 
-         if (me.maximized) {
 
-             me.fitContainer();
 
-         } else {
 
-             sizeModel = me.getSizeModel();
 
-             if (sizeModel.width.natural || sizeModel.height.natural) {
 
-                 me.updateLayout();
 
-             }
 
-         }
 
-         me.doConstrain();
 
-     },
 
- <span id='Ext-window-Window-method-minimize'>    /**
 
- </span>     * Placeholder method for minimizing the window. By default, this method simply fires the {@link #event-minimize} event
 
-      * since the behavior of minimizing a window is application-specific. To implement custom minimize behavior, either
 
-      * the minimize event can be handled or this method can be overridden.
 
-      * @return {Ext.window.Window} this
 
-      */
 
-     minimize: function() {
 
-         this.fireEvent('minimize', this);
 
-         return this;
 
-     },
 
-     afterCollapse: function() {
 
-         var me = this;
 
-         if (me.maximizable) {
 
-             me.tools.maximize.hide();
 
-             me.tools.restore.hide();
 
-         }
 
-         if (me.resizer) {
 
-             me.resizer.disable();
 
-         }
 
-         me.callParent(arguments);
 
-     },
 
-     afterExpand: function() {
 
-         var me = this;
 
-         if (me.maximized) {
 
-             me.tools.restore.show();
 
-         } else if (me.maximizable) {
 
-             me.tools.maximize.show();
 
-         }
 
-         if (me.resizer) {
 
-             me.resizer.enable();
 
-         }
 
-         me.callParent(arguments);
 
-     },
 
- <span id='Ext-window-Window-method-maximize'>    /**
 
- </span>     * Fits the window within its current container and automatically replaces the {@link #maximizable 'maximize' tool
 
-      * button} with the 'restore' tool button. Also see {@link #toggleMaximize}.
 
-      * @return {Ext.window.Window} this
 
-      */
 
-     maximize: function() {
 
-         var me = this;
 
-         if (!me.maximized) {
 
-             me.expand(false);
 
-             if (!me.hasSavedRestore) {
 
-                 me.restoreSize = me.getSize();
 
-                 me.restorePos = me.getPosition(true);
 
-             }
 
-             if (me.maximizable) {
 
-                 me.tools.maximize.hide();
 
-                 me.tools.restore.show();
 
-             }
 
-             me.maximized = true;
 
-             me.el.disableShadow();
 
-             if (me.dd) {
 
-                 me.dd.disable();
 
-             }
 
-             if (me.resizer) {
 
-                 me.resizer.disable();
 
-             }
 
-             if (me.collapseTool) {
 
-                 me.collapseTool.hide();
 
-             }
 
-             me.el.addCls(Ext.baseCSSPrefix + 'window-maximized');
 
-             me.container.addCls(Ext.baseCSSPrefix + 'window-maximized-ct');
 
-             me.syncMonitorWindowResize();
 
-             me.fitContainer();
 
-             me.fireEvent('maximize', me);
 
-         }
 
-         return me;
 
-     },
 
- <span id='Ext-window-Window-method-restore'>    /**
 
- </span>     * Restores a {@link #maximizable maximized} window back to its original size and position prior to being maximized
 
-      * and also replaces the 'restore' tool button with the 'maximize' tool button. Also see {@link #toggleMaximize}.
 
-      * @return {Ext.window.Window} this
 
-      */
 
-     restore: function() {
 
-         var me = this,
 
-             tools = me.tools;
 
-         if (me.maximized) {
 
-             delete me.hasSavedRestore;
 
-             me.removeCls(Ext.baseCSSPrefix + 'window-maximized');
 
-             // Toggle tool visibility
 
-             if (tools.restore) {
 
-                 tools.restore.hide();
 
-             }
 
-             if (tools.maximize) {
 
-                 tools.maximize.show();
 
-             }
 
-             if (me.collapseTool) {
 
-                 me.collapseTool.show();
 
-             }
 
-             me.maximized = false;
 
-             // Restore the position/sizing
 
-             me.setPosition(me.restorePos);
 
-             me.setSize(me.restoreSize);
 
-             // Unset old position/sizing
 
-             delete me.restorePos;
 
-             delete me.restoreSize;
 
-             me.el.enableShadow(true);
 
-             // Allow users to drag and drop again
 
-             if (me.dd) {
 
-                 me.dd.enable();
 
-             }
 
-             
 
-             if (me.resizer) {
 
-                 me.resizer.enable();
 
-             }
 
-             me.container.removeCls(Ext.baseCSSPrefix + 'window-maximized-ct');
 
-             me.syncMonitorWindowResize();
 
-             me.doConstrain();
 
-             me.fireEvent('restore', me);
 
-         }
 
-         return me;
 
-     },
 
- <span id='Ext-window-Window-method-syncMonitorWindowResize'>    /**
 
- </span>     * Synchronizes the presence of our listener for window resize events. This method
 
-      * should be called whenever this status might change.
 
-      * @private
 
-      */
 
-     syncMonitorWindowResize: function () {
 
-         var me = this,
 
-             currentlyMonitoring = me._monitoringResize,
 
-             // all the states where we should be listening to window resize:
 
-             yes = me.monitorResize || me.constrain || me.constrainHeader || me.maximized,
 
-             // all the states where we veto this:
 
-             veto = me.hidden || me.destroying || me.isDestroyed;
 
-         if (yes && !veto) {
 
-             // we should be listening...
 
-             if (!currentlyMonitoring) {
 
-                 // but we aren't, so set it up
 
-                 Ext.EventManager.onWindowResize(me.onWindowResize, me);
 
-                 me._monitoringResize = true;
 
-             }
 
-         } else if (currentlyMonitoring) {
 
-             // we should not be listening, but we are, so tear it down
 
-             Ext.EventManager.removeResizeListener(me.onWindowResize, me);
 
-             me._monitoringResize = false;
 
-         }
 
-     },
 
- <span id='Ext-window-Window-method-toggleMaximize'>    /**
 
- </span>     * A shortcut method for toggling between {@link #method-maximize} and {@link #method-restore} based on the current maximized
 
-      * state of the window.
 
-      * @return {Ext.window.Window} this
 
-      */
 
-     toggleMaximize: function() {
 
-         return this[this.maximized ? 'restore': 'maximize']();
 
-     }
 
- });
 
- </pre>
 
- </body>
 
- </html>
 
 
  |