You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by sm...@apache.org on 2006/11/15 11:58:13 UTC

svn commit: r475197 - in /portals/jetspeed-2/trunk/src/webapp/javascript/jetspeed: desktop/core.js widget/PortletWindow.js

Author: smilek
Date: Wed Nov 15 02:58:12 2006
New Revision: 475197

URL: http://svn.apache.org/viewvc?view=rev&rev=475197
Log:
addressed several window mode/state transition issues and restructured PortletWindow repetitive positioning settings into single function (_adjustPositionToDesktopState)

Modified:
    portals/jetspeed-2/trunk/src/webapp/javascript/jetspeed/desktop/core.js
    portals/jetspeed-2/trunk/src/webapp/javascript/jetspeed/widget/PortletWindow.js

Modified: portals/jetspeed-2/trunk/src/webapp/javascript/jetspeed/desktop/core.js
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/src/webapp/javascript/jetspeed/desktop/core.js?view=diff&rev=475197&r1=475196&r2=475197
==============================================================================
--- portals/jetspeed-2/trunk/src/webapp/javascript/jetspeed/desktop/core.js (original)
+++ portals/jetspeed-2/trunk/src/webapp/javascript/jetspeed/desktop/core.js Wed Nov 15 02:58:12 2006
@@ -52,6 +52,7 @@
 // ... jetspeed.id
 jetspeed.id =
 {
+    PAGE: "jetspeedPage",
     DESKTOP: "jetspeedDesktop",
     TASKBAR: "jetspeedTaskbar",
     COLUMNS: "jetspeedColumns",
@@ -108,8 +109,8 @@
     windowTiling: true,                 // false indicates no-columns, free-floating windows
     windowHeightExpand: false,          // only meaningful when windowTiling == true
     
-    windowWidth: "280",
-    windowHeight: "200",
+    windowWidth: null,                  // last-ditch defaults for these defined in initializeDesktop
+    windowHeight: null,
 
     desktopTheme: null,                 // do not access directly - use getDesktopTheme()
     desktopThemeRootUrl: null,          // do not access directly - use getDesktopThemeRootUrl()
@@ -193,6 +194,11 @@
                     jetspeed.prefs[ prefKey ] = prefOverrideVal;
             }
         }
+        if ( jetspeed.prefs.windowWidth == null || isNaN( jetspeed.prefs.windowWidth ) )
+            jetspeed.prefs.windowWidth = "280";
+        if ( jetspeed.prefs.windowHeight == null || isNaN( jetspeed.prefs.windowHeight ) )
+            jetspeed.prefs.windowHeight = "200";
+        
         var windowActionDesktop = {};
         windowActionDesktop[ jetspeed.id.PORTLET_ACTION_NAME_DESKTOP_HEIGHT_EXPAND ] = true;
         windowActionDesktop[ jetspeed.id.PORTLET_ACTION_NAME_DESKTOP_HEIGHT_NORMAL ] = true;
@@ -269,7 +275,7 @@
         windowParams[ jetspeed.id.PORTLET_PROP_TOP ] = "0";
         windowParams[ jetspeed.id.PORTLET_PROP_EXCLUDE_PCONTENT ] = false;
         windowParams[ jetspeed.id.PORTLET_PROP_CONTENT_RETRIEVER ] = new jetspeed.om.DojoDebugContentRetriever();
-        //windowParams[ jetspeed.id.PORTLET_PROP_WINDOW_STATE ] = "minimized" ;
+        windowParams[ jetspeed.id.PORTLET_PROP_WINDOW_STATE ] = "minimized" ;
         var pwWidgetParams = jetspeed.widget.PortletWindow.prototype.staticDefineAsAltInitParameters( null, windowParams );
         jetspeed.ui.createPortletWindow( pwWidgetParams );
         pwWidgetParams.retrieveContent( null, null );
@@ -2653,6 +2659,8 @@
                     queryStringFragment += "&row=" + changedState.row;
                 if ( changedState.layout != null )
                     queryStringFragment += "&layoutid=" + changedState.layout;
+                if ( changedState.height != null )
+                    queryStringFragment += "&height=" + changedState.height;
             }
             else
             {

Modified: portals/jetspeed-2/trunk/src/webapp/javascript/jetspeed/widget/PortletWindow.js
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/src/webapp/javascript/jetspeed/widget/PortletWindow.js?view=diff&rev=475197&r1=475196&r2=475197
==============================================================================
--- portals/jetspeed-2/trunk/src/webapp/javascript/jetspeed/widget/PortletWindow.js (original)
+++ portals/jetspeed-2/trunk/src/webapp/javascript/jetspeed/widget/PortletWindow.js Wed Nov 15 02:58:12 2006
@@ -58,6 +58,9 @@
 
     processingContentChanged: false,
 
+    lastUntiledPositionInfo: null,
+    lastTiledPositionInfo: null,
+
     /*  static   */
     staticDefineAsAltInitParameters: function( defineIn, params )
     {
@@ -186,7 +189,7 @@
         }
     },
 
