You are viewing a plain text version of this content. The canonical link for it is here.
Posted to xap-commits@incubator.apache.org by mt...@apache.org on 2007/03/28 20:59:08 UTC
svn commit: r523457 -
/incubator/xap/trunk/codebase/src/xap/bridges/dojo/VerticalSplitPaneBridge.js
Author: mturyn
Date: Wed Mar 28 13:59:05 2007
New Revision: 523457
URL: http://svn.apache.org/viewvc?view=rev&rev=523457
Log:
Fixed ordering-dependence, can now support "splitPosition" with children in any order.
Modified:
incubator/xap/trunk/codebase/src/xap/bridges/dojo/VerticalSplitPaneBridge.js
Modified: incubator/xap/trunk/codebase/src/xap/bridges/dojo/VerticalSplitPaneBridge.js
URL: http://svn.apache.org/viewvc/incubator/xap/trunk/codebase/src/xap/bridges/dojo/VerticalSplitPaneBridge.js?view=diff&rev=523457&r1=523456&r2=523457
==============================================================================
--- incubator/xap/trunk/codebase/src/xap/bridges/dojo/VerticalSplitPaneBridge.js (original)
+++ incubator/xap/trunk/codebase/src/xap/bridges/dojo/VerticalSplitPaneBridge.js Wed Mar 28 13:59:05 2007
@@ -68,10 +68,22 @@
*
*/
-
-xap.bridges.dojo.VerticalSplitPaneBridge.isFirstPanel = function(handler){
-
- return ("left,top").indexOf(handler.getElement().nodeName) + 1 ;
+/**
+ * Is this a left or top pane's handler?
+**/
+xap.bridges.dojo.VerticalSplitPaneBridge.panelIndex = function(handler){
+
+ var result = null ;
+ if( handler ){
+ if(handler._inSplitPanePiece == "left"
+ || handler._inSplitPanePiece == "top" ){
+ result = 0 ;
+ } else if(handler._inSplitPanePiece == "right"
+ || handler._inSplitPanePiece == "bottom" ){
+ result = 1 ;
+ }
+ }
+ return result ;
}
@@ -85,6 +97,29 @@
xap.bridges.dojo.VerticalSplitPaneBridge.prototype.addChild = function(childHandler, index){
//xap.util.Utils.interrogate(childHandler.getElement(),true,20) ;
var insertIndex = -1;
+
+ var childPeer = childHandler.getPeer()
+
+ var idx = xap.bridges.dojo.VerticalSplitPaneBridge.panelIndex(childHandler)
+ if( (idx!=null )&& childPeer ){
+ childPeer._splitPaneIndex = idx ;
+ } else if (childHandler._proxyHandler){
+ // The real handler for the child component might
+ // be the proxy handler---e.g., for the <label/> in
+ // (e.g.) <left><label/></left>
+ idx
+ = xap.bridges.dojo.VerticalSplitPaneBridge.panelIndex(childHandler._proxyHandler)
+
+ var childProxyPeer = childHandler._proxyHandler.getPeer() ;
+
+ if( (idx!=null )&& childProxyPeer ){
+ childProxyPeer._splitPaneIndex = idx ;
+ }
+
+ }
+
+// alert("Found index "+idx+".") ;
+
if (childHandler instanceof xap.bridges.dojo.SecondSplitChildBridge){
insertIndex = this.getPeer().children.length;
childHandler._splitPaneBridge = this;
@@ -121,8 +156,6 @@
}
xap.bridges.dojo.VerticalSplitPaneBridge.prototype.init = function(e){
-
-
this._initted = false ;
xap.bridges.dojo.VerticalSplitPaneBridge.superclass.init.call(this,e) ;
this._initted = true ;
@@ -130,47 +163,41 @@
this.adjustSplitter() ;
}
+xap.bridges.dojo.VerticalSplitPaneBridge.prototype.offsetType = "offsetTop" ;
+
+
xap.bridges.dojo.VerticalSplitPaneBridge.prototype.adjustSplitter = function(){
- var peer = this.getPeer() ;
- if( !peer ){
- return ;
- }
- var children = peer.children ;
+ splitPosition = this.getSplitPositionFromElement() ;
+ var children = this.getPeer().children ;
+
+ // Are we looking for (e.g.) leftmost or topmost?
+ var offsetType = this.offsetType ;
+
-// var uch = this.getUiContentHandler() ;
+ var offset_0 = null ;
+ var offset_1 = null ;
- this._splitPosition = this.getSplitPositionFromElement() ;
- for( var ii=0; ii<children.length; ++ii){
- var childPeer = children[ii] ;
- // Default: all are equal:
- childPeer.sizeShare = 50 ;
-// This would be better, except that we can't map this way
-// from peers to handlers:
-// var childHandler = uch.getHandlerForPeer(childPeer) ;
-// if( !childHandler ){
-// // Not all peers' children have handlers...
-// continue ;
-// }
-
- if(!isNaN(this._splitPosition)){
- var share = this._splitPosition ;
- // This is a hack that only works
- // if the children are in left,right
- // or top,bottom order:
- if( childPeer.dojoInsertionIndex == 0 ){
- //if(xap.bridges.dojo.VerticalSplitPaneBridge.isFirstPanel(childHandler)){
- //if( childPeer._isAFirstChildPeer ){
- // This is a left or top child; all is
- // as we need it already:
- } else {
- // Only two panels, 100%=100
- share = 100 - share ;
- }
- childPeer.sizeShare = share ;
- // alert("Share: "+share) ;
+ if(children[0]){
+ children[0].sizeShare = 50 ;
+ offset_0 = children[0].domNode[offsetType] ;
+ }
+ if(children[1]){
+ children[1].sizeShare = 50 ;
+ offset_1 = children[1].domNode[offsetType] ;
+ }
+
+ if(children[0] && children[1]){
+ if(offset_0<offset_1){
+ children[0].sizeShare = splitPosition ;
+ children[1].sizeShare = 100 - splitPosition ;
+ } else if(offset_1<offset_0){
+ children[0].sizeShare = 100 - splitPosition ;
+ children[1].sizeShare = splitPosition ;
}
}
+
+
this.getPeer()._layoutPanels() ;
}