fckmenublock.js
上传用户:dbstep
上传日期:2022-08-06
资源大小:2803k
文件大小:4k
源码类别:

WEB源码(ASP,PHP,...)

开发平台:

ASP/ASPX

  1. /*
  2.  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
  3.  * Copyright (C) 2003-2009 Frederico Caldeira Knabben
  4.  *
  5.  * == BEGIN LICENSE ==
  6.  *
  7.  * Licensed under the terms of any of the following licenses at your
  8.  * choice:
  9.  *
  10.  *  - GNU General Public License Version 2 or later (the "GPL")
  11.  *    http://www.gnu.org/licenses/gpl.html
  12.  *
  13.  *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
  14.  *    http://www.gnu.org/licenses/lgpl.html
  15.  *
  16.  *  - Mozilla Public License Version 1.1 or later (the "MPL")
  17.  *    http://www.mozilla.org/MPL/MPL-1.1.html
  18.  *
  19.  * == END LICENSE ==
  20.  *
  21.  * Renders a list of menu items.
  22.  */
  23. var FCKMenuBlock = function()
  24. {
  25. this._Items = new Array() ;
  26. }
  27. FCKMenuBlock.prototype.Count = function()
  28. {
  29. return this._Items.length ;
  30. }
  31. FCKMenuBlock.prototype.AddItem = function( name, label, iconPathOrStripInfoArrayOrIndex, isDisabled, customData )
  32. {
  33. var oItem = new FCKMenuItem( this, name, label, iconPathOrStripInfoArrayOrIndex, isDisabled, customData ) ;
  34. oItem.OnClick = FCKTools.CreateEventListener( FCKMenuBlock_Item_OnClick, this ) ;
  35. oItem.OnActivate = FCKTools.CreateEventListener( FCKMenuBlock_Item_OnActivate, this ) ;
  36. this._Items.push( oItem ) ;
  37. return oItem ;
  38. }
  39. FCKMenuBlock.prototype.AddSeparator = function()
  40. {
  41. this._Items.push( new FCKMenuSeparator() ) ;
  42. }
  43. FCKMenuBlock.prototype.RemoveAllItems = function()
  44. {
  45. this._Items = new Array() ;
  46. var eItemsTable = this._ItemsTable ;
  47. if ( eItemsTable )
  48. {
  49. while ( eItemsTable.rows.length > 0 )
  50. eItemsTable.deleteRow( 0 ) ;
  51. }
  52. }
  53. FCKMenuBlock.prototype.Create = function( parentElement )
  54. {
  55. if ( !this._ItemsTable )
  56. {
  57. if ( FCK.IECleanup )
  58. FCK.IECleanup.AddItem( this, FCKMenuBlock_Cleanup ) ;
  59. this._Window = FCKTools.GetElementWindow( parentElement ) ;
  60. var oDoc = FCKTools.GetElementDocument( parentElement ) ;
  61. var eTable = parentElement.appendChild( oDoc.createElement( 'table' ) ) ;
  62. eTable.cellPadding = 0 ;
  63. eTable.cellSpacing = 0 ;
  64. FCKTools.DisableSelection( eTable ) ;
  65. var oMainElement = eTable.insertRow(-1).insertCell(-1) ;
  66. oMainElement.className = 'MN_Menu' ;
  67. var eItemsTable = this._ItemsTable = oMainElement.appendChild( oDoc.createElement( 'table' ) ) ;
  68. eItemsTable.cellPadding = 0 ;
  69. eItemsTable.cellSpacing = 0 ;
  70. }
  71. for ( var i = 0 ; i < this._Items.length ; i++ )
  72. this._Items[i].Create( this._ItemsTable ) ;
  73. }
  74. /* Events */
  75. function FCKMenuBlock_Item_OnClick( clickedItem, menuBlock )
  76. {
  77. if ( menuBlock.Hide )
  78. menuBlock.Hide() ;
  79. FCKTools.RunFunction( menuBlock.OnClick, menuBlock, [ clickedItem ] ) ;
  80. }
  81. function FCKMenuBlock_Item_OnActivate( menuBlock )
  82. {
  83. var oActiveItem = menuBlock._ActiveItem ;
  84. if ( oActiveItem && oActiveItem != this )
  85. {
  86. // Set the focus to this menu block window (to fire OnBlur on opened panels).
  87. if ( !FCKBrowserInfo.IsIE && oActiveItem.HasSubMenu && !this.HasSubMenu )
  88. {
  89. menuBlock._Window.focus() ;
  90. // Due to the event model provided by Opera, we need to set
  91. // HasFocus here as the above focus() call will not fire the focus
  92. // event in the panel immediately (#1200).
  93. menuBlock.Panel.HasFocus = true ;
  94. }
  95. oActiveItem.Deactivate() ;
  96. }
  97. menuBlock._ActiveItem = this ;
  98. }
  99. function FCKMenuBlock_Cleanup()
  100. {
  101. this._Window = null ;
  102. this._ItemsTable = null ;
  103. }
  104. // ################# //
  105. var FCKMenuSeparator = function()
  106. {}
  107. FCKMenuSeparator.prototype.Create = function( parentTable )
  108. {
  109. var oDoc = FCKTools.GetElementDocument( parentTable ) ;
  110. var r = parentTable.insertRow(-1) ;
  111. var eCell = r.insertCell(-1) ;
  112. eCell.className = 'MN_Separator MN_Icon' ;
  113. eCell = r.insertCell(-1) ;
  114. eCell.className = 'MN_Separator' ;
  115. eCell.appendChild( oDoc.createElement( 'DIV' ) ).className = 'MN_Separator_Line' ;
  116. eCell = r.insertCell(-1) ;
  117. eCell.className = 'MN_Separator' ;
  118. eCell.appendChild( oDoc.createElement( 'DIV' ) ).className = 'MN_Separator_Line' ;
  119. }