-    setWindowDimensions: function( fragment )
+    initWindowDimensions: function( fragment )
     {
         this.windowPositionStatic = this.getInitProperty( jetspeed.id.PORTLET_PROP_WINDOW_POSITION_STATIC );
         this.windowHeightToFit = this.getInitProperty( jetspeed.id.PORTLET_PROP_WINDOW_HEIGHT_TO_FIT );
@@ -194,54 +197,102 @@
 
         this.constrainToContainer = 0;
 
-        var portletWidth = null, portletHeight = null, portletLeft = null, portletTop = null;
+        var windowWidth = null, windowHeight = null, windowLeft = null, windowTop = null;
         if ( this.portlet )
         {
             var portletWindowDimensions = this.portlet.getInitialWindowDimensions();
-        	portletWidth = portletWindowDimensions.width;
-            portletHeight = portletWindowDimensions.height;
-            portletLeft = portletWindowDimensions.left;
-            portletTop = portletWindowDimensions.top;
+        	windowWidth = portletWindowDimensions.width;
+            windowHeight = portletWindowDimensions.height;
+            windowLeft = portletWindowDimensions.left;
+            windowTop = portletWindowDimensions.top;
             // NOTE: portletWindowDimensions.zIndex;  - should be dealt with in the creation order
         }
         else
         {
-            portletWidth = this.getInitProperty( jetspeed.id.PORTLET_PROP_WIDTH );
-            portletHeight = this.getInitProperty( jetspeed.id.PORTLET_PROP_HEIGHT );
-            portletLeft = this.getInitProperty( jetspeed.id.PORTLET_PROP_LEFT );
-            portletTop = this.getInitProperty( jetspeed.id.PORTLET_PROP_TOP );
+            windowWidth = this.getInitProperty( jetspeed.id.PORTLET_PROP_WIDTH );
+            windowHeight = this.getInitProperty( jetspeed.id.PORTLET_PROP_HEIGHT );
+            windowLeft = this.getInitProperty( jetspeed.id.PORTLET_PROP_LEFT );
+            windowTop = this.getInitProperty( jetspeed.id.PORTLET_PROP_TOP );
         }
         
-        if ( portletWidth != null && portletWidth > 0 ) portletWidth = Math.floor(portletWidth) + "px";
-        else portletWidth = jetspeed.prefs.windowWidth;
+        this.lastUntiledPositionInfo = {};
+        this.lastTiledPositionInfo = { width: "" };
+        
+        // to allow for an initial untiled placement based on tiled position,
+        //   only record lastUntiledPositionInfo when value is specified (not defaulted) or if window is already untiled
+        if ( windowWidth != null && windowWidth > 0 )
+        {
+            windowWidth = Math.floor(windowWidth);
+            this.lastUntiledPositionInfo.width = windowWidth;
+        }
+        else
+        {
+            windowWidth = jetspeed.prefs.windowWidth;
+            if ( ! this.windowPositionStatic )
+                this.lastUntiledPositionInfo.width = windowWidth;
+        }
     
-        if ( portletHeight != null && portletHeight > 0 ) portletHeight = Math.floor(portletHeight) + "px";
-        else portletHeight = jetspeed.prefs.windowHeight;
+        if ( windowHeight != null && windowHeight > 0 )
+        {
+            windowHeight = Math.floor(windowHeight);
+            this.lastUntiledPositionInfo.height = windowHeight;
+            this.lastTiledPositionInfo.height = windowHeight;
+        }
+        else
+        {
+            windowHeight = jetspeed.prefs.windowHeight;
+            this.lastTiledPositionInfo.height = windowHeight;
+            if ( ! this.windowPositionStatic )
+                this.lastUntiledPositionInfo.height = windowHeight;
+        }
             
-        if ( portletLeft != null && portletLeft >= 0 ) portletLeft = Math.floor(portletLeft) + "px";
-        else portletLeft = (((this.portletIndex -2) * 30 ) + 200) + "px";
+        if ( windowLeft != null && windowLeft >= 0 )
+        {
+            windowLeft = Math.floor(windowLeft);
+            this.lastUntiledPositionInfo.left = windowLeft;
+        }
+        else
+        {
+            windowLeft = (((this.portletIndex -2) * 30 ) + 200);
+            if ( ! this.windowPositionStatic )
+                this.lastUntiledPositionInfo.left = windowLeft;
+        }
     
-        if ( portletTop != null && portletTop >= 0 ) portletTop = Math.floor(portletTop) + "px";
-        else portletTop = (((this.portletIndex -2) * 30 ) + 170) + "px";
+        if ( windowTop != null && windowTop >= 0 )
+        {
+            windowTop = Math.floor(windowTop);
+            this.lastUntiledPositionInfo.top = windowTop;
+        }
+        else
+        {
+            windowTop = (((this.portletIndex -2) * 30 ) + 170);
+            if ( ! this.windowPositionStatic )
+                this.lastUntiledPositionInfo.top = windowTop;
+        }
+        
+        windowWidth = windowWidth + "px";
+        windowHeight = windowHeight + "px";
+        windowLeft = windowLeft + "px";
+        windowTop = windowTop + "px";
 
         if ( ! this.portletInitialized )
         {
             var source = this.getFragNodeRef( fragment );
-            var dimensionsCss = "width: " + portletWidth + ( ( portletHeight != null && portletHeight.length > 0 ) ? ( "; height: " + portletHeight ) : "");
+            var dimensionsCss = "width: " + windowWidth + ( ( windowHeight != null && windowHeight.length > 0 ) ? ( "; height: " + windowHeight ) : "");
             if ( ! this.windowPositionStatic )
-                dimensionsCss += "; left: " + portletLeft + "; top: " + portletTop + ";";
+                dimensionsCss += "; left: " + windowLeft + "; top: " + windowTop + ";";
         
             source.style.cssText = dimensionsCss;
         }
         else
         {   // update dimensions
             this.domNode.style.position = "absolute";
-            this.domNode.style.width = portletWidth;
-            this.domNode.style.height = portletHeight;
+            this.domNode.style.width = windowWidth;
+            this.domNode.style.height = windowHeight;
             if ( ! this.windowPositionStatic )
             {
-                this.domNode.style.left = portletLeft;
-                this.domNode.style.top = portletTop;
+                this.domNode.style.left = windowLeft;
+                this.domNode.style.top = windowTop;
             }
         }
     },
@@ -252,14 +303,13 @@
         this.initWindowTitle( fragment );
         this.initWindowIcon( fragment );
 
-        if ( dojo.render.html.mozilla )  // dojo.render.html.ie
-        {
-            //this.hasShadow = "true";
-            //        dojo.debug( "nWidget.domNode.cssText: " + 
-            //nWidget.domNode.style = "overflow: visible;";   // so that drop shadow is displayed
-        }
+        //if ( dojo.render.html.mozilla )  // dojo.render.html.ie
+        //{
+        //    this.hasShadow = "true";
+        //    this.domNode.style = "overflow: visible;";   // so that drop shadow is displayed
+        //}
 
-        this.setWindowDimensions( fragment );
+        this.initWindowDimensions( fragment );
     },
 
     // dojo.widget.Widget create protocol
@@ -315,20 +365,20 @@
         if ( isResizable )
         {
 			this.resizeBar.style.display = "block";
-            var rh = null;
             var rhWidgetId = this.widgetId + "_resize";
             if ( ! this.portletInitialized )
-			    rh = dojo.widget.createWidget( "jetspeed:PortletWindowResizeHandle", { targetElmId: this.widgetId, id: rhWidgetId, portletWindow: this } );
+			    this.resizeHandle = dojo.widget.createWidget( "jetspeed:PortletWindowResizeHandle", { targetElmId: this.widgetId, id: rhWidgetId, portletWindow: this } );
             else
-                rh = dojo.widget.byId( rhWidgetId );
-            if ( rh )
+                this.resizeHandle = dojo.widget.byId( rhWidgetId );
+            if ( this.resizeHandle )
             {
-                if ( this.windowPositionStatic && dojo.render.html.mozilla )  // dojo.render.html.ie
-                    rh.domNode.style.position = "static";
-                else
-                    rh.domNode.style.position = "absolute";
+                //if ( this.windowPositionStatic && dojo.render.html.mozilla )  // dojo.render.html.ie
+                    this.resizeHandle.domNode.style.position = "static";  // until 2006-11-15, was set to absolute for all but dojo.render.html.mozilla
+                                                                          // but setting to static for all seems to fix IE failure to initially display resize handle
+                //else
+                //    this.resizeHandle.domNode.style.position = "absolute";
                 if ( ! this.portletInitialized )
-			        this.resizeBar.appendChild( rh.domNode );
+			        this.resizeBar.appendChild( this.resizeHandle.domNode );
             }
 		}
     },
