fcktoolbarstylecombo.js
上传用户:li2971742
上传日期:2021-11-18
资源大小:39096k
文件大小:3k
源码类别:

OA系统

开发平台:

C#

  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: fcktoolbarstylecombo.js
  14.  *  FCKToolbarPanelButton Class: Handles the Fonts combo selector.
  15.  * 
  16.  * File Authors:
  17.  *  Frederico Caldeira Knabben (fredck@fckeditor.net)
  18.  */
  19. var FCKToolbarStyleCombo = function( tooltip, style )
  20. {
  21. this.CommandName = 'Style' ;
  22. this.Label = this.GetLabel() ;
  23. this.Tooltip = tooltip ? tooltip : this.Label ;
  24. this.Style = style ? style : FCK_TOOLBARITEM_ICONTEXT ;
  25. }
  26. // Inherit from FCKToolbarSpecialCombo.
  27. FCKToolbarStyleCombo.prototype = new FCKToolbarSpecialCombo ;
  28. FCKToolbarStyleCombo.prototype.GetLabel = function()
  29. {
  30. return FCKLang.Style ;
  31. }
  32. FCKToolbarStyleCombo.prototype.CreateItems = function( targetSpecialCombo )
  33. {
  34. var oTargetDoc = targetSpecialCombo._Panel.Document ;
  35. // Add the Editor Area CSS to the panel so the style classes are previewed correctly.
  36. FCKTools.AppendStyleSheet( oTargetDoc, FCKConfig.ToolbarComboPreviewCSS ) ;
  37. oTargetDoc.body.className += ' ForceBaseFont' ;
  38. // For some reason Gecko is blocking inside the "RefreshVisibleItems" function.
  39. if ( ! FCKBrowserInfo.IsGecko )
  40. targetSpecialCombo.OnBeforeClick = this.RefreshVisibleItems ;
  41. // Add the styles to the special combo.
  42. var aCommandStyles = FCK.ToolbarSet.CurrentInstance.Commands.GetCommand( this.CommandName ).Styles ;
  43. for ( var s in aCommandStyles )
  44. {
  45. var oStyle = aCommandStyles[s] ;
  46. var oItem ;
  47. if ( oStyle.IsObjectElement )
  48. oItem = targetSpecialCombo.AddItem( s, s ) ;
  49. else
  50. oItem = targetSpecialCombo.AddItem( s, oStyle.GetOpenerTag() + s + oStyle.GetCloserTag() ) ;
  51. oItem.Style = oStyle ;
  52. }
  53. }
  54. FCKToolbarStyleCombo.prototype.RefreshActiveItems = function( targetSpecialCombo )
  55. {
  56. // Clear the actual selection.
  57. targetSpecialCombo.DeselectAll() ;
  58. // Get the active styles.
  59. var aStyles = FCK.ToolbarSet.CurrentInstance.Commands.GetCommand( this.CommandName ).GetActiveStyles() ;
  60. if ( aStyles.length > 0 )
  61. {
  62. // Select the active styles in the combo.
  63. for ( var i = 0 ; i < aStyles.length ; i++ )
  64. targetSpecialCombo.SelectItem( aStyles[i].Name ) ;
  65. // Set the combo label to the first style in the collection.
  66. targetSpecialCombo.SetLabelById( aStyles[0].Name ) ;
  67. }
  68. else
  69. targetSpecialCombo.SetLabel('') ;
  70. }
  71. FCKToolbarStyleCombo.prototype.RefreshVisibleItems = function( targetSpecialCombo )
  72. {
  73. if ( FCKSelection.GetType() == 'Control' )
  74. var sTagName = FCKSelection.GetSelectedElement().tagName ;
  75. for ( var i in targetSpecialCombo.Items )
  76. {
  77. var oItem = targetSpecialCombo.Items[i] ;
  78. if ( ( sTagName && oItem.Style.Element == sTagName ) || ( ! sTagName && ! oItem.Style.IsObjectElement ) )
  79. oItem.style.display = '' ;
  80. else
  81. oItem.style.display = 'none' ; // For some reason Gecko is blocking here.
  82. }
  83. }