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() ;	
 }