@@ -351,18 +401,21 @@
 		}
 
 		// <img src=""> can hang IE!  better get rid of it
-		if(this.iconSrc==""){
-			dojo.dom.removeNode(this.titleBarIcon);
-		}else{
-			this.titleBarIcon.src = this.iconSrc.toString();// dojo.uri.Uri obj req. toString()
+		if ( this.iconSrc=="" )
+        {
+			dojo.dom.removeNode( this.titleBarIcon );
+		}
+        else
+        {
+			this.titleBarIcon.src = this.iconSrc.toString();    // dojo.uri.Uri obj req. toString()
 		}
 
-		if(this.titleBarDisplay!="none")
+		if ( this.titleBarDisplay!="none" )
         {	
-			this.titleBar.style.display="";
-			dojo.html.disableSelection(this.titleBar);
+			this.titleBar.style.display = "";
+			dojo.html.disableSelection( this.titleBar );
 
-			this.titleBarIcon.style.display = (this.iconSrc=="" ? "none" : "");
+			this.titleBarIcon.style.display = ( this.iconSrc == "" ? "none" : "" );
 
             var windowTitleBarButtons = null;
 
@@ -655,10 +708,11 @@
         {
             if ( actionName == jetspeed.id.PORTLET_ACTION_NAME_DESKTOP_TILE )
             {
+                this.makeTiled();
             }
             else if ( actionName == jetspeed.id.PORTLET_ACTION_NAME_DESKTOP_UNTILE )
             {
-                this.makeTiled();
+                this.makeUntiled();
             }
             else if ( actionName == jetspeed.id.PORTLET_ACTION_NAME_DESKTOP_HEIGHT_EXPAND )
             {
@@ -741,7 +795,7 @@
                 if ( this.windowHeightToFit )
                     enabled = true;
             }
-            else if ( actionName == jetspeed.id.PORTLET_ACTION_NAME_DESKTOP_TILE )
+            else if ( actionName == jetspeed.id.PORTLET_ACTION_NAME_DESKTOP_TILE && jetspeed.prefs.windowTiling )
             {
                 if ( ! this.windowPositionStatic )
                     enabled = true;
@@ -827,30 +881,6 @@
 
     portletInitDimensions: function()
     {
-        if ( this.windowPositionStatic )
-        {            
-            this.domNode.style.position = "static";  // can't be done earlier
-            this.domNode.style.left = "auto";                
-            this.domNode.style.top = "auto";
-        }
-
-        if ( this.windowHeightToFit )
-        {
-            this.domNode.style.overflow = "visible";
-            this.domNode.style.height = "";
-        }
-        else
-            this.domNode.style.overflow = "hidden";
-
-        if ( this.windowPositionStatic )
-        {
-            this.domNode.style.width = "";
-            if ( this.titleBar )
-                this.titleBar.style.width = "";
-            if ( this.resizeBar )
-                this.resizeBar.style.width = "";
-        }
-
         if ( ! this.templateDomNodeClassName )
             this.templateDomNodeClassName = this.domNode.className;
         var domNodeClassName = this.templateDomNodeClassName;
@@ -870,29 +900,13 @@
                 containerNodeClassName = this.windowTheme + ( containerNodeClassName ? ( " " + containerNodeClassName ) : "" );
             }
             this.containerNode.className = jetspeed.id.PORTLET_STYLE_CLASS + ( containerNodeClassName ? ( " " + containerNodeClassName ) : "" );
+        }
 
-            if ( this.windowHeightToFit )
-            {
-                this.containerNode.style.overflow = "visible";
-                this.containerNode.style.height = "";
-            }
-            else
-                this.containerNode.style.overflow = "auto";
+        this._adjustPositionToDesktopState();
 
-            if ( this.windowPositionStatic )
-            {
-                //this.containerNode.style.width = "";   // commented-out with change to ie width 100% in resizeTo
-                //dojo.debug( "portletInitDimensions containerNode-width: " + dojo.html.getMarginBox( this.containerNode ).width + " domNode-width: " + this.domNode.style.width );
-            }
-        }
+        //this.resizeTo( null, null, true );
 
-        //dojo.debug( "PortletWindow.portletInitDimensions [" + this.portlet.entityId + "] setting domNode.className=" + this.domNode.className + " containerNode.className=" + this.containerNode.className );
-        var domNodeMarginBox = dojo.html.getMarginBox( this.domNode ) ;
-        this.width = domNodeMarginBox.width;
-        this.height = domNodeMarginBox.height;
-        this.resetLostHeightWidth();
-        
-        this.resizeTo( this.width, this.height );
+        //dojo.debug( "portletInitDimensions [" + this.widgetId + "] completed - domNode.style.width=" + this.domNode.style.width + " domNode.style.height=" + this.domNode.style.height );
     },
 
     //     resetWindow: function( /* Portlet */ portlet )
@@ -925,7 +939,10 @@
 
         var initWindowState = this.getInitProperty( jetspeed.id.PORTLET_PROP_WINDOW_STATE );
         if ( initWindowState == jetspeed.id.PORTLET_ACTION_NAME_MINIMIZE )
+        {
             this.minimizeWindow();
+            this.windowActionButtonSync();
+        }
     },
 
     // dojo.widget.ContentPane protocol
@@ -940,120 +957,313 @@
 
     minimizeWindow: function( evt )
     {
-        //dojo.debug( "minimize [" + this.widgetId + "] before this[w=" + this.width + " y=" + this.height + "] container[w=" + dojo.html.getMarginBox( this.containerNode ).width + " h=" + dojo.html.getMarginBox( this.containerNode ).height + "] domNode[w=" + dojo.html.getMarginBox( this.domNode ).width + " h=" + dojo.html.getMarginBox( this.domNode ).height + "]" );
-
-        var tbiWidget = dojo.widget.byId( this.widgetId + "_tbi" );
-        
-        if ( this.windowState != jetspeed.id.PORTLET_ACTION_NAME_MAXIMIZE )
-            this._setPreviousDimensions();
+        this._setLastPositionInfo();
 
         this.containerNode.style.display = "none";
         this.resizeBar.style.display = "none";
         dojo.html.setContentBox( this.domNode, { height: dojo.html.getMarginBox( this.titleBar ).height } );
-
-        //if ( tbiWidget && tbiWidget.domNode )
-        //    dojo.fx.html.implode( this.domNode, tbiWidget.domNode, 340 ) ; // began as 300 in ff
-        //else
-        //    this.hide();
     
         this.windowState = jetspeed.id.PORTLET_ACTION_NAME_MINIMIZE;
     },
