1 <html><head><title>Roo/bootstrap/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">
14 * @class Roo.bootstrap.SplitBar
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.bootstrap.SplitBar("elementToDrag", "elementToSize",
21 Roo.bootstrap.SplitBar.HORIZONTAL, Roo.bootstrap.SplitBar.LEFT);
22 split.setAdapter(new Roo.bootstrap.SplitBar.AbsoluteLayoutAdapter("container"));
26 split.on('moved', splitterMoved);
27 </code></pre>
29 * Create a new SplitBar
30 * @config {String/HTMLElement/Roo.Element} dragElement The element to be dragged and act as the SplitBar.
31 * @config {String/HTMLElement/Roo.Element} resizingElement The element to be resized based on where the SplitBar element is dragged
32 * @config {Number} orientation (optional) Either Roo.bootstrap.SplitBar.HORIZONTAL or Roo.bootstrap.SplitBar.VERTICAL. (Defaults to HORIZONTAL)
33 * @config {Number} placement (optional) Either Roo.bootstrap.SplitBar.LEFT or Roo.bootstrap.SplitBar.RIGHT for horizontal or
34 Roo.bootstrap.SplitBar.TOP or Roo.bootstrap.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.bootstrap.SplitBar </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cfg</span><span class="jsdoc-syntax">){
39 </span><span class="jsdoc-comment">/** @private */
43 // resizingElement: el,
45 // orientation : Either Roo.bootstrap.SplitBar.HORIZONTAL
46 // placement : Roo.bootstrap.SplitBar.LEFT ,
50 </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">cfg.dragElement</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
51 </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">;
52 </span><span class="jsdoc-comment">/** @private */
53 </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">cfg.resizingElement</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
55 </span><span class="jsdoc-comment">/**
57 * The orientation of the split. Either Roo.bootstrap.SplitBar.HORIZONTAL or Roo.bootstrap.SplitBar.VERTICAL. (Defaults to HORIZONTAL)
58 * Note: If this is changed after creating the SplitBar, the placement property must be manually updated
61 </span><span class="jsdoc-var">this.orientation </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">cfg.orientation </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">Roo.bootstrap.SplitBar.HORIZONTAL</span><span class="jsdoc-syntax">;
63 </span><span class="jsdoc-comment">/**
64 * The minimum size of the resizing element. (Defaults to 0)
67 </span><span class="jsdoc-var">this.minSize </span><span class="jsdoc-syntax">= 0;
69 </span><span class="jsdoc-comment">/**
70 * The maximum size of the resizing element. (Defaults to 2000)
73 </span><span class="jsdoc-var">this.maxSize </span><span class="jsdoc-syntax">= 2000;
75 </span><span class="jsdoc-comment">/**
76 * Whether to animate the transition to the new size
79 </span><span class="jsdoc-var">this.animate </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
81 </span><span class="jsdoc-comment">/**
82 * Whether to create a transparent shim that overlays the page when dragging, enables dragging across iframes.
85 </span><span class="jsdoc-var">this.useShim </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
87 </span><span class="jsdoc-comment">/** @private */
88 </span><span class="jsdoc-var">this.shim </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">;
90 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">cfg.existingProxy</span><span class="jsdoc-syntax">){
91 </span><span class="jsdoc-comment">/** @private */
92 </span><span class="jsdoc-var">this.proxy </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.bootstrap.SplitBar.createProxy</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.orientation</span><span class="jsdoc-syntax">);
93 }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
94 </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">cfg.existingProxy</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.dom</span><span class="jsdoc-syntax">;
96 </span><span class="jsdoc-comment">/** @private */
97 </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">});
99 </span><span class="jsdoc-comment">/** @private */
100 </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">);
102 </span><span class="jsdoc-comment">/** @private */
103 </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">);
105 </span><span class="jsdoc-comment">/** @private */
106 </span><span class="jsdoc-var">this.dragSpecs </span><span class="jsdoc-syntax">= {};
108 </span><span class="jsdoc-comment">/**
109 * @private The adapter to use to positon and resize elements
111 </span><span class="jsdoc-var">this.adapter </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.bootstrap.SplitBar.BasicLayoutAdapter</span><span class="jsdoc-syntax">();
112 </span><span class="jsdoc-var">this.adapter.init</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
114 </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.bootstrap.SplitBar.HORIZONTAL</span><span class="jsdoc-syntax">){
115 </span><span class="jsdoc-comment">/** @private */
116 </span><span class="jsdoc-var">this.placement </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">cfg.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.bootstrap.SplitBar.LEFT </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">Roo.bootstrap.SplitBar.RIGHT</span><span class="jsdoc-syntax">);
117 </span><span class="jsdoc-var">this.el.addClass</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"roo-splitbar-h"</span><span class="jsdoc-syntax">);
118 }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
119 </span><span class="jsdoc-comment">/** @private */
120 </span><span class="jsdoc-var">this.placement </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">cfg.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.bootstrap.SplitBar.TOP </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">Roo.bootstrap.SplitBar.BOTTOM</span><span class="jsdoc-syntax">);
121 </span><span class="jsdoc-var">this.el.addClass</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"roo-splitbar-v"</span><span class="jsdoc-syntax">);
124 </span><span class="jsdoc-var">this.addEvents</span><span class="jsdoc-syntax">({
125 </span><span class="jsdoc-comment">/**
127 * Fires when the splitter is moved (alias for {@link #event-moved})
128 * @param {Roo.bootstrap.SplitBar} this
129 * @param {Number} newSize the new width or height
131 </span><span class="jsdoc-string">"resize" </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
132 </span><span class="jsdoc-comment">/**
134 * Fires when the splitter is moved
135 * @param {Roo.bootstrap.SplitBar} this
136 * @param {Number} newSize the new width or height
138 </span><span class="jsdoc-string">"moved" </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
139 </span><span class="jsdoc-comment">/**
140 * @event beforeresize
141 * Fires before the splitter is dragged
142 * @param {Roo.bootstrap.SplitBar} this
144 </span><span class="jsdoc-string">"beforeresize" </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
146 </span><span class="jsdoc-string">"beforeapply" </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true
147 </span><span class="jsdoc-syntax">});
149 </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">);
152 </span><span class="jsdoc-var">Roo.extend</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.bootstrap.SplitBar</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">Roo.util.Observable</span><span class="jsdoc-syntax">, {
153 </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">){
154 </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">);
155 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.overlay</span><span class="jsdoc-syntax">){
156 </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">"roo-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">);
157 </span><span class="jsdoc-var">o.unselectable</span><span class="jsdoc-syntax">();
158 </span><span class="jsdoc-var">o.enableDisplayMode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"block"</span><span class="jsdoc-syntax">);
159 </span><span class="jsdoc-comment">// all splitbars share the same overlay
160 </span><span class="jsdoc-var">Roo.bootstrap.SplitBar.prototype.overlay </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">;
162 </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">));
163 </span><span class="jsdoc-var">this.overlay.show</span><span class="jsdoc-syntax">();
164 </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">);
165 </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">);
166 </span><span class="jsdoc-var">this.activeMinSize </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.getMinimumSize</span><span class="jsdoc-syntax">();;
167 </span><span class="jsdoc-var">this.activeMaxSize </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.getMaximumSize</span><span class="jsdoc-syntax">();;
168 </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">;
169 </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);
170 </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.bootstrap.SplitBar.HORIZONTAL</span><span class="jsdoc-syntax">){
171 </span><span class="jsdoc-var">this.dd.resetConstraints</span><span class="jsdoc-syntax">();
172 </span><span class="jsdoc-var">this.dd.setXConstraint</span><span class="jsdoc-syntax">(
173 </span><span class="jsdoc-var">this.placement </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">Roo.bootstrap.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">,
174 </span><span class="jsdoc-var">this.placement </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">Roo.bootstrap.SplitBar.LEFT </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">c2 </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">c1
175 </span><span class="jsdoc-syntax">);
176 </span><span class="jsdoc-var">this.dd.setYConstraint</span><span class="jsdoc-syntax">(0, 0);
177 }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
178 </span><span class="jsdoc-var">this.dd.resetConstraints</span><span class="jsdoc-syntax">();
179 </span><span class="jsdoc-var">this.dd.setXConstraint</span><span class="jsdoc-syntax">(0, 0);
180 </span><span class="jsdoc-var">this.dd.setYConstraint</span><span class="jsdoc-syntax">(
181 </span><span class="jsdoc-var">this.placement </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">Roo.bootstrap.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">,
182 </span><span class="jsdoc-var">this.placement </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">Roo.bootstrap.SplitBar.TOP </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">c2 </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">c1
183 </span><span class="jsdoc-syntax">);
185 </span><span class="jsdoc-var">this.dragSpecs.startSize </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">size</span><span class="jsdoc-syntax">;
186 </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">];
187 </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">);
190 </span><span class="jsdoc-comment">/**
191 * @private Called after the drag operation by the DDProxy
193 </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">){
194 </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">);
195 </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">);
196 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.overlay</span><span class="jsdoc-syntax">){
197 </span><span class="jsdoc-var">this.overlay.hide</span><span class="jsdoc-syntax">();
199 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">newSize</span><span class="jsdoc-syntax">;
200 </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.bootstrap.SplitBar.HORIZONTAL</span><span class="jsdoc-syntax">){
201 </span><span class="jsdoc-var">newSize </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.dragSpecs.startSize </span><span class="jsdoc-syntax">+
202 (</span><span class="jsdoc-var">this.placement </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">Roo.bootstrap.SplitBar.LEFT </span><span class="jsdoc-syntax">?
203 </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] :
204 </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]
206 }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
207 </span><span class="jsdoc-var">newSize </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.dragSpecs.startSize </span><span class="jsdoc-syntax">+
208 (</span><span class="jsdoc-var">this.placement </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">Roo.bootstrap.SplitBar.TOP </span><span class="jsdoc-syntax">?
209 </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] :
210 </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]
213 </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">);
214 </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">){
215 </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">){
216 </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">);
217 </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">);
218 </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">);
223 </span><span class="jsdoc-comment">/**
224 * Get the adapter this SplitBar uses
225 * @return The adapter object
227 </span><span class="jsdoc-var">getAdapter </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
228 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.adapter</span><span class="jsdoc-syntax">;
231 </span><span class="jsdoc-comment">/**
232 * Set the adapter this SplitBar uses
233 * @param {Object} adapter A SplitBar adapter object
235 </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">){
236 </span><span class="jsdoc-var">this.adapter </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">adapter</span><span class="jsdoc-syntax">;
237 </span><span class="jsdoc-var">this.adapter.init</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
240 </span><span class="jsdoc-comment">/**
241 * Gets the minimum size for the resizing element
242 * @return {Number} The minimum size
244 </span><span class="jsdoc-var">getMinimumSize </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
245 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.minSize</span><span class="jsdoc-syntax">;
248 </span><span class="jsdoc-comment">/**
249 * Sets the minimum size for the resizing element
250 * @param {Number} minSize The minimum size
252 </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">){
253 </span><span class="jsdoc-var">this.minSize </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">minSize</span><span class="jsdoc-syntax">;
256 </span><span class="jsdoc-comment">/**
257 * Gets the maximum size for the resizing element
258 * @return {Number} The maximum size
260 </span><span class="jsdoc-var">getMaximumSize </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
261 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.maxSize</span><span class="jsdoc-syntax">;
264 </span><span class="jsdoc-comment">/**
265 * Sets the maximum size for the resizing element
266 * @param {Number} maxSize The maximum size
268 </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">){
269 </span><span class="jsdoc-var">this.maxSize </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">maxSize</span><span class="jsdoc-syntax">;
272 </span><span class="jsdoc-comment">/**
273 * Sets the initialize size for the resizing element
274 * @param {Number} size The initial size
276 </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">){
277 </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">;
278 </span><span class="jsdoc-var">this.animate </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
279 </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">);
280 </span><span class="jsdoc-var">this.animate </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">oldAnimate</span><span class="jsdoc-syntax">;
283 </span><span class="jsdoc-comment">/**
284 * Destroy this splitbar.
285 * @param {Boolean} removeEl True to remove the element
287 </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">){
288 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.shim</span><span class="jsdoc-syntax">){
289 </span><span class="jsdoc-var">this.shim.remove</span><span class="jsdoc-syntax">();
291 </span><span class="jsdoc-var">this.dd.unreg</span><span class="jsdoc-syntax">();
292 </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">);
293 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">removeEl</span><span class="jsdoc-syntax">){
294 </span><span class="jsdoc-var">this.el.remove</span><span class="jsdoc-syntax">();
299 </span><span class="jsdoc-comment">/**
300 * @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.
302 </span><span class="jsdoc-var">Roo.bootstrap.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">){
303 </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">));
304 </span><span class="jsdoc-var">proxy.unselectable</span><span class="jsdoc-syntax">();
305 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">cls </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">'roo-splitbar-proxy'</span><span class="jsdoc-syntax">;
306 </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.bootstrap.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">));
307 </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">);
308 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">proxy.dom</span><span class="jsdoc-syntax">;
311 </span><span class="jsdoc-comment">/**
312 * @class Roo.bootstrap.SplitBar.BasicLayoutAdapter
313 * Default Adapter. It assumes the splitter and resizing element are not positioned
314 * elements and only gets/sets the width of the element. Generally used for table based layouts.
316 </span><span class="jsdoc-var">Roo.bootstrap.SplitBar.BasicLayoutAdapter </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
319 </span><span class="jsdoc-var">Roo.bootstrap.SplitBar.BasicLayoutAdapter.prototype </span><span class="jsdoc-syntax">= {
320 </span><span class="jsdoc-comment">// do nothing for now
321 </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">){
324 </span><span class="jsdoc-comment">/**
325 * Called before drag operations to get the current size of the resizing element.
326 * @param {Roo.bootstrap.SplitBar} s The SplitBar using this adapter
328 </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">){
329 </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.bootstrap.SplitBar.HORIZONTAL</span><span class="jsdoc-syntax">){
330 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">s.resizingEl.getWidth</span><span class="jsdoc-syntax">();
331 }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
332 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">s.resizingEl.getHeight</span><span class="jsdoc-syntax">();
336 </span><span class="jsdoc-comment">/**
337 * Called after drag operations to set the size of the resizing element.
338 * @param {Roo.bootstrap.SplitBar} s The SplitBar using this adapter
339 * @param {Number} newSize The new size to set
340 * @param {Function} onComplete A function to be invoked when resizing is complete
342 </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">){
343 </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.bootstrap.SplitBar.HORIZONTAL</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.setWidth</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.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">.1</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">onComplete</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'easeOut'</span><span class="jsdoc-syntax">);
352 }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
354 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">s.animate</span><span class="jsdoc-syntax">){
355 </span><span class="jsdoc-var">s.resizingEl.setHeight</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">newSize</span><span class="jsdoc-syntax">);
356 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">onComplete</span><span class="jsdoc-syntax">){
357 </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">);
359 }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
360 </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">.1</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">onComplete</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'easeOut'</span><span class="jsdoc-syntax">);
366 </span><span class="jsdoc-comment">/**
367 *@class Roo.bootstrap.SplitBar.AbsoluteLayoutAdapter
368 * @extends Roo.bootstrap.SplitBar.BasicLayoutAdapter
369 * Adapter that moves the splitter element to align with the resized sizing element.
370 * Used with an absolute positioned SplitBar.
371 * @param {String/HTMLElement/Roo.Element} container The container that wraps around the absolute positioned content. If it's
372 * document.body, make sure you assign an id to the body element.
374 </span><span class="jsdoc-var">Roo.bootstrap.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">){
375 </span><span class="jsdoc-var">this.basic </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.bootstrap.SplitBar.BasicLayoutAdapter</span><span class="jsdoc-syntax">();
376 </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">);
379 </span><span class="jsdoc-var">Roo.bootstrap.SplitBar.AbsoluteLayoutAdapter.prototype </span><span class="jsdoc-syntax">= {
380 </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">){
381 </span><span class="jsdoc-var">this.basic.init</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">s</span><span class="jsdoc-syntax">);
384 </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">){
385 </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">);
388 </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">){
389 </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">]));
392 </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">){
393 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">yes </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.bootstrap.SplitBar</span><span class="jsdoc-syntax">;
394 </span><span class="jsdoc-keyword">switch</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">s.placement</span><span class="jsdoc-syntax">){
395 </span><span class="jsdoc-keyword">case </span><span class="jsdoc-var">yes.LEFT</span><span class="jsdoc-syntax">:
396 </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">());
397 </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
398 </span><span class="jsdoc-keyword">case </span><span class="jsdoc-var">yes.RIGHT</span><span class="jsdoc-syntax">:
399 </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">);
400 </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
401 </span><span class="jsdoc-keyword">case </span><span class="jsdoc-var">yes.TOP</span><span class="jsdoc-syntax">:
402 </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">());
403 </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
404 </span><span class="jsdoc-keyword">case </span><span class="jsdoc-var">yes.BOTTOM</span><span class="jsdoc-syntax">:
405 </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">());
406 </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
411 </span><span class="jsdoc-comment">/**
412 * Orientation constant - Create a vertical SplitBar
416 </span><span class="jsdoc-var">Roo.bootstrap.SplitBar.VERTICAL </span><span class="jsdoc-syntax">= 1;
418 </span><span class="jsdoc-comment">/**
419 * Orientation constant - Create a horizontal SplitBar
423 </span><span class="jsdoc-var">Roo.bootstrap.SplitBar.HORIZONTAL </span><span class="jsdoc-syntax">= 2;
425 </span><span class="jsdoc-comment">/**
426 * Placement constant - The resizing element is to the left of the splitter element
430 </span><span class="jsdoc-var">Roo.bootstrap.SplitBar.LEFT </span><span class="jsdoc-syntax">= 1;
432 </span><span class="jsdoc-comment">/**
433 * Placement constant - The resizing element is to the right of the splitter element
437 </span><span class="jsdoc-var">Roo.bootstrap.SplitBar.RIGHT </span><span class="jsdoc-syntax">= 2;
439 </span><span class="jsdoc-comment">/**
440 * Placement constant - The resizing element is positioned above the splitter element
444 </span><span class="jsdoc-var">Roo.bootstrap.SplitBar.TOP </span><span class="jsdoc-syntax">= 3;
446 </span><span class="jsdoc-comment">/**
447 * Placement constant - The resizing element is positioned under splitter element
451 </span><span class="jsdoc-var">Roo.bootstrap.SplitBar.BOTTOM </span><span class="jsdoc-syntax">= 4;
452 </span></code></body></html>