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/10/06 06:11:16 UTC

svn commit: r453489 [2/2] - in /portals/jetspeed-2/trunk/src/webapp/javascript/desktop: core/core.js widget/PortletDefContainer.js widget/PortletWindow.js

Modified: portals/jetspeed-2/trunk/src/webapp/javascript/desktop/widget/PortletWindow.js
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/src/webapp/javascript/desktop/widget/PortletWindow.js?view=diff&rev=453489&r1=453488&r2=453489
==============================================================================
--- portals/jetspeed-2/trunk/src/webapp/javascript/desktop/widget/PortletWindow.js (original)
+++ portals/jetspeed-2/trunk/src/webapp/javascript/desktop/widget/PortletWindow.js Thu Oct  5 21:11:16 2006
@@ -41,7 +41,6 @@
     nextIndex: 1,
 
     windowPositionStatic: false,
-    windowColumnSpan: null,
     windowIsColumnBound: false,
     titleMouseIn: 0,
     titleLit: false,
@@ -181,7 +180,7 @@
     {
         this.windowPositionStatic = this.getInitProperty( jetspeed.id.PORTLET_PROP_WINDOW_POSITION_STATIC );
         this.windowColumnSpan = this.getInitProperty( jetspeed.id.PORTLET_PROP_COLUMN_SPAN );
-        if ( this.windowColumnSpan != null || this.windowPositionStatic )
+        if ( this.windowPositionStatic )
             this.windowIsColumnBound = true;
 
         this.constrainToContainer = 0;
@@ -189,12 +188,12 @@
         var portletWidth = null, portletHeight = null, portletLeft = null, portletTop = null;
         if ( this.portlet )
         {
-            var portletWindowState = this.portlet.getLastSavedWindowState();
-        	portletWidth = portletWindowState.width;
-            portletHeight = portletWindowState.height;
-            portletLeft = portletWindowState.left;
-            portletTop = portletWindowState.top;
-            // NOTE: portletWindowState.zIndex;  - should be dealt with in the creation order
+            var portletWindowDimensions = this.portlet.getInitialWindowDimensions();
+        	portletWidth = portletWindowDimensions.width;
+            portletHeight = portletWindowDimensions.height;
+            portletLeft = portletWindowDimensions.left;
+            portletTop = portletWindowDimensions.top;
+            // NOTE: portletWindowDimensions.zIndex;  - should be dealt with in the creation order
         }
         else
         {
@@ -224,7 +223,6 @@
                 dimensionsCss += "; left: " + portletLeft + "; top: " + portletTop + ";";
         
             source.style.cssText = dimensionsCss;
-            //dojo.debug( "PortletWindow.setWindowDimensions: " + dimensionsCss );
         }
         else
         {   // update dimensions
@@ -541,13 +539,13 @@
         //dojo.debug( "restore [" + this.widgetId + "] begin container[w=" + dojo.style.getOuterWidth( this.containerNode ) + " h=" + dojo.style.getOuterHeight( this.containerNode ) + "] domNode[w=" + dojo.style.getOuterWidth( this.domNode ) + " h=" + dojo.style.getOuterHeight( this.domNode ) + "]" );
         if ( this.previous.columnIndex != null )
         {
-            var columnElmt = jetspeed.columns[ this.previous.columnIndex ];
+            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.appendChild( this.domNode );
+                columnElmt.domNode.appendChild( this.domNode );
 
             this.domNode.style.position = "static";
         }
@@ -588,7 +586,7 @@
                     this.previous.nextSibling = sibling;
             }
             
-            this.previous.columnIndex = this.getWindowColumnIndex();
+            this.previous.columnIndex = this.getPageColumnIndex();
             
             this.domNode.style.position = "absolute";
             jetspeedDesktop.appendChild( this.domNode );
@@ -711,149 +709,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.style.getOuterWidth( document[ "body" ] ) + " document-height=" + dojo.style.getOuterHeight( document[ "body" ] ) ) ;
     },
 