-	restoreWindow: function(evt)
+    maximizeWindow: function( evt )
     {
-        //dojo.debug( "restore [" + this.widgetId + "] begin container[w=" + dojo.html.getMarginBox( this.containerNode ).width + " h=" + dojo.html.getMarginBox( this.containerNode ).height + "] domNode[w=" + dojo.html.getMarginBox( this.domNode ).width + " h=" + dojo.html.getMarginBox( this.domNode ).height + "]" );
-        if ( this.previous.columnIndex != null )
+        var tiledStateIsChanging = this.windowPositionStatic;
+        this._setLastPositionInfo( tiledStateIsChanging, true );
+        
+        var jetspeedDesktop = document.getElementById( jetspeed.id.DESKTOP );
+        if ( this.windowPositionStatic )
         {
-            var columnElmt = jetspeed.page.columns[ this.previous.columnIndex ];
-            if ( this.previous.previousSibling )
-                dojo.dom.insertAfter( this.domNode, this.previous.previousSibling );
-            else if ( this.previous.nextSibling )
-                dojo.dom.insertBefore( this.domNode, this.previous.nextSibling );
-            else
-                columnElmt.domNode.appendChild( this.domNode );
-
-            this.domNode.style.position = "static";
+            this.domNode.style.position = "absolute";
+            jetspeedDesktop.appendChild( this.domNode );
         }
+        jetspeed.widget.PortletWindow.superclass.bringToTop.call( this, evt );
+        
+        // hardcoded to fill document.body width leaving 1px on each side
+        var yPos = dojo.html.getAbsolutePosition( jetspeedDesktop, true ).y;    // passing true to fix position at top (so not affected by vertically scrolled window)
+		this.domNode.style.left = "1px";
+		this.domNode.style.top = yPos;
 
-		this.containerNode.style.display = "";
-        this.resizeBar.style.display = "";
+        this.windowPositionStatic = false;
 
-        for(var attr in this.previous){
-			this.domNode.style[attr]=this.previous[attr];
-		}
+        var jetspeedPage = document.getElementById( jetspeed.id.PAGE );
+
+        var viewport = dojo.html.getViewport();
+        var padding = dojo.html.getPadding( dojo.body() );
         
-		this.resizeTo( this.previous.width, this.previous.height, true );
-		this.previous = null;
+        this.resizeTo( viewport.width - padding.width - 2, viewport.height - padding.height - yPos );
 
-		this.windowState = "normal";
+        //this.resizeTo(
+        //    dojo.html.getContentBox( jetspeedPage ).width - 2,
+        //    dojo.html.getBorderBox( document.body ).height - yPos
+		//);
 
-        //dojo.debug( "restore [" + this.widgetId + "] end container[w=" + dojo.html.getMarginBox( this.containerNode ).width + " h=" + dojo.html.getMarginBox( this.containerNode ).height + "] domNode[w=" + dojo.html.getMarginBox( this.domNode ).width + " h=" + dojo.html.getMarginBox( this.domNode ).height + "]" );
+		this.windowState = jetspeed.id.PORTLET_ACTION_NAME_MAXIMIZE;
 	},
-    maximizeWindow: function( evt )
+	restoreWindow: function( evt )
     {
-        this._setPreviousDimensions();
-        
-        var jetspeedDesktop = document.getElementById( jetspeed.id.DESKTOP );
+        var currentlyAbsolute = false;
+        if ( this.domNode.style.position == "absolute" )
+        {
+            currentlyAbsolute = true;
+        }
+
+        var lastPositionInfo = null;
+        if ( this.windowState == jetspeed.id.PORTLET_ACTION_NAME_MAXIMIZE )
+        {
+            this.windowPositionStatic = ( this.lastWindowPositionStatic != null ? this.lastWindowPositionStatic : false );
+        }
+
+        this.containerNode.style.display = "";
+        this.resizeBar.style.display = "";
+
         if ( this.windowPositionStatic )
         {
-            var sibling = dojo.dom.getPreviousSiblingElement( this.domNode );
-            if ( sibling )
-                this.previous.previousSibling = sibling;
+            lastPositionInfo = this.lastTiledPositionInfo;
+        }
+        else
+        {
+            lastPositionInfo = this.lastUntiledPositionInfo;
+        }
+
+        var lpiWidth = null;
+        var lpiHeight = null;
+        if ( lastPositionInfo != null )
+        {
+            lpiWidth = lastPositionInfo.width;
+            lpiHeight = lastPositionInfo.height;
+            for ( var attr in lastPositionInfo )
+            {
+                if ( attr != "columnInfo" )
+			        this.domNode.style[ attr ] = lastPositionInfo[ attr ];
+		    }
+        }
+
+        this._adjustPositionToDesktopState();
+        
+        if ( this.windowPositionStatic && currentlyAbsolute )
+        {   // tiled window in maximized needs to be placed back in previous column/row
+            if ( lastPositionInfo != null && lastPositionInfo.columnInfo != null && lastPositionInfo.columnInfo.columnIndex != null )
+            {
+                var columnElmt = jetspeed.page.columns[ lastPositionInfo.columnInfo.columnIndex ];
+                if ( lastPositionInfo.columnInfo.previousSibling )
+                    dojo.dom.insertAfter( this.domNode, lastPositionInfo.columnInfo.previousSibling );
+                else if ( lastPositionInfo.columnInfo.nextSibling )
+                    dojo.dom.insertBefore( this.domNode, lastPositionInfo.columnInfo.nextSibling );
+                else
+                    columnElmt.domNode.appendChild( this.domNode );
+            }
             else
             {
-                sibling = dojo.dom.getNextSiblingElement( this.domNode );
-                if ( sibling )
-                    this.previous.nextSibling = sibling;
+                if ( jetspeed.page.columns != null && jetspeed.page.columns.length > 0 )
+                    dojo.dom.prependChild( this.domNode, jetspeed.page.columns[ 0 ].domNode );
             }
-            
-            this.previous.columnIndex = this.getPageColumnIndex();
-            
-            this.domNode.style.position = "absolute";
-            jetspeedDesktop.appendChild( this.domNode );
+            this.domNode.style.position = "static";
         }
-        jetspeed.widget.PortletWindow.superclass.bringToTop.call( this, evt );
         
-        var yPos = dojo.html.getAbsolutePosition( jetspeedDesktop ).y;
-		this.domNode.style.left =
-			dojo.html.getPixelValue( jetspeedDesktop, "padding-left", true) + "px";
-		this.domNode.style.top = yPos;
-
-        this.resizeTo(
-            dojo.html.getContentBox( jetspeedDesktop ).width,
-            dojo.html.getBorderBox( document.body ).height - yPos
-		);
+		this.resizeTo( lpiWidth, lpiHeight, true );
 
-		this.windowState = jetspeed.id.PORTLET_ACTION_NAME_MAXIMIZE;
+		this.windowState = jetspeed.id.PORTLET_ACTION_NAME_RESTORE;  // "normal"
 	},
