import rt 3.8.7
[freeside.git] / rt / share / html / NoAuth / RichText / FCKeditor / editor / _source / classes / fcktoolbarbuttonui.js
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fcktoolbarbuttonui.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fcktoolbarbuttonui.js
new file mode 100644 (file)
index 0000000..08598a1
--- /dev/null
@@ -0,0 +1,198 @@
+/*\r
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net\r
+ * Copyright (C) 2003-2009 Frederico Caldeira Knabben\r
+ *\r
+ * == BEGIN LICENSE ==\r
+ *\r
+ * Licensed under the terms of any of the following licenses at your\r
+ * choice:\r
+ *\r
+ *  - GNU General Public License Version 2 or later (the "GPL")\r
+ *    http://www.gnu.org/licenses/gpl.html\r
+ *\r
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")\r
+ *    http://www.gnu.org/licenses/lgpl.html\r
+ *\r
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")\r
+ *    http://www.mozilla.org/MPL/MPL-1.1.html\r
+ *\r
+ * == END LICENSE ==\r
+ *\r
+ * FCKToolbarButtonUI Class: interface representation of a toolbar button.\r
+ */\r
+\r
+var FCKToolbarButtonUI = function( name, label, tooltip, iconPathOrStripInfoArray, style, state )\r
+{\r
+       this.Name               = name ;\r
+       this.Label              = label || name ;\r
+       this.Tooltip    = tooltip || this.Label ;\r
+       this.Style              = style || FCK_TOOLBARITEM_ONLYICON ;\r
+       this.State              = state || FCK_TRISTATE_OFF ;\r
+\r
+       this.Icon = new FCKIcon( iconPathOrStripInfoArray ) ;\r
+\r
+       if ( FCK.IECleanup )\r
+               FCK.IECleanup.AddItem( this, FCKToolbarButtonUI_Cleanup ) ;\r
+}\r
+\r
+\r
+FCKToolbarButtonUI.prototype._CreatePaddingElement = function( document )\r
+{\r
+       var oImg = document.createElement( 'IMG' ) ;\r
+       oImg.className = 'TB_Button_Padding' ;\r
+       oImg.src = FCK_SPACER_PATH ;\r
+       return oImg ;\r
+}\r
+\r
+FCKToolbarButtonUI.prototype.Create = function( parentElement )\r
+{\r
+       var oDoc = FCKTools.GetElementDocument( parentElement ) ;\r
+\r
+       // Create the Main Element.\r
+       var oMainElement = this.MainElement = oDoc.createElement( 'DIV' ) ;\r
+       oMainElement.title = this.Tooltip ;\r
+\r
+       // The following will prevent the button from catching the focus.\r
+       if ( FCKBrowserInfo.IsGecko )\r
+                oMainElement.onmousedown       = FCKTools.CancelEvent ;\r
+\r
+       FCKTools.AddEventListenerEx( oMainElement, 'mouseover', FCKToolbarButtonUI_OnMouseOver, this ) ;\r
+       FCKTools.AddEventListenerEx( oMainElement, 'mouseout', FCKToolbarButtonUI_OnMouseOut, this ) ;\r
+       FCKTools.AddEventListenerEx( oMainElement, 'click', FCKToolbarButtonUI_OnClick, this ) ;\r
+\r
+       this.ChangeState( this.State, true ) ;\r
+\r
+       if ( this.Style == FCK_TOOLBARITEM_ONLYICON && !this.ShowArrow )\r
+       {\r
+               // <td><div class="TB_Button_On" title="Smiley">{Image}</div></td>\r
+\r
+               oMainElement.appendChild( this.Icon.CreateIconElement( oDoc ) ) ;\r
+       }\r
+       else\r
+       {\r
+               // <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>\r
+               // <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>\r
+\r
+               var oTable = oMainElement.appendChild( oDoc.createElement( 'TABLE' ) ) ;\r
+               oTable.cellPadding = 0 ;\r
+               oTable.cellSpacing = 0 ;\r
+\r
+               var oRow = oTable.insertRow(-1) ;\r
+\r
+               // The Image cell (icon or padding).\r
+               var oCell = oRow.insertCell(-1) ;\r
+\r
+               if ( this.Style == FCK_TOOLBARITEM_ONLYICON || this.Style == FCK_TOOLBARITEM_ICONTEXT )\r
+                       oCell.appendChild( this.Icon.CreateIconElement( oDoc ) ) ;\r
+               else\r
+                       oCell.appendChild( this._CreatePaddingElement( oDoc ) ) ;\r
+\r
+               if ( this.Style == FCK_TOOLBARITEM_ONLYTEXT || this.Style == FCK_TOOLBARITEM_ICONTEXT )\r
+               {\r
+                       // The Text cell.\r
+                       oCell = oRow.insertCell(-1) ;\r
+                       oCell.className = 'TB_Button_Text' ;\r
+                       oCell.noWrap = true ;\r
+                       oCell.appendChild( oDoc.createTextNode( this.Label ) ) ;\r
+               }\r
+\r
+               if ( this.ShowArrow )\r
+               {\r
+                       if ( this.Style != FCK_TOOLBARITEM_ONLYICON )\r
+                       {\r
+                               // A padding cell.\r
+                               oRow.insertCell(-1).appendChild( this._CreatePaddingElement( oDoc ) ) ;\r
+                       }\r
+\r
+                       oCell = oRow.insertCell(-1) ;\r
+                       var eImg = oCell.appendChild( oDoc.createElement( 'IMG' ) ) ;\r
+                       eImg.src        = FCKConfig.SkinPath + 'images/toolbar.buttonarrow.gif' ;\r
+                       eImg.width      = 5 ;\r
+                       eImg.height     = 3 ;\r
+               }\r
+\r
+               // The last padding cell.\r
+               oCell = oRow.insertCell(-1) ;\r
+               oCell.appendChild( this._CreatePaddingElement( oDoc ) ) ;\r
+       }\r
+\r
+       parentElement.appendChild( oMainElement ) ;\r
+}\r
+\r
+FCKToolbarButtonUI.prototype.ChangeState = function( newState, force )\r
+{\r
+       if ( !force && this.State == newState )\r
+               return ;\r
+\r
+       var e = this.MainElement ;\r
+\r
+       // In IE it can happen when the page is reloaded that MainElement is null, so exit here\r
+       if ( !e )\r
+               return ;\r
+\r
+       switch ( parseInt( newState, 10 ) )\r
+       {\r
+               case FCK_TRISTATE_OFF :\r
+                       e.className             = 'TB_Button_Off' ;\r
+                       break ;\r
+\r
+               case FCK_TRISTATE_ON :\r
+                       e.className             = 'TB_Button_On' ;\r
+                       break ;\r
+\r
+               case FCK_TRISTATE_DISABLED :\r
+                       e.className             = 'TB_Button_Disabled' ;\r
+                       break ;\r
+       }\r
+\r
+       this.State = newState ;\r
+}\r
+\r
+function FCKToolbarButtonUI_OnMouseOver( ev, button )\r
+{\r
+       if ( button.State == FCK_TRISTATE_OFF )\r
+               this.className = 'TB_Button_Off_Over' ;\r
+       else if ( button.State == FCK_TRISTATE_ON )\r
+               this.className = 'TB_Button_On_Over' ;\r
+}\r
+\r
+function FCKToolbarButtonUI_OnMouseOut( ev, button )\r
+{\r
+       if ( button.State == FCK_TRISTATE_OFF )\r
+               this.className = 'TB_Button_Off' ;\r
+       else if ( button.State == FCK_TRISTATE_ON )\r
+               this.className = 'TB_Button_On' ;\r
+}\r
+\r
+function FCKToolbarButtonUI_OnClick( ev, button )\r
+{\r
+       if ( button.OnClick && button.State != FCK_TRISTATE_DISABLED )\r
+               button.OnClick( button ) ;\r
+}\r
+\r
+function FCKToolbarButtonUI_Cleanup()\r
+{\r
+       // This one should not cause memory leak, but just for safety, let's clean\r
+       // it up.\r
+       this.MainElement = null ;\r
+}\r
+\r
+/*\r
+       Sample outputs:\r
+\r
+       This is the base structure. The variation is the image that is marked as {Image}:\r
+               <td><div class="TB_Button_On" title="Smiley">{Image}</div></td>\r
+               <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>\r
+               <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>\r
+\r
+       These are samples of possible {Image} values:\r
+\r
+               Strip - IE version:\r
+                       <div class="TB_Button_Image"><img src="strip.gif" style="top:-16px"></div>\r
+\r
+               Strip : Firefox, Safari and Opera version\r
+                       <img class="TB_Button_Image" style="background-position: 0px -16px;background-image: url(strip.gif);">\r
+\r
+               No-Strip : Browser independent:\r
+                       <img class="TB_Button_Image" src="smiley.gif">\r
+*/\r