-    /* makeSpaning - new layout management (not yet used) */
-    makeSpaning: function( span )
-    {
-        var currentColumn = this.getWindowColumnIndex();
-        if ( currentColumn != null && span > 1 )
-        {
-            if ( ( currentColumn + span - 1 ) >= jetspeed.columns )
-                return;
-            // anchor to current abs x,y and then across columns
-            
-        }
-    },
-
-    /* _makeSpaningGhosts - new layout management (not yet used) */
-    _makeSpaningGhosts: function( startColumn, span )
-    {
-        var winAbsPos = dojo.style.getAbsolutePosition( this.domNode, true );
-        var winMarginTop = dojo.style.getPixelValue( this.domNode, "margin-top", true );
-        var winMarginLeft = dojo.style.getPixelValue( this.domNode, "margin-left", true );
-
-        var winHeight = dojo.style.getOuterHeight( this.domNode );
-        var x = winAbsPos.x;  //  - winMarginTop;
-		var y = winAbsPos.y;  //  - winMarginLeft;
-    
-        var inCol = startColumn;
-        var spacerInstance = 1;
-        var firstSpacerChildIndex = -1;
-        var firstSpacerYPos = null;
-        var spacerWindows = jetspeed.ui.getSpacerWindows( this.widgetId, span );
-        var columnTopWindowYPos = null;
-        
-        var spacerWindow, portletWindowsResult, portletWindowsInCol, colChildNodeIndex, colAdjusted;
-        var tNode, tNodeAbsPos, insertbefore, append, spacerHeight, deferHeightAfter;
-        while ( inCol <= startColumn + ( span - 1 ) )
-        {
-            spacerWin = spacerWindows[ inCol - startColumn ];
-            portletWindowsResult = jetspeed.ui.getPortletWindowChildren( inCol, null, true );
-            portletWindowsInCol = portletWindowsResult.portletWindowNodes;
-            colChildNodeIndex = 0;
-            colAdjustedNode = null;
-            while ( colChildNodeIndex < portletWindowsInCol.length || ( portletWindowsInCol.length == 0 && colChildNodeIndex == 0 ) )
-            {
-                if ( colAdjustedNode != null )
-                {
-                    tNode = portletWindowsInCol[ colChildNodeIndex ];
-                    if ( tNode != colAdjustedNode )
-                    {
-                        if ( dojo.html.hasClass( tNode, jetspeed.id.PORTLET_WINDOW_GHOST_STYLE_CLASS ) )
-                        {
-                            var tSpWin = jetspeed.ui.getSpacerWindowFromNode( tNode );
-                            if ( tSpWin == null )
-                            {
-                                // BOZO: what is this supposed to be?
-                                // error or ignore?
-                            }
-                            else if ( tSpWin.domNodeIdPrefix == spacerWin.domNodeIdPrefix )
-                            {
-                                dojo.dom.removeNode( tNode );   // node is associated with 'this' PortletWindow, it should not be in already adj'd col
-                            }
-                            else if ( tSpWin.instanceNumber == 1 )
-                            {
-                                // the spanning PortletWindow position likely needs to be adjusted
-                                // if the spacerWin is the left-most (first) for the associated PortletWindow
-                                // call this method and take over for next
-                                
-                                break;   // done with column
-                            }
-                            else
-                            {
-                                
-                            }
-                        }
-                    }
-                    continue;
-                }
-                if ( portletWindowsInCol.length == 0 )
-                {
-                    append = true ;
-                    insertbefore = false;
-                    tNode = null;
-                    tNodeAbsPos = null;
-                }
-                else
-                {
-                    tNode = portletWindowsInCol[ colChildNodeIndex ];
-                    tNodeAbsPos = dojo.style.getAbsolutePosition( this.domNode, true );
-                    if ( columnTopWindowYPos == null && colChildNodeIndex == 0 )
-                        columnTopWindowYPos = tNodeAbsPos.y;
-                    insertbefore = ( y <= tNodeAbsPos.y );
-                    append = ( ! insertbefore && ( (colChildNodeIndex+1) >= portletWindowsInCol.length ) );
-                }
-                if ( insertbefore || append )
-                {
-                    deferHeightAfter = false;
-                    spacerHeight = winHeight;
-                    if ( spacerInstance > 1 )
-                    {   // height must extend up to the closest child that does not extend to y
-                        if ( firstSpacerYPos != null && tNodeAbsPos != null && tNodeAbsPos.y == firstSpacerYPos )
-                        {
-                            // do nothing - keep winHeight as is
-                        }
-                        else if ( colChildNodeIndex == 0 )
-                        {   // this does not mean that we are flush with top - check
-                            if ( firstSpacerChildIndex > 0 )
-                            {
-                                if ( columnTopWindowYPos != null )
-                                {
-                                    winHeight = winHeight + ( firstSpacerYPos - columnTopWindowYPos );
-                                }
-                                else
-                                {
-                                    deferHeightAfter = true;
-                                }
-                            }
-                        }
-                        else
-                        {
-                            winHeight = winHeight + ( firstSpacerYPos - tNodeAbsPos.y );
-                        }
-                    }
-                    else
-                    {
-                        firstSpacerChildIndex = colChildNodeIndex;
-                        firstSpacerYPos = ( (tNodeAbsPos == null) ? null : tNodeAbsPos.y );
-                    } 
-                    spacerWindow.sizeDomNode( spacerHeight );
-                    if ( insertbefore )
-                        dojo.dom.insertBefore( spacerWindow.domNode, tNode, true );
-                    else
-                        jetspeed.columns[ inCol ].appendChild( spacerWindow.domNode );
-                    colAdjustedNode = spacerWindow.domNode;
-                    if ( deferHeightAfter )
-                    {
-                        tNodeAbsPos = dojo.style.getAbsolutePosition( spacerWindow.domNode, true );
-                        spacerHeight = winHeight + ( firstSpacerYPos - tNodeAbsPos.y );
-                        spacerWindow.sizeDomNode( spacerHeight );
-                    }
-                }
-                colChildNodeIndex++;
-            }
-        }
-    },
-
     makeFreeFloating: function( positioningNode )
     {
         if ( ! positioningNode )
@@ -882,30 +737,27 @@
         var titleBarContextMenu = dojo.widget.createWidget( "PopupMenu2", { id: this.widgetId + "_ctxmenu", targetNodeIds: [ this.titleBar.id ], contextMenuForWindow: false }, null );
         var dumpPosMenuItem = dojo.widget.createWidget( "MenuItem2", { caption: "Dump Position"} );
         var makeFreeFloating = dojo.widget.createWidget( "MenuItem2", { caption: "Make Free Floating"} );
-        //var twoColummLayoutMenuItem = dojo.widget.createWidget( "MenuItem2", { id: "jstb_menu_item3", caption: "Two Column Layout"} );
-        //var threeColummLayoutMenuItem = dojo.widget.createWidget( "MenuItem2", { id: "jstb_menu_item4", caption: "Three Column Layout"} );
         
         dojo.event.connect( dumpPosMenuItem, "onClick", function(e) { portletWindow.dumpPostionInfo(); } );
         dojo.event.connect( makeFreeFloating, "onClick", function(e) { portletWindow.makeFreeFloating(); } );
-        //dojo.event.connect( freeFormLayoutMenuItem, "onClick", function(e) { jetspeed.prefs.windowTiling = false; jetspeed.page.resetWindowLayout(); jetspeed.page.reload(); } );
-        //dojo.event.connect( twoColummLayoutMenuItem, "onClick", function(e) { jetspeed.prefs.windowTiling = 2; jetspeed.page.reload(); } );
-        //dojo.event.connect( threeColummLayoutMenuItem, "onClick", function(e) { jetspeed.prefs.windowTiling = 3; jetspeed.page.reload(); } );
+
         titleBarContextMenu.addChild( dumpPosMenuItem );
         titleBarContextMenu.addChild( makeFreeFloating );
-        //titleBarContextMenu.addChild( twoColummLayoutMenuItem );
-        //titleBarContextMenu.addChild( threeColummLayoutMenuItem );
+
         document.body.appendChild( titleBarContextMenu.domNode );
     },
     
