[ Index ]
 

Code source de GeekLog 1.4.1

Accédez au Source d'autres logiciels libres

title

Body

[fermer]

/public_html/fckeditor/editor/_source/commandclasses/ -> fckfitwindow.js (source)

   1  /*
   2   * FCKeditor - The text editor for internet
   3   * Copyright (C) 2003-2006 Frederico Caldeira Knabben
   4   * 
   5   * Licensed under the terms of the GNU Lesser General Public License:
   6   *         http://www.opensource.org/licenses/lgpl-license.php
   7   * 
   8   * For further information visit:
   9   *         http://www.fckeditor.net/
  10   * 
  11   * "Support Open Source software. What about a donation today?"
  12   * 
  13   * File Name: fckfitwindow.js
  14   *     Stretch the editor to full window size and back.
  15   * 
  16   * File Authors:
  17   *         Paul Moers (mail@saulmade.nl)
  18   *         Thanks to Christian Fecteau (webmaster@christianfecteau.com)
  19   *         Frederico Caldeira Knabben (fredck@fckeditor.net)
  20   */
  21  
  22  var FCKFitWindow = function()
  23  {
  24      this.Name = 'FitWindow' ;
  25  }
  26  
  27  FCKFitWindow.prototype.Execute = function()
  28  {
  29      var eEditorFrame        = window.frameElement ;
  30      var eEditorFrameStyle    = eEditorFrame.style ;
  31  
  32      var eMainWindow            = parent ;
  33      var eDocEl                = eMainWindow.document.documentElement ;
  34      var eBody                = eMainWindow.document.body ;
  35      var eBodyStyle            = eBody.style ;
  36  
  37      // No original style properties known? Go fullscreen.
  38      if ( !this.IsMaximized )
  39      {
  40          // Registering an event handler when the window gets resized.
  41          if( FCKBrowserInfo.IsIE )
  42              eMainWindow.attachEvent( 'onresize', FCKFitWindow_Resize ) ;
  43          else
  44              eMainWindow.addEventListener( 'resize', FCKFitWindow_Resize, true ) ;
  45  
  46          // Save the scrollbars position.
  47          this._ScrollPos = FCKTools.GetScrollPosition( eMainWindow ) ;
  48          
  49          // Save and reset the styles for the entire node tree. They could interfere in the result.
  50          var eParent = eEditorFrame ;
  51          while( eParent = eParent.parentNode )
  52          {
  53              if ( eParent.nodeType == 1 )
  54                  eParent._fckSavedStyles = FCKTools.SaveStyles( eParent ) ;
  55          }        
  56  
  57          // Hide IE scrollbars (in strict mode).
  58          if ( FCKBrowserInfo.IsIE )
  59          {
  60              this.documentElementOverflow = eDocEl.style.overflow ;
  61              eDocEl.style.overflow    = 'hidden' ;
  62              eBodyStyle.overflow        = 'hidden' ;
  63          }
  64          else
  65          {
  66              // Hide the scroolbars in Firefox.
  67              eBodyStyle.overflow = 'hidden' ;
  68              eBodyStyle.width = '0px' ;
  69              eBodyStyle.height = '0px' ;
  70          }
  71          
  72          // Save the IFRAME styles.
  73          this._EditorFrameStyles = FCKTools.SaveStyles( eEditorFrame ) ;
  74          
  75          // Resize.
  76          var oViewPaneSize = FCKTools.GetViewPaneSize( eMainWindow ) ;
  77  
  78          eEditorFrameStyle.position    = "absolute";
  79          eEditorFrameStyle.zIndex    = FCKConfig.FloatingPanelsZIndex - 1;
  80          eEditorFrameStyle.left        = "0px";
  81          eEditorFrameStyle.top        = "0px";
  82          eEditorFrameStyle.width        = oViewPaneSize.Width + "px";
  83          eEditorFrameStyle.height    = oViewPaneSize.Height + "px";
  84          
  85          // Giving the frame some (huge) borders on his right and bottom
  86          // side to hide the background that would otherwise show when the
  87          // editor is in fullsize mode and the window is increased in size
  88          // not for IE, because IE immediately adapts the editor on resize, 
  89          // without showing any of the background oddly in firefox, the
  90          // editor seems not to fill the whole frame, so just setting the
  91          // background of it to white to cover the page laying behind it anyway.
  92          if ( !FCKBrowserInfo.IsIE )
  93          {
  94              eEditorFrameStyle.borderRight = eEditorFrameStyle.borderBottom = "9999px solid white" ;
  95              eEditorFrameStyle.backgroundColor        = "white";
  96          }
  97  
  98          // Scroll to top left.
  99          eMainWindow.scrollTo(0, 0);
 100  
 101          this.IsMaximized = true ;
 102      }
 103      else    // Resize to original size.
 104      {
 105          // Remove the event handler of window resizing.
 106          if( FCKBrowserInfo.IsIE )
 107              eMainWindow.detachEvent( "onresize", FCKFitWindow_Resize ) ;
 108          else
 109              eMainWindow.removeEventListener( "resize", FCKFitWindow_Resize, true ) ;
 110  
 111          // Restore the CSS position for the entire node tree.
 112          var eParent = eEditorFrame ;
 113          while( eParent = eParent.parentNode )
 114          {
 115              if ( eParent._fckSavedStyles )
 116              {
 117                  FCKTools.RestoreStyles( eParent, eParent._fckSavedStyles ) ;
 118                  eParent._fckSavedStyles = null ;
 119              }
 120          }
 121          
 122          // Restore IE scrollbars
 123          if ( FCKBrowserInfo.IsIE )
 124              eDocEl.style.overflow = this.documentElementOverflow ;
 125  
 126          // Restore original size
 127          FCKTools.RestoreStyles( eEditorFrame, this._EditorFrameStyles ) ;
 128          
 129          // Restore the window scroll position.
 130          eMainWindow.scrollTo( this._ScrollPos.X, this._ScrollPos.Y ) ;
 131  
 132          this.IsMaximized = false ;
 133      }
 134      
 135      FCKToolbarItems.GetItem('FitWindow').RefreshState() ;
 136  
 137      // It seams that Firefox restarts the editing area when making this changes.
 138      // On FF 1.0.x, the area is not anymore editable. On FF 1.5+, the special 
 139      //configuration, like DisableFFTableHandles and DisableObjectResizing get 
 140      //lost, so we must reset it. Also, the cursor position and selection are 
 141      //also lost, even if you comment the following line (MakeEditable).
 142      // if ( FCKBrowserInfo.IsGecko10 )    // Initially I thought it was a FF 1.0 only problem.
 143      FCK.EditingArea.MakeEditable() ;
 144      
 145      FCK.Focus() ;
 146  }
 147  
 148  FCKFitWindow.prototype.GetState = function()
 149  {
 150      if ( FCKConfig.ToolbarLocation != 'In' )
 151          return FCK_TRISTATE_DISABLED ;
 152      else
 153          return ( this.IsMaximized ? FCK_TRISTATE_ON : FCK_TRISTATE_OFF );
 154  }
 155  
 156  function FCKFitWindow_Resize()
 157  {
 158      var oViewPaneSize = FCKTools.GetViewPaneSize( parent ) ;
 159  
 160      var eEditorFrameStyle = window.frameElement.style ;
 161  
 162      eEditorFrameStyle.width        = oViewPaneSize.Width + 'px' ;
 163      eEditorFrameStyle.height    = oViewPaneSize.Height + 'px' ;
 164  }


Généré le : Wed Nov 21 12:27:40 2007 par Balluche grâce à PHPXref 0.7
  Clicky Web Analytics