fcktoolbarbuttonui.js
上传用户:ah_jiwei
上传日期:2022-07-24
资源大小:54044k
文件大小:6k
源码类别:

数据库编程

开发平台:

Visual C++

  1. /*
  2.  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
  3.  * Copyright (C) 2003-2007 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.  * FCKToolbarButtonUI Class: interface representation of a toolbar button.
  22.  */
  23. var FCKToolbarButtonUI = function( name, label, tooltip, iconPathOrStripInfoArray, style, state )
  24. {
  25. this.Name = name ;
  26. this.Label = label || name ;
  27. this.Tooltip = tooltip || this.Label ;
  28. this.Style = style || FCK_TOOLBARITEM_ONLYICON ;
  29. this.State = state || FCK_TRISTATE_OFF ;
  30. this.Icon = new FCKIcon( iconPathOrStripInfoArray ) ;
  31. if ( FCK.IECleanup )
  32. FCK.IECleanup.AddItem( this, FCKToolbarButtonUI_Cleanup ) ;
  33. }
  34. FCKToolbarButtonUI.prototype._CreatePaddingElement = function( document )
  35. {
  36. var oImg = document.createElement( 'IMG' ) ;
  37. oImg.className = 'TB_Button_Padding' ;
  38. oImg.src = FCK_SPACER_PATH ;
  39. return oImg ;
  40. }
  41. FCKToolbarButtonUI.prototype.Create = function( parentElement )
  42. {
  43. var oDoc = FCKTools.GetElementDocument( parentElement ) ;
  44. // Create the Main Element.
  45. var oMainElement = this.MainElement = oDoc.createElement( 'DIV' ) ;
  46. oMainElement.title = this.Tooltip ;
  47. // The following will prevent the button from catching the focus.
  48. if ( FCKBrowserInfo.IsGecko )
  49.  oMainElement.onmousedown = FCKTools.CancelEvent ;
  50. FCKTools.AddEventListenerEx( oMainElement, 'mouseover', FCKToolbarButtonUI_OnMouseOver, this ) ;
  51. FCKTools.AddEventListenerEx( oMainElement, 'mouseout', FCKToolbarButtonUI_OnMouseOut, this ) ;
  52. FCKTools.AddEventListenerEx( oMainElement, 'click', FCKToolbarButtonUI_OnClick, this ) ;
  53. this.ChangeState( this.State, true ) ;
  54. if ( this.Style == FCK_TOOLBARITEM_ONLYICON && !this.ShowArrow )
  55. {
  56. // <td><div class="TB_Button_On" title="Smiley">{Image}</div></td>
  57. oMainElement.appendChild( this.Icon.CreateIconElement( oDoc ) ) ;
  58. }
  59. else
  60. {
  61. // <td><div class="TB_Button_On" title="Smiley"><table cellpadding="0" cellspacing="0"><tr><td>{Image}</td><td nowrap>Toolbar Button</td><td><img class="TB_Button_Padding"></td></tr></table></div></td>
  62. // <td><div class="TB_Button_On" title="Smiley"><table cellpadding="0" cellspacing="0"><tr><td><img class="TB_Button_Padding"></td><td nowrap>Toolbar Button</td><td><img class="TB_Button_Padding"></td></tr></table></div></td>
  63. var oTable = oMainElement.appendChild( oDoc.createElement( 'TABLE' ) ) ;
  64. oTable.cellPadding = 0 ;
  65. oTable.cellSpacing = 0 ;
  66. var oRow = oTable.insertRow(-1) ;
  67. // The Image cell (icon or padding).
  68. var oCell = oRow.insertCell(-1) ;
  69. if ( this.Style == FCK_TOOLBARITEM_ONLYICON || this.Style == FCK_TOOLBARITEM_ICONTEXT )
  70. oCell.appendChild( this.Icon.CreateIconElement( oDoc ) ) ;
  71. else
  72. oCell.appendChild( this._CreatePaddingElement( oDoc ) ) ;
  73. if ( this.Style == FCK_TOOLBARITEM_ONLYTEXT || this.Style == FCK_TOOLBARITEM_ICONTEXT )
  74. {
  75. // The Text cell.
  76. oCell = oRow.insertCell(-1) ;
  77. oCell.className = 'TB_Button_Text' ;
  78. oCell.noWrap = true ;
  79. oCell.appendChild( oDoc.createTextNode( this.Label ) ) ;
  80. }
  81. if ( this.ShowArrow )
  82. {
  83. if ( this.Style != FCK_TOOLBARITEM_ONLYICON )
  84. {
  85. // A padding cell.
  86. oRow.insertCell(-1).appendChild( this._CreatePaddingElement( oDoc ) ) ;
  87. }
  88. oCell = oRow.insertCell(-1) ;
  89. var eImg = oCell.appendChild( oDoc.createElement( 'IMG' ) ) ;
  90. eImg.src = FCKConfig.SkinPath + 'images/toolbar.buttonarrow.gif' ;
  91. eImg.width = 5 ;
  92. eImg.height = 3 ;
  93. }
  94. // The last padding cell.
  95. oCell = oRow.insertCell(-1) ;
  96. oCell.appendChild( this._CreatePaddingElement( oDoc ) ) ;
  97. }
  98. parentElement.appendChild( oMainElement ) ;
  99. }
  100. FCKToolbarButtonUI.prototype.ChangeState = function( newState, force )
  101. {
  102. if ( !force && this.State == newState )
  103. return ;
  104. var e = this.MainElement ;
  105. switch ( parseInt( newState, 10 ) )
  106. {
  107. case FCK_TRISTATE_OFF :
  108. e.className = 'TB_Button_Off' ;
  109. break ;
  110. case FCK_TRISTATE_ON :
  111. e.className = 'TB_Button_On' ;
  112. break ;
  113. case FCK_TRISTATE_DISABLED :
  114. e.className = 'TB_Button_Disabled' ;
  115. break ;
  116. }
  117. this.State = newState ;
  118. }
  119. function FCKToolbarButtonUI_OnMouseOver( ev, button )
  120. {
  121. if ( button.State == FCK_TRISTATE_OFF )
  122. this.className = 'TB_Button_Off_Over' ;
  123. else if ( button.State == FCK_TRISTATE_ON )
  124. this.className = 'TB_Button_On_Over' ;
  125. }
  126. function FCKToolbarButtonUI_OnMouseOut( ev, button )
  127. {
  128. if ( button.State == FCK_TRISTATE_OFF )
  129. this.className = 'TB_Button_Off' ;
  130. else if ( button.State == FCK_TRISTATE_ON )
  131. this.className = 'TB_Button_On' ;
  132. }
  133. function FCKToolbarButtonUI_OnClick( ev, button )
  134. {
  135. if ( button.OnClick && button.State != FCK_TRISTATE_DISABLED )
  136. button.OnClick( button ) ;
  137. }
  138. function FCKToolbarButtonUI_Cleanup()
  139. {
  140. // This one should not cause memory leak, but just for safety, let's clean
  141. // it up.
  142. this.MainElement = null ;
  143. }
  144. /*
  145. Sample outputs:
  146. This is the base structure. The variation is the image that is marked as {Image}:
  147. <td><div class="TB_Button_On" title="Smiley">{Image}</div></td>
  148. <td><div class="TB_Button_On" title="Smiley"><table cellpadding="0" cellspacing="0"><tr><td>{Image}</td><td nowrap>Toolbar Button</td><td><img class="TB_Button_Padding"></td></tr></table></div></td>
  149. <td><div class="TB_Button_On" title="Smiley"><table cellpadding="0" cellspacing="0"><tr><td><img class="TB_Button_Padding"></td><td nowrap>Toolbar Button</td><td><img class="TB_Button_Padding"></td></tr></table></div></td>
  150. These are samples of possible {Image} values:
  151. Strip - IE version:
  152. <div class="TB_Button_Image"><img src="strip.gif" style="top:-16px"></div>
  153. Strip : Firefox, Safari and Opera version
  154. <img class="TB_Button_Image" style="background-position: 0px -16px;background-image: url(strip.gif);">
  155. No-Strip : Browser independent:
  156. <img class="TB_Button_Image" src="smiley.gif">
  157. */