-    getWindowColumnIndex: function()
+    getPageColumnIndex: function()
     {
         var inColIndex = null;
-        if ( ! jetspeed.columns ) return inColIndex;
-        for ( var i = 0 ; i < jetspeed.columns.length ; i++ )
+        if ( ! jetspeed.page.columns ) return inColIndex;
+        for ( var i = 0 ; i < jetspeed.page.columns.length ; i++ )
         {
-            var columnElmt = jetspeed.columns[i];
-            if ( dojo.dom.isDescendantOf( this.domNode, columnElmt, true ) )
+            if ( jetspeed.page.columns[i].containsNode( this.domNode ) )
+            {
                 inColIndex = i;
+                break;
+            }
         }
         return inColIndex;
     },
@@ -1069,11 +921,17 @@
         }
         else
         {
-            var columnRowResult = jetspeed.ui.getPortletWindowColumnRow( this.domNode );
+            var columnRowResult = jetspeed.page.getPortletCurrentColumnRow( this.domNode );
             if ( columnRowResult != null )
             {
                 cWinState.column = columnRowResult.column;
                 cWinState.row = columnRowResult.row;
+                cWinState.layout = columnRowResult.layout;
+            }
+            else
+            {
+                dojo.raise( "PortletWindow.getCurrentWindowState cannot not find row/column/layout of window: " + this.widgetId ) ;
+                // BOZO:NOW: test this with maximize/minimize
             }
         }
         return cWinState;
