1 <html><head><title>../roojs1/Roo/SplitBar.js</title><link rel="stylesheet" type="text/css" href="../../../css/highlight-js.css"/></head><body class="highlightpage"><code class="jsdoc-pretty"><span class="jsdoc-comment">/*
4 * Copyright(c) 2006-2007, Ext JS, LLC.
6 * Originally Released Under LGPL - original licence link has changed is not relivant.
9 * <script type="text/javascript">
15 * @extends Roo.util.Observable
16 * Creates draggable splitter bar functionality from two elements (element to be dragged and element to be resized).
17 * <br><br>
19 * <pre><code>
20 var split = new Roo.SplitBar("elementToDrag", "elementToSize",
21 Roo.SplitBar.HORIZONTAL, Roo.SplitBar.LEFT);
22 split.setAdapter(new Roo.SplitBar.AbsoluteLayoutAdapter("container"));
26 split.on('moved', splitterMoved);
27 </code></pre>
29 * Create a new SplitBar
30 * @param {String/HTMLElement/Roo.Element} dragElement The element to be dragged and act as the SplitBar.
31 * @param {String/HTMLElement/Roo.Element} resizingElement The element to be resized based on where the SplitBar element is dragged
32 * @param {Number} orientation (optional) Either Roo.SplitBar.HORIZONTAL or Roo.SplitBar.VERTICAL. (Defaults to HORIZONTAL)
33 * @param {Number} placement (optional) Either Roo.SplitBar.LEFT or Roo.SplitBar.RIGHT for horizontal or
34 Roo.SplitBar.TOP or Roo.SplitBar.BOTTOM for vertical. (By default, this is determined automatically by the initial
35 position of the SplitBar).
37 </span><span class="jsdoc-var">Roo.SplitBar </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">dragElement</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">resizingElement</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">orientation</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">placement</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">existingProxy</span><span class="jsdoc-syntax">){
39 </span><span class="jsdoc-comment">/** @private */
40 </span><span class="jsdoc-var">this.el </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">dragElement</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
41 </span><span class="jsdoc-var">this.el.dom.unselectable </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">"on"</span><span class="jsdoc-syntax">;
42 </span><span class="jsdoc-comment">/** @private */
43 </span><span class="jsdoc-var">this.resizingEl </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">resizingElement</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
45 </span><span class="jsdoc-comment">/**
47 * The orientation of the split. Either Roo.SplitBar.HORIZONTAL or Roo.SplitBar.VERTICAL. (Defaults to HORIZONTAL)
48 * Note: If this is changed after creating the SplitBar, the placement property must be manually updated
51 </span><span class="jsdoc-var">this.orientation </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">orientation </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">Roo.SplitBar.HORIZONTAL</span><span class="jsdoc-syntax">;
53 </span><span class="jsdoc-comment">/**
54 * The minimum size of the resizing element. (Defaults to 0)
57 </span><span class="jsdoc-var">this.minSize </span><span class="jsdoc-syntax">= 0;
59 </span><span class="jsdoc-comment">/**
60 * The maximum size of the resizing element. (Defaults to 2000)
63 </span><span class="jsdoc-var">this.maxSize </span><span class="jsdoc-syntax">= 2000;
65 </span><span class="jsdoc-comment">/**
66 * Whether to animate the transition to the new size
69 </span><span class="jsdoc-var">this.animate </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
71 </span><span class="jsdoc-comment">/**
72 * Whether to create a transparent shim that overlays the page when dragging, enables dragging across iframes.
75 </span><span class="jsdoc-var">this.useShim </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
77 </span><span class="jsdoc-comment">/** @private */
78 </span><span class="jsdoc-var">this.shim </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">;
80 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">existingProxy</span><span class="jsdoc-syntax">){
81 </span><span class="jsdoc-comment">/** @private */
82 </span><span class="jsdoc-var">this.proxy </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.SplitBar.createProxy</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.orientation</span><span class="jsdoc-syntax">);
83 }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
84 </span><span class="jsdoc-var">this.proxy </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">existingProxy</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.dom</span><span class="jsdoc-syntax">;
86 </span><span class="jsdoc-comment">/** @private */
87 </span><span class="jsdoc-var">this.dd </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.dd.DDProxy</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.el.dom.id</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">"XSplitBars"</span><span class="jsdoc-syntax">, {</span><span class="jsdoc-var">dragElId </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.proxy.id</span><span class="jsdoc-syntax">});
89 </span><span class="jsdoc-comment">/** @private */
90 </span><span class="jsdoc-var">this.dd.b4StartDrag </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.onStartProxyDrag.createDelegate</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
92 </span><span class="jsdoc-comment">/** @private */
93 </span><span class="jsdoc-var">this.dd.endDrag </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.onEndProxyDrag.createDelegate</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
95 </span><span class="jsdoc-comment">/** @private */
96 </span><span class="jsdoc-var">this.dragSpecs </span><span class="jsdoc-syntax">= {};
98 </span><span class="jsdoc-comment">/**
99 * @private The adapter to use to positon and resize elements
101 </span><span class="jsdoc-var">this.adapter </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.SplitBar.BasicLayoutAdapter</span><span class="jsdoc-syntax">();
102 </span><span class="jsdoc-var">this.adapter.init</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
104 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.orientation </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">Roo.SplitBar.HORIZONTAL</span><span class="jsdoc-syntax">){
105 </span><span class="jsdoc-comment">/** @private */
106 </span><span class="jsdoc-var">this.placement </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">placement </span><span class="jsdoc-syntax">|| (</span><span class="jsdoc-var">this.el.getX</span><span class="jsdoc-syntax">() > </span><span class="jsdoc-var">this.resizingEl.getX</span><span class="jsdoc-syntax">() ? </span><span class="jsdoc-var">Roo.SplitBar.LEFT </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">Roo.SplitBar.RIGHT</span><span class="jsdoc-syntax">);
107 </span><span class="jsdoc-var">this.el.addClass</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"x-splitbar-h"</span><span class="jsdoc-syntax">);
108 }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
109 </span><span class="jsdoc-comment">/** @private */
110 </span><span class="jsdoc-var">this.placement </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">placement </span><span class="jsdoc-syntax">|| (</span><span class="jsdoc-var">this.el.getY</span><span class="jsdoc-syntax">() > </span><span class="jsdoc-var">this.resizingEl.getY</span><span class="jsdoc-syntax">() ? </span><span class="jsdoc-var">Roo.SplitBar.TOP </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">Roo.SplitBar.BOTTOM</span><span class="jsdoc-syntax">);
111 </span><span class="jsdoc-var">this.el.addClass</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"x-splitbar-v"</span><span class="jsdoc-syntax">);
114 </span><span class="jsdoc-var">this.addEvents</span><span class="jsdoc-syntax">({
115 </span><span class="jsdoc-comment">/**
117 * Fires when the splitter is moved (alias for {@link #event-moved})
118 * @param {Roo.SplitBar} this
119 * @param {Number} newSize the new width or height
121 </span><span class="jsdoc-string">"resize" </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
122 </span><span class="jsdoc-comment">/**
124 * Fires when the splitter is moved
125 * @param {Roo.SplitBar} this
126 * @param {Number} newSize the new width or height
128 </span><span class="jsdoc-string">"moved" </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
129 </span><span class="jsdoc-comment">/**
130 * @event beforeresize
131 * Fires before the splitter is dragged
132 * @param {Roo.SplitBar} this
134 </span><span class="jsdoc-string">"beforeresize" </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
136 </span><span class="jsdoc-string">"beforeapply" </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true
137 </span><span class="jsdoc-syntax">});
139 </span><span class="jsdoc-var">Roo.util.Observable.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
142 </span><span class="jsdoc-var">Roo.extend</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.SplitBar</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">Roo.util.Observable</span><span class="jsdoc-syntax">, {
143 </span><span class="jsdoc-var">onStartProxyDrag </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">x</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">y</span><span class="jsdoc-syntax">){
144 </span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"beforeresize"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
145 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.overlay</span><span class="jsdoc-syntax">){
146 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">o </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.DomHelper.insertFirst</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">document.body</span><span class="jsdoc-syntax">, {</span><span class="jsdoc-var">cls</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">"x-drag-overlay"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">"&#160;"</span><span class="jsdoc-syntax">}, </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
147 </span><span class="jsdoc-var">o.unselectable</span><span class="jsdoc-syntax">();
148 </span><span class="jsdoc-var">o.enableDisplayMode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"block"</span><span class="jsdoc-syntax">);
149 </span><span class="jsdoc-comment">// all splitbars share the same overlay
150 </span><span class="jsdoc-var">Roo.SplitBar.prototype.overlay </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">;
152 </span><span class="jsdoc-var">this.overlay.setSize</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.lib.Dom.getViewWidth</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">), </span><span class="jsdoc-var">Roo.lib.Dom.getViewHeight</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">));
153 </span><span class="jsdoc-var">this.overlay.show</span><span class="jsdoc-syntax">();
154 </span><span class="jsdoc-var">Roo.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.proxy</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.setDisplayed</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"block"</span><span class="jsdoc-syntax">);
155 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">size </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.adapter.getElementSize</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
156 </span><span class="jsdoc-var">this.activeMinSize </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.getMinimumSize</span><span class="jsdoc-syntax">();;
157 </span><span class="jsdoc-var">this.activeMaxSize </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.getMaximumSize</span><span class="jsdoc-syntax">();;
158 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">c1 </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">size </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">this.activeMinSize</span><span class="jsdoc-syntax">;
159 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">c2 </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.max</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.activeMaxSize </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">size</span><span class="jsdoc-syntax">, 0);
160 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.orientation </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">Roo.SplitBar.HORIZONTAL</span><span class="jsdoc-syntax">){
161 </span><span class="jsdoc-var">this.dd.resetConstraints</span><span class="jsdoc-syntax">();
162 </span><span class="jsdoc-var">this.dd.setXConstraint</span><span class="jsdoc-syntax">(
163 </span><span class="jsdoc-var">this.placement </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">Roo.SplitBar.LEFT </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">c1 </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">c2</span><span class="jsdoc-syntax">,
164 </span><span class="jsdoc-var">this.placement </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">Roo.SplitBar.LEFT </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">c2 </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">c1
165 </span><span class="jsdoc-syntax">);
166 </span><span class="jsdoc-var">this.dd.setYConstraint</span><span class="jsdoc-syntax">(0, 0);
167 }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
168 </span><span class="jsdoc-var">this.dd.resetConstraints</span><span class="jsdoc-syntax">();
169 </span><span class="jsdoc-var">this.dd.setXConstraint</span><span class="jsdoc-syntax">(0, 0);
170 </span><span class="jsdoc-var">this.dd.setYConstraint</span><span class="jsdoc-syntax">(
171 </span><span class="jsdoc-var">this.placement </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">Roo.SplitBar.TOP </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">c1 </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">c2</span><span class="jsdoc-syntax">,
172 </span><span class="jsdoc-var">this.placement </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">Roo.SplitBar.TOP </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">c2 </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">c1
173 </span><span class="jsdoc-syntax">);
175 </span><span class="jsdoc-var">this.dragSpecs.startSize </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">size</span><span class="jsdoc-syntax">;
176 </span><span class="jsdoc-var">this.dragSpecs.startPoint </span><span class="jsdoc-syntax">= [</span><span class="jsdoc-var">x</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">y</span><span class="jsdoc-syntax">];
177 </span><span class="jsdoc-var">Roo.dd.DDProxy.prototype.b4StartDrag.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.dd</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">x</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">y</span><span class="jsdoc-syntax">);
180 </span><span class="jsdoc-comment">/**
181 * @private Called after the drag operation by the DDProxy
183 </span><span class="jsdoc-var">onEndProxyDrag </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">){
184 </span><span class="jsdoc-var">Roo.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.proxy</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.setDisplayed</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">);
185 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">endPoint </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.lib.Event.getXY</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">);
186 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.overlay</span><span class="jsdoc-syntax">){
187 </span><span class="jsdoc-var">this.overlay.hide</span><span class="jsdoc-syntax">();
189 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">newSize</span><span class="jsdoc-syntax">;
190 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.orientation </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">Roo.SplitBar.HORIZONTAL</span><span class="jsdoc-syntax">){
191 </span><span class="jsdoc-var">newSize </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.dragSpecs.startSize </span><span class="jsdoc-syntax">+
192 (</span><span class="jsdoc-var">this.placement </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">Roo.SplitBar.LEFT </span><span class="jsdoc-syntax">?
193 </span><span class="jsdoc-var">endPoint</span><span class="jsdoc-syntax">[0] - </span><span class="jsdoc-var">this.dragSpecs.startPoint</span><span class="jsdoc-syntax">[0] :
194 </span><span class="jsdoc-var">this.dragSpecs.startPoint</span><span class="jsdoc-syntax">[0] - </span><span class="jsdoc-var">endPoint</span><span class="jsdoc-syntax">[0]
196 }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
197 </span><span class="jsdoc-var">newSize </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.dragSpecs.startSize </span><span class="jsdoc-syntax">+
198 (</span><span class="jsdoc-var">this.placement </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">Roo.SplitBar.TOP </span><span class="jsdoc-syntax">?
199 </span><span class="jsdoc-var">endPoint</span><span class="jsdoc-syntax">[1] - </span><span class="jsdoc-var">this.dragSpecs.startPoint</span><span class="jsdoc-syntax">[1] :
200 </span><span class="jsdoc-var">this.dragSpecs.startPoint</span><span class="jsdoc-syntax">[1] - </span><span class="jsdoc-var">endPoint</span><span class="jsdoc-syntax">[1]
203 </span><span class="jsdoc-var">newSize </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.min</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Math.max</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">newSize</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.activeMinSize</span><span class="jsdoc-syntax">), </span><span class="jsdoc-var">this.activeMaxSize</span><span class="jsdoc-syntax">);
204 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">newSize </span><span class="jsdoc-syntax">!= </span><span class="jsdoc-var">this.dragSpecs.startSize</span><span class="jsdoc-syntax">){
205 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'beforeapply'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">newSize</span><span class="jsdoc-syntax">) !== </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">){
206 </span><span class="jsdoc-var">this.adapter.setElementSize</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">newSize</span><span class="jsdoc-syntax">);
207 </span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"moved"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">newSize</span><span class="jsdoc-syntax">);
208 </span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"resize"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">newSize</span><span class="jsdoc-syntax">);
213 </span><span class="jsdoc-comment">/**
214 * Get the adapter this SplitBar uses
215 * @return The adapter object
217 </span><span class="jsdoc-var">getAdapter </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
218 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.adapter</span><span class="jsdoc-syntax">;
221 </span><span class="jsdoc-comment">/**
222 * Set the adapter this SplitBar uses
223 * @param {Object} adapter A SplitBar adapter object
225 </span><span class="jsdoc-var">setAdapter </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">adapter</span><span class="jsdoc-syntax">){
226 </span><span class="jsdoc-var">this.adapter </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">adapter</span><span class="jsdoc-syntax">;
227 </span><span class="jsdoc-var">this.adapter.init</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
230 </span><span class="jsdoc-comment">/**
231 * Gets the minimum size for the resizing element
232 * @return {Number} The minimum size
234 </span><span class="jsdoc-var">getMinimumSize </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
235 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.minSize</span><span class="jsdoc-syntax">;
238 </span><span class="jsdoc-comment">/**
239 * Sets the minimum size for the resizing element
240 * @param {Number} minSize The minimum size
242 </span><span class="jsdoc-var">setMinimumSize </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">minSize</span><span class="jsdoc-syntax">){
243 </span><span class="jsdoc-var">this.minSize </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">minSize</span><span class="jsdoc-syntax">;
246 </span><span class="jsdoc-comment">/**
247 * Gets the maximum size for the resizing element
248 * @return {Number} The maximum size
250 </span><span class="jsdoc-var">getMaximumSize </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
251 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.maxSize</span><span class="jsdoc-syntax">;
254 </span><span class="jsdoc-comment">/**
255 * Sets the maximum size for the resizing element
256 * @param {Number} maxSize The maximum size
258 </span><span class="jsdoc-var">setMaximumSize </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">maxSize</span><span class="jsdoc-syntax">){
259 </span><span class="jsdoc-var">this.maxSize </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">maxSize</span><span class="jsdoc-syntax">;
262 </span><span class="jsdoc-comment">/**
263 * Sets the initialize size for the resizing element
264 * @param {Number} size The initial size
266 </span><span class="jsdoc-var">setCurrentSize </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">size</span><span class="jsdoc-syntax">){
267 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">oldAnimate </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.animate</span><span class="jsdoc-syntax">;
268 </span><span class="jsdoc-var">this.animate </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
269 </span><span class="jsdoc-var">this.adapter.setElementSize</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">size</span><span class="jsdoc-syntax">);
270 </span><span class="jsdoc-var">this.animate </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">oldAnimate</span><span class="jsdoc-syntax">;
273 </span><span class="jsdoc-comment">/**
274 * Destroy this splitbar.
275 * @param {Boolean} removeEl True to remove the element
277 </span><span class="jsdoc-var">destroy </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">removeEl</span><span class="jsdoc-syntax">){
278 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.shim</span><span class="jsdoc-syntax">){
279 </span><span class="jsdoc-var">this.shim.remove</span><span class="jsdoc-syntax">();
281 </span><span class="jsdoc-var">this.dd.unreg</span><span class="jsdoc-syntax">();
282 </span><span class="jsdoc-var">this.proxy.parentNode.removeChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.proxy</span><span class="jsdoc-syntax">);
283 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">removeEl</span><span class="jsdoc-syntax">){
284 </span><span class="jsdoc-var">this.el.remove</span><span class="jsdoc-syntax">();
289 </span><span class="jsdoc-comment">/**
290 * @private static Create our own proxy element element. So it will be the same same size on all browsers, we won't use borders. Instead we use a background color.
292 </span><span class="jsdoc-var">Roo.SplitBar.createProxy </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">dir</span><span class="jsdoc-syntax">){
293 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">proxy </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.Element</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">document.createElement</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"div"</span><span class="jsdoc-syntax">));
294 </span><span class="jsdoc-var">proxy.unselectable</span><span class="jsdoc-syntax">();
295 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">cls </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">'x-splitbar-proxy'</span><span class="jsdoc-syntax">;
296 </span><span class="jsdoc-var">proxy.addClass</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cls </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">' ' </span><span class="jsdoc-syntax">+ (</span><span class="jsdoc-var">dir </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">Roo.SplitBar.HORIZONTAL </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">cls </span><span class="jsdoc-syntax">+</span><span class="jsdoc-string">'-h' </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">cls </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'-v'</span><span class="jsdoc-syntax">));
297 </span><span class="jsdoc-var">document.body.appendChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">proxy.dom</span><span class="jsdoc-syntax">);
298 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">proxy.dom</span><span class="jsdoc-syntax">;
301 </span><span class="jsdoc-comment">/**
302 * @class Roo.SplitBar.BasicLayoutAdapter
303 * Default Adapter. It assumes the splitter and resizing element are not positioned
304 * elements and only gets/sets the width of the element. Generally used for table based layouts.
306 </span><span class="jsdoc-var">Roo.SplitBar.BasicLayoutAdapter </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
309 </span><span class="jsdoc-var">Roo.SplitBar.BasicLayoutAdapter.prototype </span><span class="jsdoc-syntax">= {
310 </span><span class="jsdoc-comment">// do nothing for now
311 </span><span class="jsdoc-var">init </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">s</span><span class="jsdoc-syntax">){
314 </span><span class="jsdoc-comment">/**
315 * Called before drag operations to get the current size of the resizing element.
316 * @param {Roo.SplitBar} s The SplitBar using this adapter
318 </span><span class="jsdoc-var">getElementSize </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">s</span><span class="jsdoc-syntax">){
319 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">s.orientation </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">Roo.SplitBar.HORIZONTAL</span><span class="jsdoc-syntax">){
320 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">s.resizingEl.getWidth</span><span class="jsdoc-syntax">();
321 }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
322 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">s.resizingEl.getHeight</span><span class="jsdoc-syntax">();
326 </span><span class="jsdoc-comment">/**
327 * Called after drag operations to set the size of the resizing element.
328 * @param {Roo.SplitBar} s The SplitBar using this adapter
329 * @param {Number} newSize The new size to set
330 * @param {Function} onComplete A function to be invoked when resizing is complete
332 </span><span class="jsdoc-var">setElementSize </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">s</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">newSize</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">onComplete</span><span class="jsdoc-syntax">){
333 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">s.orientation </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">Roo.SplitBar.HORIZONTAL</span><span class="jsdoc-syntax">){
334 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">s.animate</span><span class="jsdoc-syntax">){
335 </span><span class="jsdoc-var">s.resizingEl.setWidth</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">newSize</span><span class="jsdoc-syntax">);
336 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">onComplete</span><span class="jsdoc-syntax">){
337 </span><span class="jsdoc-var">onComplete</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">s</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">newSize</span><span class="jsdoc-syntax">);
339 }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
340 </span><span class="jsdoc-var">s.resizingEl.setWidth</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">newSize</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">.</span><span class="jsdoc-syntax">1, </span><span class="jsdoc-var">onComplete</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'easeOut'</span><span class="jsdoc-syntax">);
342 }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
344 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">s.animate</span><span class="jsdoc-syntax">){
345 </span><span class="jsdoc-var">s.resizingEl.setHeight</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">newSize</span><span class="jsdoc-syntax">);
346 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">onComplete</span><span class="jsdoc-syntax">){
347 </span><span class="jsdoc-var">onComplete</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">s</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">newSize</span><span class="jsdoc-syntax">);
349 }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
350 </span><span class="jsdoc-var">s.resizingEl.setHeight</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">newSize</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">.</span><span class="jsdoc-syntax">1, </span><span class="jsdoc-var">onComplete</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'easeOut'</span><span class="jsdoc-syntax">);
356 </span><span class="jsdoc-comment">/**
357 *@class Roo.SplitBar.AbsoluteLayoutAdapter
358 * @extends Roo.SplitBar.BasicLayoutAdapter
359 * Adapter that moves the splitter element to align with the resized sizing element.
360 * Used with an absolute positioned SplitBar.
361 * @param {String/HTMLElement/Roo.Element} container The container that wraps around the absolute positioned content. If it's
362 * document.body, make sure you assign an id to the body element.
364 </span><span class="jsdoc-var">Roo.SplitBar.AbsoluteLayoutAdapter </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">container</span><span class="jsdoc-syntax">){
365 </span><span class="jsdoc-var">this.basic </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.SplitBar.BasicLayoutAdapter</span><span class="jsdoc-syntax">();
366 </span><span class="jsdoc-var">this.container </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">container</span><span class="jsdoc-syntax">);
369 </span><span class="jsdoc-var">Roo.SplitBar.AbsoluteLayoutAdapter.prototype </span><span class="jsdoc-syntax">= {
370 </span><span class="jsdoc-var">init </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">s</span><span class="jsdoc-syntax">){
371 </span><span class="jsdoc-var">this.basic.init</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">s</span><span class="jsdoc-syntax">);
374 </span><span class="jsdoc-var">getElementSize </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">s</span><span class="jsdoc-syntax">){
375 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.basic.getElementSize</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">s</span><span class="jsdoc-syntax">);
378 </span><span class="jsdoc-var">setElementSize </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">s</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">newSize</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">onComplete</span><span class="jsdoc-syntax">){
379 </span><span class="jsdoc-var">this.basic.setElementSize</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">s</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">newSize</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.moveSplitter.createDelegate</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, [</span><span class="jsdoc-var">s</span><span class="jsdoc-syntax">]));
382 </span><span class="jsdoc-var">moveSplitter </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">s</span><span class="jsdoc-syntax">){
383 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">yes </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.SplitBar</span><span class="jsdoc-syntax">;
384 </span><span class="jsdoc-keyword">switch</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">s.placement</span><span class="jsdoc-syntax">){
385 </span><span class="jsdoc-keyword">case </span><span class="jsdoc-var">yes.LEFT</span><span class="jsdoc-syntax">:
386 </span><span class="jsdoc-var">s.el.setX</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">s.resizingEl.getRight</span><span class="jsdoc-syntax">());
387 </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
388 </span><span class="jsdoc-keyword">case </span><span class="jsdoc-var">yes.RIGHT</span><span class="jsdoc-syntax">:
389 </span><span class="jsdoc-var">s.el.setStyle</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"right"</span><span class="jsdoc-syntax">, (</span><span class="jsdoc-var">this.container.getWidth</span><span class="jsdoc-syntax">() - </span><span class="jsdoc-var">s.resizingEl.getLeft</span><span class="jsdoc-syntax">()) + </span><span class="jsdoc-string">"px"</span><span class="jsdoc-syntax">);
390 </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
391 </span><span class="jsdoc-keyword">case </span><span class="jsdoc-var">yes.TOP</span><span class="jsdoc-syntax">:
392 </span><span class="jsdoc-var">s.el.setY</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">s.resizingEl.getBottom</span><span class="jsdoc-syntax">());
393 </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
394 </span><span class="jsdoc-keyword">case </span><span class="jsdoc-var">yes.BOTTOM</span><span class="jsdoc-syntax">:
395 </span><span class="jsdoc-var">s.el.setY</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">s.resizingEl.getTop</span><span class="jsdoc-syntax">() - </span><span class="jsdoc-var">s.el.getHeight</span><span class="jsdoc-syntax">());
396 </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
401 </span><span class="jsdoc-comment">/**
402 * Orientation constant - Create a vertical SplitBar
406 </span><span class="jsdoc-var">Roo.SplitBar.VERTICAL </span><span class="jsdoc-syntax">= 1;
408 </span><span class="jsdoc-comment">/**
409 * Orientation constant - Create a horizontal SplitBar
413 </span><span class="jsdoc-var">Roo.SplitBar.HORIZONTAL </span><span class="jsdoc-syntax">= 2;
415 </span><span class="jsdoc-comment">/**
416 * Placement constant - The resizing element is to the left of the splitter element
420 </span><span class="jsdoc-var">Roo.SplitBar.LEFT </span><span class="jsdoc-syntax">= 1;
422 </span><span class="jsdoc-comment">/**
423 * Placement constant - The resizing element is to the right of the splitter element
427 </span><span class="jsdoc-var">Roo.SplitBar.RIGHT </span><span class="jsdoc-syntax">= 2;
429 </span><span class="jsdoc-comment">/**
430 * Placement constant - The resizing element is positioned above the splitter element
434 </span><span class="jsdoc-var">Roo.SplitBar.TOP </span><span class="jsdoc-syntax">= 3;
436 </span><span class="jsdoc-comment">/**
437 * Placement constant - The resizing element is positioned under splitter element
441 </span><span class="jsdoc-var">Roo.SplitBar.BOTTOM </span><span class="jsdoc-syntax">= 4;
442 </span></code></body></html>