Subversion Repositories Applications.papyrus

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

/*
 * FCKeditor - The text editor for internet
 * Copyright (C) 2003-2005 Frederico Caldeira Knabben
 * 
 * Licensed under the terms of the GNU Lesser General Public License:
 *              http://www.opensource.org/licenses/lgpl-license.php
 * 
 * For further information visit:
 *              http://www.fckeditor.net/
 * 
 * File Name: fcktoolbarbutton.js
 *      FCKToolbarButton Class: represents a button in the toolbar.
 * 
 * File Authors:
 *              Frederico Caldeira Knabben (fredck@fckeditor.net)
 */

var FCKToolbarButton = function( commandName, label, tooltip, style, sourceView, contextSensitive )
{
        this.Command                    = FCKCommands.GetCommand( commandName ) ;
        this.Label                              = label ? label : commandName ;
        this.Tooltip                    = tooltip ? tooltip : ( label ? label : commandName) ;
        this.Style                              = style ? style : FCK_TOOLBARITEM_ONLYICON ;
        this.SourceView                 = sourceView ? true : false ;
        this.ContextSensitive   = contextSensitive ? true : false ;
        this.IconPath                   = FCKConfig.SkinPath + 'toolbar/' + commandName.toLowerCase() + '.gif' ;
        this.State                              = FCK_UNKNOWN ;
}

FCKToolbarButton.prototype.CreateInstance = function( parentToolbar )
{
        this.DOMDiv = document.createElement( 'div' ) ;
        this.DOMDiv.className = 'TB_Button_Off' ;

        this.DOMDiv.FCKToolbarButton = this ;
        
        var sHtml =
                '<table title="' + this.Tooltip + '" cellspacing="0" cellpadding="0" border="0" unselectable="on">' +
                        '<tr>' ;
        
        if ( this.Style != FCK_TOOLBARITEM_ONLYTEXT ) 
                sHtml += '<td class="TB_Icon" unselectable="on"><img src="' + this.IconPath + '" width="21" height="21" unselectable="on"></td>' ;
        
        if ( this.Style != FCK_TOOLBARITEM_ONLYICON ) 
                sHtml += '<td class="TB_Text" unselectable="on" nowrap>' + this.Label + '</td>' ;
        
        sHtml +=        
                        '</tr>' +
                '</table>' ;
        
        this.DOMDiv.innerHTML = sHtml ;

        var oCell = parentToolbar.DOMRow.insertCell(-1) ;
        oCell.appendChild( this.DOMDiv ) ;
        
        this.RefreshState() ;
}

FCKToolbarButton.prototype.RefreshState = function()
{
/*
        TODO: Delete this commend block on stable version.
        // Gets the actual state.
//      var eState ;

//      if ( FCK.EditMode == FCK_EDITMODE_SOURCE && ! this.SourceView )
//              eState = FCK_TRISTATE_DISABLED ;
//      else
*/
        // Gets the actual state.
        var eState = this.Command.GetState() ;
        
        // If there are no state changes than do nothing and return.
        if ( eState == this.State ) return ;
        
        // Sets the actual state.
        this.State = eState ;
        
        switch ( this.State )
        {
                case FCK_TRISTATE_ON :
                        this.DOMDiv.className = 'TB_Button_On' ;

                        this.DOMDiv.onmouseover = FCKToolbarButton_OnMouseOnOver ;
                        this.DOMDiv.onmouseout  = FCKToolbarButton_OnMouseOnOut ;
                        this.DOMDiv.onclick             = FCKToolbarButton_OnClick ;
                        
                        break ;
                case FCK_TRISTATE_OFF :
                        this.DOMDiv.className = 'TB_Button_Off' ;

                        this.DOMDiv.onmouseover = FCKToolbarButton_OnMouseOffOver ;
                        this.DOMDiv.onmouseout  = FCKToolbarButton_OnMouseOffOut ;
                        this.DOMDiv.onclick             = FCKToolbarButton_OnClick ;
                        
                        break ;
                default :
                        this.Disable() ;
                        break ;
        }
}

function FCKToolbarButton_OnMouseOnOver()
{
        this.className = 'TB_Button_On TB_Button_On_Over' ;
}

function FCKToolbarButton_OnMouseOnOut()
{
        this.className = 'TB_Button_On' ;
}
        
function FCKToolbarButton_OnMouseOffOver()
{
        this.className = 'TB_Button_On TB_Button_Off_Over' ;
}

function FCKToolbarButton_OnMouseOffOut()
{
        this.className = 'TB_Button_Off' ;
}
        
function FCKToolbarButton_OnClick(e)
{
        this.FCKToolbarButton.Click(e) ;
        return false ;
}

FCKToolbarButton.prototype.Click = function()
{
        this.Command.Execute() ;
}

FCKToolbarButton.prototype.Enable = function()
{
        this.RefreshState() ;
}

FCKToolbarButton.prototype.Disable = function()
{
        this.State = FCK_TRISTATE_DISABLED ;
        this.DOMDiv.className = 'TB_Button_Disabled' ;
        this.DOMDiv.onmouseover = null ;
        this.DOMDiv.onmouseout  = null ;
        this.DOMDiv.onclick             = null ;
}