@@ -1255,15 +1113,15 @@
             // domNode removal from column - add to desktop for visual freeform drag
             document.getElementById( jetspeed.id.DESKTOP ).appendChild( portletWindowNode );
 
-            var inColIndex = this.portletWindow.getWindowColumnIndex();
+            var inColIndex = this.portletWindow.getPageColumnIndex();
 
-            this.columnsX = new Array( jetspeed.columns.length );
-            for ( var i = 0 ; i < jetspeed.columns.length ; i++ )
+            this.columnsX = new Array( jetspeed.page.columns.length );
+            for ( var i = 0 ; i < jetspeed.page.columns.length ; i++ )
             {
-                this.columnsX[ i ] = dojo.style.getAbsoluteX( jetspeed.columns[i], true );
+                this.columnsX[ i ] = dojo.style.getAbsoluteX( jetspeed.page.columns[i].domNode, true );
             }
             
-            var inCol = ( inColIndex >= 0 ? jetspeed.columns[ inColIndex ] : null );
+            var inCol = ( inColIndex >= 0 ? jetspeed.page.columns[ inColIndex ] : null );
             pwGhost.col = inCol;
         }
 
@@ -1296,19 +1154,19 @@
         if ( this.windowPositionStatic )
         {
             var colIndex = -1;
-            for ( var i = jetspeed.columns.length-1 ; i >= 0  ; i-- )
+            for ( var i = jetspeed.page.columns.length-1 ; i >= 0  ; i-- )
             {
                 //dojo.debug( "PortletWindowDragMoveObject onDragMove: col[" + i + "] columnsX=" + this.columnsX[i] + " this.domNode.offsetWidth/2=" + (this.domNode.offsetWidth/2) + " x=" + x );
                 if ( ( x + ( this.domNode.offsetWidth / 2 ) ) >= this.columnsX[ i ] )
                 {
-                    if ( y + ( this.domNode.offsetHeight / 2 ) >=  dojo.style.getAbsoluteY( jetspeed.columns[i], true ) )
+                    if ( y + ( this.domNode.offsetHeight / 2 ) >=  dojo.style.getAbsoluteY( jetspeed.page.columns[i].domNode, true ) )
                     {
                         colIndex = i;
                         break;
                     }
                 }
             }
-            var col = ( colIndex >= 0 ? jetspeed.columns[ colIndex ] : null );
+            var col = ( colIndex >= 0 ? jetspeed.page.columns[ colIndex ] : null );
             //if ( col != null )
             //    dojo.debug( "PortletWindowDragMoveObject onDragMove: col[" + colIndex + "] columnsX=" + this.columnsX[colIndex] + " this.domNode.offsetWidth=" + this.domNode.offsetWidth + " x=" + x );
             //else
@@ -1318,10 +1176,10 @@
             {
                 dojo.dom.removeNode( pwGhost );
 				pwGhost.col = col;
-				col.appendChild(pwGhost);
+				col.domNode.appendChild(pwGhost);
 			}
             
-            var portletWindowsResult = jetspeed.ui.getPortletWindowChildren( col, pwGhost );
+            var portletWindowsResult = jetspeed.ui.getPortletWindowChildren( col.domNode, pwGhost );
             var portletWindowsInCol = portletWindowsResult.portletWindowNodes;
             
             if ( portletWindowsInCol )
@@ -1350,7 +1208,7 @@
                         if ( ghostIndex + 2 < portletWindowsInCol.length )
                             dojo.dom.insertBefore( pwGhost, portletWindowsInCol[ ghostIndex +2 ], true );
                         else
-                            col.appendChild( pwGhost );
+                            col.domNode.appendChild( pwGhost );
                     }
                     else
                     {
@@ -1479,12 +1337,12 @@
     },
     _getGroupSiblings: function( /* boolean */ includeSelf )
     {
-        if ( ! jetspeed.columns ) return null;
+        if ( ! jetspeed.page.columns ) return null;
         var siblings = [];
-        for ( var i = 0 ; i < jetspeed.columns.length ; i++ )
+        for ( var i = 0 ; i < jetspeed.page.columns.length ; i++ )
         {
-            var columnElmt = jetspeed.columns[i];
-            var spacerChildren = jetspeed.ui.getPortletWindowChildren( columnElmt, null, true, true );
+            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++ )
             {



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