+
+    _setLastPositionInfo: function( tiledStateIsChanging, changingToMaximized )
+    {
+        if ( changingToMaximized )
+        {
+            this.lastWindowPositionStatic = this.windowPositionStatic;
+        }
+        if ( this.windowPositionStatic )
+        {
+            if ( this.lastTiledPositionInfo == null )
+            {
+                this.lastTiledPositionInfo = {};
+            }
+            if ( tiledStateIsChanging )
+            {   // record col/row location
+                var columnInfo = {};
+                var sibling = dojo.dom.getPreviousSiblingElement( this.domNode );
+                if ( sibling )
+                    columnInfo.previousSibling = sibling;
+                else
+                {
+                    sibling = dojo.dom.getNextSiblingElement( this.domNode );
+                    if ( sibling )
+                        columnInfo.nextSibling = sibling;
+                }
+                columnInfo.columnIndex = this.getPageColumnIndex();
+                this.lastTiledPositionInfo.columnInfo = columnInfo;
+            }
+            if ( this.windowState != jetspeed.id.PORTLET_ACTION_NAME_MINIMIZE && this.windowState != jetspeed.id.PORTLET_ACTION_NAME_MAXIMIZE )
+            {
+                this.lastTiledPositionInfo.height = this.domNode.style.height;
+            }
+            this.lastTiledPositionInfo.width = "";
+        }
+        else
+        {
+            if ( this.windowState != jetspeed.id.PORTLET_ACTION_NAME_MINIMIZE && this.windowState != jetspeed.id.PORTLET_ACTION_NAME_MAXIMIZE )
+            {
+                var domNodeMarginBox = dojo.html.getMarginBox( this.domNode ) ;
+                this.lastUntiledPositionInfo =
+                {
+			        width: domNodeMarginBox.width,
+			        height: domNodeMarginBox.height,
+			        left: this.domNode.style.left,
+			        top: this.domNode.style.top,
+			        bottom: this.domNode.style.bottom,
+			        right: this.domNode.style.right
+                };
+            }
+        }
+    },
+    _updateLastPositionInfoPositionOnly: function()
+    {
+        if ( ! this.windowPositionStatic && this.lastUntiledPositionInfo != null )
+        {
+            this.lastUntiledPositionInfo.left = this.domNode.style.left;
+            this.lastUntiledPositionInfo.top = this.domNode.style.top;
+        }
+    },
+
     bringToTop: function( evt )
     {
         var beforeZIndex = this.domNode.style.zIndex;
         jetspeed.widget.PortletWindow.superclass.bringToTop.call( this, evt );
-        if ( ! this.windowPositionStatic && this.isPortletWindowInitialized() && this.portlet )
+        if ( this.portlet && ! this.windowPositionStatic && this.windowState != jetspeed.id.PORTLET_ACTION_NAME_MAXIMIZE && this.isPortletWindowInitialized() )
         {
             this.portlet.submitChangedWindowState();
             //dojo.debug( "bringToTop [" + this.portlet.entityId + "] zIndex   before=" + beforeZIndex + " after=" + this.domNode.style.zIndex );
         }
     },
