Upgrade to ExtJS 4.0.2 - Released 06/09/2011
[extjs.git] / docs / source / Proxy.html
1 <!DOCTYPE html>
2 <html>
3 <head>
4   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5   <title>The source code</title>
6   <link href="../prettify/prettify.css" type="text/css" rel="stylesheet" />
7   <script type="text/javascript" src="../prettify/prettify.js"></script>
8   <style type="text/css">
9     .highlight { display: block; background-color: #ddd; }
10   </style>
11   <script type="text/javascript">
12     function highlight() {
13       document.getElementById(location.hash.replace(/#/, "")).className = "highlight";
14     }
15   </script>
16 </head>
17 <body onload="prettyPrint(); highlight();">
18   <pre class="prettyprint lang-js"><span id='Ext-panel-Proxy'>/**
19 </span> * @class Ext.panel.Proxy
20  * @extends Object
21  * A custom drag proxy implementation specific to {@link Ext.panel.Panel}s. This class
22  * is primarily used internally for the Panel's drag drop implementation, and
23  * should never need to be created directly.
24  */
25 Ext.define('Ext.panel.Proxy', {
26     
27     alternateClassName: 'Ext.dd.PanelProxy',
28
29 <span id='Ext-panel-Proxy-method-constructor'>    /**
30 </span>     * Creates new panel proxy.
31      * @param {Ext.panel.Panel} panel The {@link Ext.panel.Panel} to proxy for
32      * @param {Object} config (optional) Config object
33      */
34     constructor: function(panel, config){
35 <span id='Ext-panel-Proxy-property-panel'>        /**
36 </span>         * @property panel
37          * @type Ext.panel.Panel
38          */
39         this.panel = panel;
40         this.id = this.panel.id +'-ddproxy';
41         Ext.apply(this, config);
42     },
43
44 <span id='Ext-panel-Proxy-cfg-insertProxy'>    /**
45 </span>     * @cfg {Boolean} insertProxy True to insert a placeholder proxy element
46      * while dragging the panel, false to drag with no proxy (defaults to true).
47      * Most Panels are not absolute positioned and therefore we need to reserve
48      * this space.
49      */
50     insertProxy: true,
51
52     // private overrides
53     setStatus: Ext.emptyFn,
54     reset: Ext.emptyFn,
55     update: Ext.emptyFn,
56     stop: Ext.emptyFn,
57     sync: Ext.emptyFn,
58
59 <span id='Ext-panel-Proxy-method-getEl'>    /**
60 </span>     * Gets the proxy's element
61      * @return {Element} The proxy's element
62      */
63     getEl: function(){
64         return this.ghost.el;
65     },
66
67 <span id='Ext-panel-Proxy-method-getGhost'>    /**
68 </span>     * Gets the proxy's ghost Panel
69      * @return {Panel} The proxy's ghost Panel
70      */
71     getGhost: function(){
72         return this.ghost;
73     },
74
75 <span id='Ext-panel-Proxy-method-getProxy'>    /**
76 </span>     * Gets the proxy element. This is the element that represents where the
77      * Panel was before we started the drag operation.
78      * @return {Element} The proxy's element
79      */
80     getProxy: function(){
81         return this.proxy;
82     },
83
84 <span id='Ext-panel-Proxy-method-hide'>    /**
85 </span>     * Hides the proxy
86      */
87     hide : function(){
88         if (this.ghost) {
89             if (this.proxy) {
90                 this.proxy.remove();
91                 delete this.proxy;
92             }
93
94             // Unghost the Panel, do not move the Panel to where the ghost was
95             this.panel.unghost(null, false);
96             delete this.ghost;
97         }
98     },
99
100 <span id='Ext-panel-Proxy-method-show'>    /**
101 </span>     * Shows the proxy
102      */
103     show: function(){
104         if (!this.ghost) {
105             var panelSize = this.panel.getSize();
106             this.panel.el.setVisibilityMode(Ext.core.Element.DISPLAY);
107             this.ghost = this.panel.ghost();
108             if (this.insertProxy) {
109                 // bc Panels aren't absolute positioned we need to take up the space
110                 // of where the panel previously was
111                 this.proxy = this.panel.el.insertSibling({cls: Ext.baseCSSPrefix + 'panel-dd-spacer'});
112                 this.proxy.setSize(panelSize);
113             }
114         }
115     },
116
117     // private
118     repair: function(xy, callback, scope) {
119         this.hide();
120         if (typeof callback == &quot;function&quot;) {
121             callback.call(scope || this);
122         }
123     },
124
125 <span id='Ext-panel-Proxy-method-moveProxy'>    /**
126 </span>     * Moves the proxy to a different position in the DOM.  This is typically
127      * called while dragging the Panel to keep the proxy sync'd to the Panel's
128      * location.
129      * @param {HTMLElement} parentNode The proxy's parent DOM node
130      * @param {HTMLElement} before (optional) The sibling node before which the
131      * proxy should be inserted (defaults to the parent's last child if not
132      * specified)
133      */
134     moveProxy : function(parentNode, before){
135         if (this.proxy) {
136             parentNode.insertBefore(this.proxy.dom, before);
137         }
138     }
139 });</pre>
140 </body>
141 </html>