Rev 1087 | Blame | Compare with Previous | Last modification | View Log | RSS feed
/** FCKeditor - The text editor for internet* Copyright (C) 2003-2006 Frederico Caldeira Knabben** Licensed under the terms of the GNU Lesser General Public License:* http://www.opensource.org/licenses/lgpl-license.php** For further information visit:* http://www.fckeditor.net/** "Support Open Source software. What about a donation today?"** File Name: fckfitwindow.js* Stretch the editor to full window size and back.** File Authors:* Paul Moers (mail@saulmade.nl)* Thanks to Christian Fecteau (webmaster@christianfecteau.com)* Frederico Caldeira Knabben (fredck@fckeditor.net)*/var FCKFitWindow = function(){this.Name = 'FitWindow' ;}FCKFitWindow.prototype.Execute = function(){var eEditorFrame = window.frameElement ;var eEditorFrameStyle = eEditorFrame.style ;var eMainWindow = parent ;var eDocEl = eMainWindow.document.documentElement ;var eBody = eMainWindow.document.body ;var eBodyStyle = eBody.style ;// No original style properties known? Go fullscreen.if ( !this.IsMaximized ){// Registering an event handler when the window gets resized.if( FCKBrowserInfo.IsIE )eMainWindow.attachEvent( 'onresize', FCKFitWindow_Resize ) ;elseeMainWindow.addEventListener( 'resize', FCKFitWindow_Resize, true ) ;// Save the scrollbars position.this._ScrollPos = FCKTools.GetScrollPosition( eMainWindow ) ;// Save and reset the styles for the entire node tree. They could interfere in the result.var eParent = eEditorFrame ;while( eParent = eParent.parentNode ){if ( eParent.nodeType == 1 )eParent._fckSavedStyles = FCKTools.SaveStyles( eParent ) ;}// Hide IE scrollbars (in strict mode).if ( FCKBrowserInfo.IsIE ){this.documentElementOverflow = eDocEl.style.overflow ;eDocEl.style.overflow = 'hidden' ;eBodyStyle.overflow = 'hidden' ;}else{// Hide the scroolbars in Firefox.eBodyStyle.overflow = 'hidden' ;eBodyStyle.width = '0px' ;eBodyStyle.height = '0px' ;}// Save the IFRAME styles.this._EditorFrameStyles = FCKTools.SaveStyles( eEditorFrame ) ;// Resize.var oViewPaneSize = FCKTools.GetViewPaneSize( eMainWindow ) ;eEditorFrameStyle.position = "absolute";eEditorFrameStyle.zIndex = FCKConfig.FloatingPanelsZIndex - 1;eEditorFrameStyle.left = "0px";eEditorFrameStyle.top = "0px";eEditorFrameStyle.width = oViewPaneSize.Width + "px";eEditorFrameStyle.height = oViewPaneSize.Height + "px";// Giving the frame some (huge) borders on his right and bottom// side to hide the background that would otherwise show when the// editor is in fullsize mode and the window is increased in size// not for IE, because IE immediately adapts the editor on resize,// without showing any of the background oddly in firefox, the// editor seems not to fill the whole frame, so just setting the// background of it to white to cover the page laying behind it anyway.if ( !FCKBrowserInfo.IsIE ){eEditorFrameStyle.borderRight = eEditorFrameStyle.borderBottom = "9999px solid white" ;eEditorFrameStyle.backgroundColor = "white";}// Scroll to top left.eMainWindow.scrollTo(0, 0);this.IsMaximized = true ;}else // Resize to original size.{// Remove the event handler of window resizing.if( FCKBrowserInfo.IsIE )eMainWindow.detachEvent( "onresize", FCKFitWindow_Resize ) ;elseeMainWindow.removeEventListener( "resize", FCKFitWindow_Resize, true ) ;// Restore the CSS position for the entire node tree.var eParent = eEditorFrame ;while( eParent = eParent.parentNode ){if ( eParent._fckSavedStyles ){FCKTools.RestoreStyles( eParent, eParent._fckSavedStyles ) ;eParent._fckSavedStyles = null ;}}// Restore IE scrollbarsif ( FCKBrowserInfo.IsIE )eDocEl.style.overflow = this.documentElementOverflow ;// Restore original sizeFCKTools.RestoreStyles( eEditorFrame, this._EditorFrameStyles ) ;// Restore the window scroll position.eMainWindow.scrollTo( this._ScrollPos.X, this._ScrollPos.Y ) ;this.IsMaximized = false ;}FCKToolbarItems.GetItem('FitWindow').RefreshState() ;// It seams that Firefox restarts the editing area when making this changes.// On FF 1.0.x, the area is not anymore editable. On FF 1.5+, the special//configuration, like DisableFFTableHandles and DisableObjectResizing get//lost, so we must reset it. Also, the cursor position and selection are//also lost, even if you comment the following line (MakeEditable).// if ( FCKBrowserInfo.IsGecko10 ) // Initially I thought it was a FF 1.0 only problem.FCK.EditingArea.MakeEditable() ;FCK.Focus() ;}FCKFitWindow.prototype.GetState = function(){if ( FCKConfig.ToolbarLocation != 'In' )return FCK_TRISTATE_DISABLED ;elsereturn ( this.IsMaximized ? FCK_TRISTATE_ON : FCK_TRISTATE_OFF );}function FCKFitWindow_Resize(){var oViewPaneSize = FCKTools.GetViewPaneSize( parent ) ;var eEditorFrameStyle = window.frameElement.style ;eEditorFrameStyle.width = oViewPaneSize.Width + 'px' ;eEditorFrameStyle.height = oViewPaneSize.Height + 'px' ;}