+    makeUntiled: function()
+    {
+        this._setLastPositionInfo( true, false );
+
+        var winWidth = null;
+        var winHeight = null;
+        var winLeft = null;
+        var winTop = null;
+
+        var lastUntiledPosInfo = this.lastUntiledPositionInfo;
+        if ( lastUntiledPosInfo != null &&
+             lastUntiledPosInfo.width != null && lastUntiledPosInfo.height != null &&
+             lastUntiledPosInfo.left != null && lastUntiledPosInfo.top != null )
+        {   // use last untiled position if all properties are defined in this.lastUntiledPositionInfo
+            winWidth = lastUntiledPosInfo.width;
+            winHeight = lastUntiledPosInfo.height;
+            winLeft = lastUntiledPosInfo.left;
+            winTop = lastUntiledPosInfo.top;
+        }
+        else
+        {   // determine initial untiled position based on current tiled position
+            var positioningNode = this.domNode;
+            var winAbsPos = dojo.html.getAbsolutePosition( positioningNode, true );
+            var winMarginTop = dojo.html.getPixelValue( positioningNode, "margin-top", true );
+            var winMarginLeft = dojo.html.getPixelValue( positioningNode, "margin-left", true );
+            var domNodeMarginBox = dojo.html.getMarginBox( this.domNode ) ;
+            winWidth = domNodeMarginBox.width;
+            winHeight = domNodeMarginBox.height;
+            winLeft = winAbsPos.x - winMarginTop;
+            winTop = winAbsPos.y - winMarginLeft;
+        }
+        this.domNode.style.position = "absolute";
+        
+        this.domNode.style.left = winLeft;
+        this.domNode.style.top = winTop;
+
+        this.windowPositionStatic = false;
+
+        this._adjustPositionToDesktopState();
+        
+        this.resizeTo( winWidth, winHeight, true );
+        
+        var addToElmt = document.getElementById( jetspeed.id.DESKTOP );
+        addToElmt.appendChild( this.domNode );
+
+        if ( this.portlet )
+            this.portlet.submitChangedWindowState();
+    },
+    makeTiled: function()
+    {
+        this.windowPositionStatic = true;
+        
+        this.restoreWindow();
+
+        if ( this.portlet )
+            this.portlet.submitChangedWindowState();
+    },
+
+    makeHeightToFit: function( suppressSubmitChange, suppressLogging )
+    {   // suppressLogging is to support contentChanged
+        var domNodePrevMarginBox = dojo.html.getMarginBox( this.domNode ) ;
+
+        this.windowHeightToFit = true;
+
+        this._adjustPositionToDesktopState();
+
+        if ( suppressLogging == null || suppressLogging != true )
+        {   // flags are to avoid init problems with dojo-debug window when height-to-fit is set (causing stack overflow when dojo.debug() is called)
+            //dojo.debug( "makeHeightToFit [" + this.widgetId + "] prev w=" + domNodePrevMarginBox.width + " h=" + domNodePrevMarginBox.height + "  new w=" + domNodeMarginBox.width + " h=" + domNodeMarginBox.height );
+        }
+    
+        this.resizeTo( null, null, true );
+
+        if ( ! suppressSubmitChange && this.portlet )
+            this.portlet.submitChangedWindowState();
+    },
+    makeHeightVariable: function( suppressSubmitChange )
+    {
+        var domNodePrevMarginBox = dojo.html.getMarginBox( this.domNode ) ;
+
+        this.windowHeightToFit = false;
+
+        this._adjustPositionToDesktopState();
+
+        //dojo.debug( "makeHeightVariable [" + this.widgetId + "] prev w=" + domNodePrevMarginBox.width + " h=" + domNodePrevMarginBox.height + "  new w=" + domNodeMarginBox.width + " h=" + domNodeMarginBox.height );
+        //dojo.debug( "makeHeightVariable [" + this.widgetId + "] containerNode PREV style.width=" + this.containerNode.style.width + " style.height=" + this.containerNode.style.height );
+        
+        this.resizeTo( null, null, true );
+    
+        if ( dojo.render.html.ie )
+            dojo.lang.setTimeout( this, this._IEPostResize, 10 );
+
+        //dojo.debug( "makeHeightVariable [" + this.widgetId + "] containerNode NEW style.width=" + this.containerNode.style.width + " style.height=" + this.containerNode.style.height );
+
+        if ( ! suppressSubmitChange && this.portlet )
+            this.portlet.submitChangedWindowState();
+    },
 
     resizeTo: function( w, h, force )
     {
         //dojo.debug( "resizeTo [" + this.widgetId + "] begin w=" + w + " h=" + h + " container[w=" + dojo.html.getMarginBox( this.containerNode ).width + " h=" + dojo.html.getMarginBox( this.containerNode ).height + "] domNode[w=" + dojo.html.getMarginBox( this.domNode ).width + " h=" + dojo.html.getMarginBox( this.domNode ).height + "]" );
-
-		if(w==this.width && h == this.height && ! force){
+        
+        if ( w == null || w == 0 || isNaN( w ) || h == null || h == 0 || isNaN( h ) )
+        {
+            var domNodeMarginBox = dojo.html.getMarginBox( this.domNode ) ;
+            if ( w == null || w == 0 || isNaN( w ) )
+                w = domNodeMarginBox.width;
+            if ( h == null || h == 0 || isNaN( h ) )
+                h = domNodeMarginBox.height;
+        }
+        
+		if ( w == this.lastWidthResizeTo && h == this.lastHeightResizeTo && ! force )
+        {
+            //dojo.debug( "resize unneeded [" + this.widgetId + "]" );
 			return;
 		}
-		this.width=w;
-		this.height=h;
+		this.lastWidthResizeTo = w;
+		this.lastHeightResizeTo = h;
+
+        this.resetLostHeightWidth();
 
 		// IE won't let you decrease the width of the domnode unless you decrease the
 		// width of the inner nodes first (???)
 
 		dojo.lang.forEach(
-			[this.titleBar, this.resizeBar, this.containerNode],
-			function(node){ dojo.html.setMarginBox( node, { width: w - this.lostWidth } ); }, this
+			[ this.titleBar, this.resizeBar, this.containerNode ],
+			function( node ){ dojo.html.setMarginBox( node, { width: w - this.lostWidth } ); }, this
 		);
 
-        //dojo.debug( "resizeTo [" + this.widgetId + "] before-adjust w=" + w + " h=" + h + " container[w=" + dojo.html.getMarginBox( this.containerNode ).width + " h=" + dojo.html.getMarginBox( this.containerNode ).height + "] domNode[w=" + dojo.html.getMarginBox( this.domNode ).width + " h=" + dojo.html.getMarginBox( this.domNode ).height + "]" );
+        //dojo.debug( "resizeTo [" + this.widgetId + "] before-adjust w=" + w + " h=" + h + " container[w=" + dojo.html.getMarginBox( this.containerNode ).width + " h=" + dojo.html.getMarginBox( this.containerNode ).height + " style-width=" + this.containerNode.style.width + " style-height=" + this.containerNode.style.height + "] domNode[w=" + dojo.html.getMarginBox( this.domNode ).width + " h=" + dojo.html.getMarginBox( this.domNode ).height + "]" );
 
         if ( this.windowPositionStatic )
         {
@@ -1065,10 +1275,17 @@
             if ( this.containerNode )
             {
                 if ( dojo.render.html.ie )
+                {
+                    //dojo.lang.setTimeout( this, this._IEPostResize, 10 );
+                    // IE will adjust consistently if step is deferred
+                    //this.containerNode.style.width = "99%";
                     this.containerNode.style.width = "100%";
+                    //this.containerNode.style.marginLeft = "2px";
+                }
                 else
+                {
                     this.containerNode.style.width = "";  // I only know that ff 1.5 likes it blanked and ie6 likes it 100%
-                //jetspeed.ui.dumpColumnWidths();
+                }
             }
         }
         else
@@ -1089,32 +1306,85 @@
         this.bgIframe.onResized();
         if ( this.shadow )
         {
-            this.shadow.size( width, height );
+            this.shadow.size( w, h );
         }
 		this.onResized();
 
-        //dojo.debug( "resizeTo [" + this.widgetId + "] end w=" + w + " h=" + h + " container[w=" + dojo.html.getMarginBox( this.containerNode ).width + " h=" + dojo.html.getMarginBox( this.containerNode ).height + " desired-h=" + (h-this.lostHeight) + "] domNode[w=" + dojo.html.getMarginBox( this.domNode ).width + " h=" + dojo.html.getMarginBox( this.domNode ).height + "]" );
+        //dojo.debug( "resizeTo [" + this.widgetId + "] end w=" + w + " h=" + h + " container[w=" + dojo.html.getMarginBox( this.containerNode ).width + " h=" + dojo.html.getMarginBox( this.containerNode ).height + " desired-h=" + (h-this.lostHeight) + " style-width=" + this.containerNode.style.width + " style-height=" + this.containerNode.style.height + "] domNode[w=" + dojo.html.getMarginBox( this.domNode ).width + " h=" + dojo.html.getMarginBox( this.domNode ).height + "]" );
 	},
 
-    _setPreviousDimensions: function()
-    {
-        this.previous =
-        {
-			width: this.width,
-			height: this.height,
-			left: this.domNode.style.left,
-			top: this.domNode.style.top,
-			bottom: this.domNode.style.bottom,
-			right: this.domNode.style.right
-        };
+    _IEPostResize: function()
+    {   // IE will adjust consistently if step is deferred - setting to 99 then 100 is to force it to re-render,
+        // which fixes the IE problem where part of containerNode scroll bars outside window bounds
+        //
+        // NOTE: not in use currently from resizeTo - slows down resize too much
+        this.containerNode.style.width = "99%";
+        this.containerNode.style.width = "100%";
     },
-    _updatePositionPreviousDimensions: function()
-    {
-        if ( this.previous != null )
+
+    _adjustPositionToDesktopState: function()
+    {   // sets window dimension appropriatly based on 
+        // this.windowPositionStatic and this.windowHeightToFit
+        if ( this.windowPositionStatic )
+        {            
+            this.domNode.style.position = "static";  // can't be done earlier (this comment is from portletInitDimensions - not sure of full meaning here)
+            this.domNode.style.left = "auto";
+            this.domNode.style.top = "auto";
+        }
+        else
         {
-            this.previous.left = this.domNode.style.left;
-            this.previous.top = this.domNode.style.top;
+            this.domNode.style.position = "absolute";
+            // BOZO: untiled-window - what about left/top here?
         }
+
+        if ( this.windowHeightToFit )
+        {
+            this.domNode.style.overflow = "visible";
+            this.domNode.style.height = "";
+        }
+        else
+            this.domNode.style.overflow = "hidden";
+
+        if ( this.windowPositionStatic )
+        {
+            this.domNode.style.width = "";
+            if ( this.titleBar )
+                this.titleBar.style.width = "";
+            if ( this.resizeBar )
+                this.resizeBar.style.width = "";
+        }
+        else
+        {
+            // BOZO: untiled-window - what about width here?
+            // BOZO: may want record values for these as early as possible
+            //       keeping them up-to-date so that this method can reliable
+            //       set these values
+        }
+
+        // BOZO: what about resize handle ?
+
+
+        if ( this.containerNode )
+        {
+            if ( this.windowHeightToFit )
+            {
+                this.containerNode.style.overflow = "visible";
+                this.containerNode.style.height = "";
+            }
+            else
+            {
+                this.containerNode.style.overflow = "auto";
+            }
+            if ( dojo.render.html.ie )
+            {
+                this.containerNode.style.width = "100%";
+            }
+            else
+            {
+                this.containerNode.style.width = "";  // I only know that ff 1.5 likes it blanked and ie6 likes it 100%
+            }
+        }
+        //dojo.debug( "_adjustPositionToDesktopState [" + this.widgetId + "] completed - domNode.style.width=" + this.domNode.style.width + " domNode.style.height=" + this.domNode.style.height );
     },
 
     resetLostHeightWidth: function()
@@ -1129,6 +1399,19 @@
 			+ dojo.html.getMarginBox(this.resizeBar).height;
 		this.lostWidth = domNodeMarginBox.width - domNodeContentBox.width;
     },
+
+    contentChanged: function( evt )
+    {   // currently used for dojo-debug window only
+        if ( this.processingContentChanged == false )
+        {
+            this.processingContentChanged = true;
+            if ( this.windowHeightToFit )
+            {
+                this.makeHeightToFit( true, true );
+            }
+            this.processingContentChanged = false;
+        }
+    },
  
     closeWindow: function()
     {
@@ -1149,94 +1432,6 @@
         
         dojo.debug( "window-position [" + this.widgetId + "] x=" + winAbsPos.x + " y=" + winAbsPos.y + " width=" + winWidth + " height=" + winHeight + " cNode-width=" + winContainerNodeWidth + " cNode-height=" + winContainerNodeHeight + " document-width=" + dojo.html.getMarginBox( document[ "body" ] ).width + " document-height=" + dojo.html.getMarginBox( document[ "body" ] ).height ) ;
     },
-
-    makeTiled: function( positioningNode )
-    {
-        if ( ! positioningNode )
-            positioningNode = this.domNode;
-        var winAbsPos = dojo.html.getAbsolutePosition( positioningNode, true );
-        var winMarginTop = dojo.html.getPixelValue( positioningNode, "margin-top", true );
-        var winMarginLeft = dojo.html.getPixelValue( positioningNode, "margin-left", true );
-        var domNodeMarginBox = dojo.html.getMarginBox( this.domNode ) ;
-        var winWidth = domNodeMarginBox.width ;
-        var winHeight = domNodeMarginBox.height ;
-
-        this.domNode.style.position = "absolute";
-        
-        this.domNode.style.left = winAbsPos.x - winMarginTop;
-        this.domNode.style.top = winAbsPos.y - winMarginLeft;
-
-        this.windowPositionStatic = false;
-        
-        this.resizeTo( winWidth, winHeight, true );
-        
-        var addToElmt = document.getElementById( jetspeed.id.DESKTOP );
-        addToElmt.appendChild( this.domNode );
-
-        if ( this.portlet )
-            this.portlet.submitChangedWindowState();
-    },
-
-    contentChanged: function( evt )
-    {   // currently used for dojo-debug window only
-        if ( this.processingContentChanged == false )
-        {
-            this.processingContentChanged = true;
-            if ( this.windowHeightToFit )
-            {
-                this.makeHeightToFit( true, true );
-            }
-            this.processingContentChanged = false;
-        }
-    },
-
-    makeHeightToFit: function( suppressSubmitChange, suppressLogging )
-    {   // suppressLogging is to support contentChanged
-        var domNodePrevMarginBox = dojo.html.getMarginBox( this.domNode ) ;
-        this.windowHeightToFit = true;
-        this.domNode.style.overflow = "visible";
-        this.domNode.style.height = "";
-        if ( this.containerNode )
-        {
-            this.containerNode.style.overflow = "visible";
-            this.containerNode.style.height = "";
-        }
-        var domNodeMarginBox = dojo.html.getMarginBox( this.domNode ) ;
-        this.width = domNodeMarginBox.width;
-        this.height = domNodeMarginBox.height;
-        this.resetLostHeightWidth();
-
-        if ( suppressLogging == null || suppressLogging != true )
-        {
-            dojo.debug( "makeHeightToFit [" + this.widgetId + "] prev w=" + domNodePrevMarginBox.width + " h=" + domNodePrevMarginBox.height + "  new w=" + domNodeMarginBox.width + " h=" + domNodeMarginBox.height );
-        }
-    
-        this.resizeTo( this.width, this.height, true );
-
-        if ( ! suppressSubmitChange && this.portlet )
-            this.portlet.submitChangedWindowState();
-    },
-    makeHeightVariable: function( suppressSubmitChange )
-    {
-        var domNodePrevMarginBox = dojo.html.getMarginBox( this.domNode ) ;
-        this.windowHeightToFit = false;
-        this.domNode.style.overflow = "hidden";
-        if ( this.containerNode )
-        {
-            this.containerNode.style.overflow = "auto";
-        }
-        var domNodeMarginBox = dojo.html.getMarginBox( this.domNode ) ;
-        this.width = domNodeMarginBox.width;
-        this.height = domNodeMarginBox.height;
-        this.resetLostHeightWidth();
-
-        dojo.debug( "makeHeightVariable [" + this.widgetId + "] prev w=" + domNodePrevMarginBox.width + " h=" + domNodePrevMarginBox.height + "  new w=" + domNodeMarginBox.width + " h=" + domNodeMarginBox.height );
-        
-        this.resizeTo( this.width, this.height, true );
-
-        if ( ! suppressSubmitChange && this.portlet )
-            this.portlet.submitChangedWindowState();
-    },
     
     getPageColumnIndex: function()
     {
@@ -1279,12 +1474,12 @@
         //dojo.debug( "PortletWindow.endSizing [" + this.portlet.entityId + "]" );
         dojo.event.disconnect( document.body, "onmouseup", this, "endSizing" );
         this.windowIsSizing = false;
-        if ( this.portlet )
+        if ( this.portlet && this.windowState != jetspeed.id.PORTLET_ACTION_NAME_MAXIMIZE )
             this.portlet.submitChangedWindowState();
     },
     endDragging: function()
     {
-        if ( this.portlet )
+        if ( this.portlet && this.windowState != jetspeed.id.PORTLET_ACTION_NAME_MAXIMIZE )
             this.portlet.submitChangedWindowState();
     },
 
@@ -1717,122 +1912,10 @@
 
         if ( this.portletWindow.windowState == jetspeed.id.PORTLET_ACTION_NAME_MINIMIZE )
         {
-            this.portletWindow._updatePositionPreviousDimensions();
+            this.portletWindow._updateLastPositionInfoPositionOnly();
         }
 
         this.portletWindow.endDragging();
         //dojo.debug( "jetspeed.widget.PortletWindowDragMoveSource.onDragEnd" );
 	}
 });
-
-/* start - new layout management (not yet used) */
-jetspeed.ui.spacerwindows = {};
-jetspeed.ui.getSpacerWindow = function( associatedWidgetId, instanceNumber )
-{
-    var spacerWin = jetspeed.ui.spacerwindows[ jetspeed.ui.getSpacerDomNodeId( associatedWidgetId, instanceNumber ) ];
-    return spacerWin;
-};
-jetspeed.ui.getSpacerWindowFromNode = function( spacerWindowDomNode )
-{
-    if ( ! spacerWindowDomNode ) return null;
-    var domNodeId = spacerWindowDomNode.id;
-    if ( ! domNodeId ) return null;
-    return jetspeed.ui.spacerwindows[ domNodeId ];
-}
-jetspeed.ui.getSpacerWindows = function( associatedWidgetId, minNeeded )
-{
-    if ( ! minNeeded )
-        minNeeded = null;
-    var spacerWindows = [];
-    var instanceNum = 1;
-    var spacerWin = null;
-    while ( instanceNum == 1 || spacerWin != null )
-    {
-        spacerWin = jetspeed.ui.spacerwindows[ jetspeed.ui.getSpacerDomNodeId( associatedWidgetId, instanceNum ) ];
-        if ( spacerWin != null )
-        {
-            spacerWindows.push( spacerWin );
-        }
-        instanceNum++;
-    }
-    if ( minNeeded && minNeeded > 0 && spacerWindows.length < minNeeded )
-    {
-        instanceNum = spacerWindows.length + 1;
-        while ( instanceNum <= minNeeded )
-        {
-            spacerWin = new jetspeed.ui.SpacerWindow( associatedWidgetId, instanceNum );
-            jetspeed.ui.spacerwindows[ spacerWin.domNodeId ] = spacerWin;
-            spacerWindows.push( spacerWin );
-        }
-    }
-    return spacerWindows;
-};
-jetspeed.ui.getSpacerDomNodeIdPrefix = function( associatedWidgetId )
-{
-    return associatedWidgetId + "_spacer_";
-};
-jetspeed.ui.getSpacerDomNodeId = function( associatedWidgetId, instanceNumber )
-{
-    return associatedWidgetId + "_spacer_" + instanceNumber;
-};
-jetspeed.ui.SpacerWindow = function( associatedWidgetId, instanceNumber )
-{   // use getSpacerWindows for create - do not call ctor directly
-    this.windowWidgetId = associatedWidgetId;
-    this.instanceNumber = instanceNumber;
-    this.domNodeIdPrefix = jetspeed.ui.getSpacerDomNodeIdPrefix( associatedWidgetId );
-    this.domNodeId = jetspeed.ui.getSpacerDomNodeId( associatedWidgetId, instanceNumber );
-};
-dojo.lang.extend( jetspeed.ui.SpacerWindow, {
-    sizeDomNode: function( height )
-    {
-        var spacerDomNode = this.getDomNode();
-        if ( spacerDomNode == null )
-        {
-            spacerDomNode = document.createElement( "div" );
-            dojo.html.setClass( spacerDomNode, jetspeed.id.PORTLET_WINDOW_GHOST_STYLE_CLASS ) ;
-            spacerDomNode.id = this.domNodeId;
-            this.domNode = spacerDomNode;
-        }
-        spacerDomNode.style.height = height + "px";
-    },
-    getGroupNodes: function()
-    {
-        return this._getSiblings( true );
-    },
-    getGroupSiblings: function()
-    {
-        return this._getSiblings( false );
-    },
-    _getGroupSiblings: function( /* boolean */ includeSelf )
-    {
-        if ( ! jetspeed.page.columns ) return null;
-        var siblings = [];
-        for ( var i = 0 ; i < jetspeed.page.columns.length ; i++ )
-        {
-            var columnElmt = jetspeed.page.columns[i];
-            var spacerChildren = jetspeed.ui.getPortletWindowChildren( columnElmt.domNode, null, true, true );
-            if ( spacerChildren == null ) continue;
-            for ( var j = 0 ; j < spacerChildren.length ; j++ )
-            {
-                var tId = spacerChildren[j].id;
-                if ( tId != null && tId.indexOf( this.domNodeIdPrefix ) == 0 )
-                {
-                    if ( includeSelf || this.domNodeId != tId )
-                        siblings.push( spacerChildren[j] );
-                }
-            }
-        }
-        return spacerChildren;
-    },
-    getPortletWindow: function()
-    {
-        
-    },
-    getDomNode: function()
-    {
-        if ( this.domNode != null ) return this.domNode ;
-        this.domNode = document.getElementById( this.domNodeId );
-        return this.domNode;
-    }
-});
-/* end - new layout management (not yet used) */



---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org