2016-04-01 13:17:09 +00:00
/ *
*
* ( c ) Copyright Ascensio System Limited 2010 - 2016
*
* This program is a free software product . You can redistribute it and / or
* modify it under the terms of the GNU Affero General Public License ( AGPL )
* version 3 as published by the Free Software Foundation . In accordance with
* Section 7 ( a ) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non - infringement
* of any third - party rights .
*
* This program is distributed WITHOUT ANY WARRANTY ; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . For
* details , see the GNU AGPL at : http : //www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st . 125 a - 25 , Riga , Latvia ,
* EU , LV - 1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices , as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7 ( b ) of the License you must retain the original Product
* logo when distributing the program . Pursuant to Section 7 ( e ) we decline to
* grant you any rights under trademark law for use of our trademarks .
*
* All the Product ' s GUI elements , including illustrations and icon sets , as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution - ShareAlike 4.0 International . See the License
* terms at http : //creativecommons.org/licenses/by-sa/4.0/legalcode
*
* /
2016-03-11 00:48:53 +00:00
/ * *
* Toolbar . js
*
* Created by Alexander Yuzhin on 3 / 31 / 14
* Copyright ( c ) 2014 Ascensio System SIA . All rights reserved .
*
* /
define ( [
'core' ,
'common/main/lib/component/Window' ,
'common/main/lib/view/CopyWarningDialog' ,
'common/main/lib/view/ImageFromUrlDialog' ,
'spreadsheeteditor/main/app/view/Toolbar' ,
'spreadsheeteditor/main/app/collection/TableTemplates' ,
'spreadsheeteditor/main/app/view/HyperlinkSettingsDialog' ,
'spreadsheeteditor/main/app/view/TableOptionsDialog' ,
'spreadsheeteditor/main/app/view/NamedRangeEditDlg' ,
'spreadsheeteditor/main/app/view/NamedRangePasteDlg' ,
'spreadsheeteditor/main/app/view/NameManagerDlg'
] , function ( ) { 'use strict' ;
SSE . Controllers . Toolbar = Backbone . Controller . extend ( _ . extend ( {
models : [ ] ,
collections : [ ] ,
views : [
'Toolbar'
] ,
initialize : function ( ) {
var me = this ;
this . addListeners ( {
'Statusbar' : {
'sheet:changed' : _ . bind ( this . onApiSheetChanged , this )
} ,
'LeftMenu' : {
'settings:apply' : _ . bind ( this . applyFormulaSettings , this )
}
} ) ;
this . editMode = true ;
this . _isAddingShape = false ;
this . _state = {
prstyle : undefined ,
clrtext : undefined ,
pralign : undefined ,
clrback : undefined ,
valign : undefined ,
can _undo : undefined ,
can _redo : undefined ,
bold : undefined ,
italic : undefined ,
underline : undefined ,
wrap : undefined ,
merge : undefined ,
filter : undefined ,
angle : undefined ,
controlsdisabled : {
rows : undefined ,
cols : undefined ,
cells _right : undefined ,
cells _down : undefined ,
filters : undefined
} ,
selection _type : undefined ,
tablestylename : undefined ,
tablename : undefined ,
namedrange _locked : false ,
fontsize : undefined
} ;
var checkInsertAutoshape = function ( e , action ) {
var cmp = $ ( e . target ) ,
cmp _sdk = cmp . closest ( '#editor_sdk' ) ,
btn _id = cmp . closest ( 'button' ) . attr ( 'id' ) ;
if ( btn _id === undefined )
btn _id = cmp . closest ( '.btn-group' ) . attr ( 'id' ) ;
if ( me . api && me . api . asc _isAddAutoshape ( ) ) {
if ( cmp _sdk . length <= 0 || action == 'cancel' ) {
if ( me . toolbar . btnInsertText . pressed && btn _id != me . toolbar . btnInsertText . id ||
me . toolbar . btnInsertShape . pressed && btn _id != me . toolbar . btnInsertShape . id ) {
me . _isAddingShape = false ;
me . _addAutoshape ( false ) ;
me . toolbar . btnInsertShape . toggle ( false , true ) ;
me . toolbar . btnInsertText . toggle ( false , true ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
} else if ( me . toolbar . btnInsertShape . pressed && btn _id == me . toolbar . btnInsertShape . id ) {
_ . defer ( function ( ) {
me . api . asc _endAddShape ( ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
} , 100 ) ;
}
}
}
} ;
this . checkInsertAutoshape = function ( cmp ) {
checkInsertAutoshape ( { } , cmp . action ) ;
} ;
this . _addAutoshape = function ( isstart , type ) {
if ( this . api ) {
if ( isstart ) {
this . api . asc _startAddShape ( type ) ;
$ ( document . body ) . on ( 'mouseup' , checkInsertAutoshape ) ;
} else {
this . api . asc _endAddShape ( ) ;
$ ( document . body ) . off ( 'mouseup' , checkInsertAutoshape ) ;
}
}
} ;
this . onApiEndAddShape = function ( ) {
if ( this . toolbar . btnInsertShape . pressed ) this . toolbar . btnInsertShape . toggle ( false , true ) ;
if ( this . toolbar . btnInsertText . pressed ) this . toolbar . btnInsertText . toggle ( false , true ) ;
$ ( document . body ) . off ( 'mouseup' , checkInsertAutoshape ) ;
} ;
} ,
onLaunch : function ( ) {
// Create toolbar view
this . toolbar = this . createView ( 'Toolbar' ) ;
this . toolbar . on ( 'render:after' , _ . bind ( this . onToolbarAfterRender , this ) ) ;
} ,
onToolbarAfterRender : function ( toolbar ) {
var me = this ;
/ * *
* UI Events
* /
toolbar . btnNewDocument . on ( 'click' , _ . bind ( this . onNewDocument , this ) ) ;
toolbar . btnOpenDocument . on ( 'click' , _ . bind ( this . onOpenDocument , this ) ) ;
toolbar . btnPrint . on ( 'click' , _ . bind ( this . onPrint , this ) ) ;
toolbar . btnSave . on ( 'click' , _ . bind ( this . onSave , this ) ) ;
toolbar . btnUndo . on ( 'click' , _ . bind ( this . onUndo , this ) ) ;
toolbar . btnRedo . on ( 'click' , _ . bind ( this . onRedo , this ) ) ;
toolbar . btnCopy . on ( 'click' , _ . bind ( this . onCopyPaste , this , true ) ) ;
toolbar . btnPaste . on ( 'click' , _ . bind ( this . onCopyPaste , this , false ) ) ;
toolbar . btnIncFontSize . on ( 'click' , _ . bind ( this . onIncreaseFontSize , this ) ) ;
toolbar . btnDecFontSize . on ( 'click' , _ . bind ( this . onDecreaseFontSize , this ) ) ;
toolbar . btnBold . on ( 'click' , _ . bind ( this . onBold , this ) ) ;
toolbar . btnItalic . on ( 'click' , _ . bind ( this . onItalic , this ) ) ;
toolbar . btnUnderline . on ( 'click' , _ . bind ( this . onUnderline , this ) ) ;
toolbar . btnTextColor . on ( 'click' , _ . bind ( this . onTextColor , this ) ) ;
toolbar . btnBackColor . on ( 'click' , _ . bind ( this . onBackColor , this ) ) ;
toolbar . mnuTextColorPicker . on ( 'select' , _ . bind ( this . onTextColorSelect , this ) ) ;
toolbar . mnuBackColorPicker . on ( 'select' , _ . bind ( this . onBackColorSelect , this ) ) ;
toolbar . btnBorders . on ( 'click' , _ . bind ( this . onBorders , this ) ) ;
toolbar . btnBorders . menu . on ( 'item:click' , _ . bind ( this . onBordersMenu , this ) ) ;
toolbar . mnuBorderWidth . on ( 'item:toggle' , _ . bind ( this . onBordersWidth , this ) ) ;
toolbar . mnuBorderColorPicker . on ( 'select' , _ . bind ( this . onBordersColor , this ) ) ;
toolbar . btnAlignLeft . on ( 'click' , _ . bind ( this . onHorizontalAlign , this , 'left' ) ) ;
toolbar . btnAlignCenter . on ( 'click' , _ . bind ( this . onHorizontalAlign , this , 'center' ) ) ;
toolbar . btnAlignRight . on ( 'click' , _ . bind ( this . onHorizontalAlign , this , 'right' ) ) ;
toolbar . btnAlignJust . on ( 'click' , _ . bind ( this . onHorizontalAlign , this , 'justify' ) ) ;
toolbar . btnHorizontalAlign . menu . on ( 'item:click' , _ . bind ( this . onHorizontalAlignMenu , this ) ) ;
toolbar . btnVerticalAlign . menu . on ( 'item:click' , _ . bind ( this . onVerticalAlignMenu , this ) ) ;
toolbar . btnMerge . on ( 'click' , _ . bind ( this . onMergeCellsMenu , this , toolbar . btnMerge . menu , toolbar . btnMerge . menu . items [ 0 ] ) ) ;
toolbar . btnMerge . menu . on ( 'item:click' , _ . bind ( this . onMergeCellsMenu , this ) ) ;
toolbar . btnAlignTop . on ( 'click' , _ . bind ( this . onVerticalAlign , this , 'top' ) ) ;
toolbar . btnAlignMiddle . on ( 'click' , _ . bind ( this . onVerticalAlign , this , 'center' ) ) ;
toolbar . btnAlignBottom . on ( 'click' , _ . bind ( this . onVerticalAlign , this , 'bottom' ) ) ;
toolbar . btnWrap . on ( 'click' , _ . bind ( this . onWrap , this ) ) ;
toolbar . btnTextOrient . menu . on ( 'item:click' , _ . bind ( this . onTextOrientationMenu , this ) ) ;
toolbar . btnInsertImage . menu . on ( 'item:click' , _ . bind ( this . onInsertImageMenu , this ) ) ;
toolbar . btnInsertHyperlink . on ( 'click' , _ . bind ( this . onHyperlink , this ) ) ;
toolbar . btnInsertChart . on ( 'click' , _ . bind ( this . onInsertChart , this ) ) ;
toolbar . btnEditChart . on ( 'click' , _ . bind ( this . onInsertChart , this ) ) ;
toolbar . btnInsertText . on ( 'click' , _ . bind ( this . onBtnInsertTextClick , this ) ) ;
toolbar . btnInsertText . menu . on ( 'item:click' , _ . bind ( this . onInsertTextClick , this ) ) ;
toolbar . btnInsertShape . menu . on ( 'hide:after' , _ . bind ( this . onInsertShapeHide , this ) ) ;
2016-05-05 14:38:57 +00:00
toolbar . btnSortDown . on ( 'click' , _ . bind ( this . onSortType , this , Asc . c _oAscSortOptions . Ascending ) ) ;
toolbar . btnSortUp . on ( 'click' , _ . bind ( this . onSortType , this , Asc . c _oAscSortOptions . Descending ) ) ;
toolbar . mnuitemSortAZ . on ( 'click' , _ . bind ( this . onSortType , this , Asc . c _oAscSortOptions . Ascending ) ) ;
toolbar . mnuitemSortZA . on ( 'click' , _ . bind ( this . onSortType , this , Asc . c _oAscSortOptions . Descending ) ) ;
2016-03-11 00:48:53 +00:00
toolbar . btnSetAutofilter . on ( 'click' , _ . bind ( this . onAutoFilter , this ) ) ;
toolbar . mnuitemAutoFilter . on ( 'click' , _ . bind ( this . onAutoFilter , this ) ) ;
toolbar . btnClearAutofilter . on ( 'click' , _ . bind ( this . onClearFilter , this ) ) ;
toolbar . mnuitemClearFilter . on ( 'click' , _ . bind ( this . onClearFilter , this ) ) ;
toolbar . btnSearch . on ( 'click' , _ . bind ( this . onSearch , this ) ) ;
toolbar . btnTableTemplate . menu . on ( 'show:after' , _ . bind ( this . onTableTplMenuOpen , this ) ) ;
toolbar . btnPercentStyle . on ( 'click' , _ . bind ( this . onNumberFormat , this ) ) ;
toolbar . btnCurrencyStyle . on ( 'click' , _ . bind ( this . onNumberFormat , this ) ) ;
toolbar . btnDecDecimal . on ( 'click' , _ . bind ( this . onDecrement , this ) ) ;
toolbar . btnIncDecimal . on ( 'click' , _ . bind ( this . onIncrement , this ) ) ;
toolbar . btnInsertFormula . on ( 'click' , _ . bind ( this . onInsertFormulaMenu , this ) ) ;
toolbar . btnSettings . on ( 'click' , _ . bind ( this . onAdvSettingsClick , this ) ) ;
toolbar . btnInsertFormula . menu . on ( 'item:click' , _ . bind ( this . onInsertFormulaMenu , this ) ) ;
toolbar . btnNamedRange . menu . on ( 'item:click' , _ . bind ( this . onNamedRangeMenu , this ) ) ;
toolbar . btnNamedRange . menu . on ( 'show:after' , _ . bind ( this . onNamedRangeMenuOpen , this ) ) ;
toolbar . btnClearStyle . menu . on ( 'item:click' , _ . bind ( this . onClearStyleMenu , this ) ) ;
toolbar . btnAddCell . menu . on ( 'item:click' , _ . bind ( this . onCellInsertMenu , this ) ) ;
toolbar . btnCopyStyle . on ( 'toggle' , _ . bind ( this . onCopyStyleToggle , this ) ) ;
toolbar . btnDeleteCell . menu . on ( 'item:click' , _ . bind ( this . onCellDeleteMenu , this ) ) ;
toolbar . btnColorSchemas . menu . on ( 'item:click' , _ . bind ( this . onColorSchemaClick , this ) ) ;
toolbar . cmbFontName . on ( 'selected' , _ . bind ( this . onFontNameSelect , this ) ) ;
toolbar . cmbFontName . on ( 'show:after' , _ . bind ( this . onComboOpen , this , true ) ) ;
toolbar . cmbFontName . on ( 'hide:after' , _ . bind ( this . onHideMenus , this ) ) ;
toolbar . cmbFontName . on ( 'combo:blur' , _ . bind ( this . onComboBlur , this ) ) ;
toolbar . cmbFontName . on ( 'combo:focusin' , _ . bind ( this . onComboOpen , this , false ) ) ;
toolbar . cmbFontSize . on ( 'selected' , _ . bind ( this . onFontSizeSelect , this ) ) ;
toolbar . cmbFontSize . on ( 'changed:before' , _ . bind ( this . onFontSizeChanged , this , true ) ) ;
toolbar . cmbFontSize . on ( 'changed:after' , _ . bind ( this . onFontSizeChanged , this , false ) ) ;
toolbar . cmbFontSize . on ( 'show:after' , _ . bind ( this . onComboOpen , this , true ) ) ;
toolbar . cmbFontSize . on ( 'hide:after' , _ . bind ( this . onHideMenus , this ) ) ;
toolbar . cmbFontSize . on ( 'combo:blur' , _ . bind ( this . onComboBlur , this ) ) ;
toolbar . cmbFontSize . on ( 'combo:focusin' , _ . bind ( this . onComboOpen , this , false ) ) ;
if ( toolbar . mnuZoomIn ) toolbar . mnuZoomIn . on ( 'click' , _ . bind ( this . onZoomInClick , this ) ) ;
if ( toolbar . mnuZoomOut ) toolbar . mnuZoomOut . on ( 'click' , _ . bind ( this . onZoomOutClick , this ) ) ;
toolbar . btnShowMode . menu . on ( 'item:click' , _ . bind ( this . onHideMenu , this ) ) ;
toolbar . listStyles . on ( 'click' , _ . bind ( this . onListStyleSelect , this ) ) ;
toolbar . btnNumberFormat . menu . on ( 'item:click' , _ . bind ( this . onNumberFormatMenu , this ) ) ;
toolbar . btnCurrencyStyle . menu . on ( 'item:click' , _ . bind ( this . onNumberFormatMenu , this ) ) ;
toolbar . mnuitemCompactToolbar . on ( 'toggle' , _ . bind ( this . onChangeViewMode , this ) ) ;
$ ( '#id-toolbar-menu-new-fontcolor' ) . on ( 'click' , _ . bind ( this . onNewTextColor , this ) ) ;
$ ( '#id-toolbar-menu-new-paracolor' ) . on ( 'click' , _ . bind ( this . onNewBackColor , this ) ) ;
$ ( '#id-toolbar-menu-new-bordercolor' ) . on ( 'click' , _ . bind ( this . onNewBorderColor , this ) ) ;
_ . each ( toolbar . btnNumberFormat . menu . items , function ( item ) {
if ( item . menu ) {
item . menu . on ( 'item:click' , _ . bind ( me . onNumberFormatMenu , me ) ) ;
}
} ) ;
this . onSetupCopyStyleButton ( ) ;
} ,
setApi : function ( api ) {
this . api = api ;
this . api . asc _registerCallback ( 'asc_onInitTablePictures' , _ . bind ( this . onApiInitTableTemplates , this ) ) ;
this . api . asc _registerCallback ( 'asc_onInitEditorStyles' , _ . bind ( this . onApiInitEditorStyles , this ) ) ;
this . api . asc _registerCallback ( 'asc_onCoAuthoringDisconnect' , _ . bind ( this . onApiCoAuthoringDisconnect , this ) ) ;
Common . NotificationCenter . on ( 'api:disconnect' , _ . bind ( this . onApiCoAuthoringDisconnect , this ) ) ;
this . api . asc _registerCallback ( 'asc_onLockDefNameManager' , _ . bind ( this . onLockDefNameManager , this ) ) ;
} ,
onNewDocument : function ( btn , e ) {
if ( this . api )
this . api . asc _openNewDocument ( ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'New Document' ) ;
} ,
onOpenDocument : function ( btn , e ) {
if ( this . api )
this . api . asc _loadDocumentFromDisk ( ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Open Document' ) ;
} ,
onPrint : function ( e ) {
2016-04-04 08:17:21 +00:00
Common . NotificationCenter . trigger ( 'print' , this . toolbar ) ;
2016-03-11 00:48:53 +00:00
} ,
onSave : function ( e ) {
if ( this . api ) {
var isModified = this . api . asc _isDocumentCanSave ( ) ;
var isSyncButton = $ ( '.btn-icon' , this . toolbar . btnSave . cmpEl ) . hasClass ( 'btn-synch' ) ;
if ( ! isModified && ! isSyncButton )
return ;
this . api . asc _Save ( ) ;
}
// Common.NotificationCenter.trigger('edit:complete', this.toolbar);
Common . component . Analytics . trackEvent ( 'Save' ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Save' ) ;
} ,
onUndo : function ( btn , e ) {
if ( this . api )
this . api . asc _Undo ( ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Undo' ) ;
} ,
onRedo : function ( btn , e ) {
if ( this . api )
this . api . asc _Redo ( ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Redo' ) ;
} ,
onCopyPaste : function ( copy , e ) {
var me = this ;
if ( me . api ) {
if ( typeof window [ 'AscDesktopEditor' ] === 'object' ) {
copy ? me . api . asc _Copy ( ) : me . api . asc _Paste ( ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
} else {
var value = Common . localStorage . getItem ( "sse-hide-copywarning" ) ;
if ( ! ( value && parseInt ( value ) == 1 ) ) {
( new Common . Views . CopyWarningDialog ( {
handler : function ( dontshow ) {
copy ? me . api . asc _Copy ( ) : me . api . asc _Paste ( ) ;
if ( dontshow ) Common . localStorage . setItem ( "sse-hide-copywarning" , 1 ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
}
} ) ) . show ( ) ;
} else {
copy ? me . api . asc _Copy ( ) : me . api . asc _Paste ( ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
}
}
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Copy Warning' ) ;
} else {
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
}
} ,
onIncreaseFontSize : function ( e ) {
if ( this . api )
this . api . asc _increaseFontSize ( ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar , { restorefocus : true } ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Font Size' ) ;
} ,
onDecreaseFontSize : function ( e ) {
if ( this . api )
this . api . asc _decreaseFontSize ( ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar , { restorefocus : true } ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Font Size' ) ;
} ,
onBold : function ( btn , e ) {
this . _state . bold = undefined ;
if ( this . api )
this . api . asc _setCellBold ( btn . pressed ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar , { restorefocus : true } ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Bold' ) ;
} ,
onItalic : function ( btn , e ) {
this . _state . italic = undefined ;
if ( this . api )
this . api . asc _setCellItalic ( btn . pressed ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar , { restorefocus : true } ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Italic' ) ;
} ,
onUnderline : function ( btn , e ) {
this . _state . underline = undefined ;
if ( this . api )
this . api . asc _setCellUnderline ( btn . pressed ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar , { restorefocus : true } ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Underline' ) ;
} ,
onTextColor : function ( ) {
this . toolbar . mnuTextColorPicker . trigger ( 'select' , this . toolbar . mnuTextColorPicker , this . toolbar . mnuTextColorPicker . currentColor , true ) ;
} ,
onBackColor : function ( ) {
this . toolbar . mnuBackColorPicker . trigger ( 'select' , this . toolbar . mnuBackColorPicker , this . toolbar . mnuBackColorPicker . currentColor , true ) ;
} ,
onTextColorSelect : function ( picker , color , fromBtn ) {
this . _state . clrtext _asccolor = this . _state . clrtext = undefined ;
var clr = ( typeof ( color ) == 'object' ) ? color . color : color ;
this . toolbar . btnTextColor . currentColor = color ;
$ ( '.btn-color-value-line' , this . toolbar . btnTextColor . cmpEl ) . css ( 'background-color' , '#' + clr ) ;
this . toolbar . mnuTextColorPicker . currentColor = color ;
if ( this . api ) {
this . toolbar . btnTextColor . ischanged = ( fromBtn !== true ) ;
this . api . asc _setCellTextColor ( Common . Utils . ThemeColor . getRgbColor ( color ) ) ;
this . toolbar . btnTextColor . ischanged = false ;
}
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar , { restorefocus : true } ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Text Color' ) ;
} ,
onBackColorSelect : function ( picker , color , fromBtn ) {
this . _state . clrshd _asccolor = this . _state . clrback = undefined ;
var clr = ( typeof ( color ) == 'object' ) ? color . color : color ;
this . toolbar . btnBackColor . currentColor = color ;
$ ( '.btn-color-value-line' , this . toolbar . btnBackColor . cmpEl ) . css ( 'background-color' , clr == 'transparent' ? 'transparent' : '#' + clr ) ;
this . toolbar . mnuBackColorPicker . currentColor = color ;
if ( this . api ) {
this . toolbar . btnBackColor . ischanged = ( fromBtn !== true ) ;
this . api . asc _setCellBackgroundColor ( color == 'transparent' ? null : Common . Utils . ThemeColor . getRgbColor ( color ) ) ;
this . toolbar . btnBackColor . ischanged = false ;
}
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Background Color' ) ;
} ,
onNewTextColor : function ( picker , color ) {
this . toolbar . mnuTextColorPicker . addNewColor ( ) ;
} ,
onNewBackColor : function ( picker , color ) {
this . toolbar . mnuBackColorPicker . addNewColor ( ) ;
} ,
onNewBorderColor : function ( picker , color ) {
this . toolbar . btnBorders . menu . hide ( ) ;
this . toolbar . btnBorders . toggle ( false , true ) ;
this . toolbar . mnuBorderColorPicker . addNewColor ( ) ;
} ,
onBorders : function ( btn ) {
var menuItem ;
_ . each ( btn . menu . items , function ( item ) {
if ( btn . options . borderId == item . options . borderId ) {
menuItem = item ;
return false ;
}
} ) ;
if ( menuItem ) {
this . onBordersMenu ( btn . menu , menuItem ) ;
}
} ,
onBordersMenu : function ( menu , item ) {
var me = this ;
if ( me . api && ! _ . isUndefined ( item . options . borderId ) ) {
var btnBorders = me . toolbar . btnBorders ,
new _borders = [ ] ,
bordersWidth = btnBorders . options . borderswidth ,
bordersColor = btnBorders . options . borderscolor ;
if ( btnBorders . rendered ) {
var iconEl = $ ( '.btn-icon' , btnBorders . cmpEl ) ;
if ( iconEl ) {
iconEl . removeClass ( btnBorders . options . icls ) ;
btnBorders . options . icls = item . options . icls ;
iconEl . addClass ( btnBorders . options . icls ) ;
}
}
btnBorders . options . borderId = item . options . borderId ;
if ( item . options . borderId == 'inner' ) {
2016-04-05 11:52:34 +00:00
new _borders [ Asc . c _oAscBorderOptions . InnerV ] = new Asc . asc _CBorder ( bordersWidth , bordersColor ) ;
new _borders [ Asc . c _oAscBorderOptions . InnerH ] = new Asc . asc _CBorder ( bordersWidth , bordersColor ) ;
2016-03-11 00:48:53 +00:00
} else if ( item . options . borderId == 'all' ) {
2016-04-05 11:52:34 +00:00
new _borders [ Asc . c _oAscBorderOptions . InnerV ] = new Asc . asc _CBorder ( bordersWidth , bordersColor ) ;
new _borders [ Asc . c _oAscBorderOptions . InnerH ] = new Asc . asc _CBorder ( bordersWidth , bordersColor ) ;
new _borders [ Asc . c _oAscBorderOptions . Left ] = new Asc . asc _CBorder ( bordersWidth , bordersColor ) ;
new _borders [ Asc . c _oAscBorderOptions . Top ] = new Asc . asc _CBorder ( bordersWidth , bordersColor ) ;
new _borders [ Asc . c _oAscBorderOptions . Right ] = new Asc . asc _CBorder ( bordersWidth , bordersColor ) ;
new _borders [ Asc . c _oAscBorderOptions . Bottom ] = new Asc . asc _CBorder ( bordersWidth , bordersColor ) ;
2016-03-11 00:48:53 +00:00
} else if ( item . options . borderId == 'outer' ) {
2016-04-05 11:52:34 +00:00
new _borders [ Asc . c _oAscBorderOptions . Left ] = new Asc . asc _CBorder ( bordersWidth , bordersColor ) ;
new _borders [ Asc . c _oAscBorderOptions . Top ] = new Asc . asc _CBorder ( bordersWidth , bordersColor ) ;
new _borders [ Asc . c _oAscBorderOptions . Right ] = new Asc . asc _CBorder ( bordersWidth , bordersColor ) ;
new _borders [ Asc . c _oAscBorderOptions . Bottom ] = new Asc . asc _CBorder ( bordersWidth , bordersColor ) ;
2016-03-11 00:48:53 +00:00
} else if ( item . options . borderId != 'none' ) {
new _borders [ item . options . borderId ] = new Asc . asc _CBorder ( bordersWidth , bordersColor ) ;
}
me . api . asc _setCellBorders ( new _borders ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Borders' ) ;
}
} ,
onBordersWidth : function ( menu , item , state ) {
if ( state ) {
$ ( '#id-toolbar-mnu-item-border-width .menu-item-icon' ) . css ( 'border-width' , ( item . value == 'thin' ? 1 : ( item . value == 'medium' ? 2 : 3 ) ) + 'px' ) ;
this . toolbar . btnBorders . options . borderswidth = item . value ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Border Width' ) ;
}
} ,
onBordersColor : function ( picker , color ) {
$ ( '#id-toolbar-mnu-item-border-color .menu-item-icon' ) . css ( 'border-color' , '#' + ( ( typeof ( color ) == 'object' ) ? color . color : color ) ) ;
this . toolbar . mnuBorderColor . onUnHoverItem ( ) ;
this . toolbar . btnBorders . options . borderscolor = Common . Utils . ThemeColor . getRgbColor ( color ) ;
this . toolbar . mnuBorderColorPicker . currentColor = color ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Border Color' ) ;
} ,
onHorizontalAlign : function ( type , btn , e ) {
this . _state . pralign = undefined ;
if ( this . api ) {
this . api . asc _setCellAlign ( ! btn . pressed ? 'left' : type ) ;
this . toolbar . btnWrap . allowDepress = ! ( type == 'justify' ) ;
}
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Horizontal align' ) ;
} ,
onHorizontalAlignMenu : function ( menu , item ) {
var btnHorizontalAlign = this . toolbar . btnHorizontalAlign ,
iconEl = $ ( '.btn-icon' , btnHorizontalAlign . cmpEl ) ;
if ( iconEl ) {
iconEl . removeClass ( btnHorizontalAlign . options . icls ) ;
btnHorizontalAlign . options . icls = ! item . checked ? 'btn-align-left' : item . options . icls ;
iconEl . addClass ( btnHorizontalAlign . options . icls ) ;
}
this . _state . pralign = undefined ;
if ( this . api )
this . api . asc _setCellAlign ( ! item . checked ? 'left' : item . value ) ;
this . toolbar . btnWrap . allowDepress = ! ( item . value == 'justify' ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Horizontal Align' ) ;
} ,
onVerticalAlignMenu : function ( menu , item ) {
var btnVerticalAlign = this . toolbar . btnVerticalAlign ,
iconEl = $ ( '.btn-icon' , btnVerticalAlign . cmpEl ) ;
if ( iconEl ) {
iconEl . removeClass ( btnVerticalAlign . options . icls ) ;
btnVerticalAlign . options . icls = ! item . checked ? 'btn-valign-bottom' : item . options . icls ;
iconEl . addClass ( btnVerticalAlign . options . icls ) ;
}
this . _state . valign = undefined ;
if ( this . api )
this . api . asc _setCellVertAlign ( ! item . checked ? 'bottom' : item . value ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Vertical Align' ) ;
} ,
onVerticalAlign : function ( type , btn , e ) {
this . _state . valign = undefined ;
if ( this . api ) {
this . api . asc _setCellVertAlign ( ! btn . pressed ? 'bottom' : type ) ;
}
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Vertical align' ) ;
} ,
onMergeCellsMenu : function ( menu , item ) {
var me = this ;
function doMergeCells ( how ) {
me . _state . merge = undefined ;
me . api . asc _mergeCells ( how ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Merge' ) ;
}
if ( me . api ) {
var merged = me . api . asc _getCellInfo ( ) . asc _getFlags ( ) . asc _getMerge ( ) ;
if ( ! merged && me . api . asc _mergeCellsDataLost ( item . value ) ) {
Common . UI . warning ( {
msg : me . warnMergeLostData ,
buttons : [ 'yes' , 'no' ] ,
primary : 'yes' ,
callback : function ( btn ) {
if ( btn == 'yes' ) {
doMergeCells ( item . value ) ;
} else {
me . toolbar . btnMerge . toggle ( false , true ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Merge' ) ;
}
}
} ) ;
} else {
doMergeCells ( item . value ) ;
}
}
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Merge cells' ) ;
} ,
onWrap : function ( btn , e ) {
this . _state . wrap = undefined ;
if ( this . api )
this . api . asc _setCellTextWrap ( btn . pressed ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Wrap' ) ;
} ,
onTextOrientationMenu : function ( menu , item ) {
var angle = 0 ;
switch ( item . value ) {
case 'countcw' : angle = 45 ; break ;
case 'clockwise' : angle = - 45 ; break ;
case 'rotateup' : angle = 90 ; break ;
case 'rotatedown' : angle = - 90 ; break ;
}
this . _state . angle = undefined ;
if ( this . api )
this . api . asc _setCellAngle ( angle ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Text orientation' ) ;
} ,
onInsertImageMenu : function ( menu , item , e ) {
if ( item . value === 'file' ) {
this . toolbar . fireEvent ( 'insertimage' , this . toolbar ) ;
if ( this . api )
this . api . asc _addImage ( ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Image' ) ;
} else {
var me = this ;
( new Common . Views . ImageFromUrlDialog ( {
handler : function ( result , value ) {
if ( result == 'ok' ) {
if ( me . api ) {
var checkUrl = value . replace ( /\s/g , '' ) ;
if ( ! _ . isEmpty ( checkUrl ) ) {
me . toolbar . fireEvent ( 'insertimage' , me . toolbar ) ;
me . api . asc _addImageDrawingObject ( checkUrl ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Image' ) ;
} else {
Common . UI . warning ( {
msg : this . textEmptyImgUrl
} ) ;
}
}
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
}
}
} ) ) . show ( ) ;
}
} ,
onHyperlink : function ( btn ) {
var me = this ;
var win ,
props ;
if ( me . api ) {
var wc = me . api . asc _getWorksheetsCount ( ) ,
i = - 1 ,
items = [ ] ;
while ( ++ i < wc ) {
if ( ! this . api . asc _isWorksheetHidden ( i ) ) {
items . push ( { displayValue : me . api . asc _getWorksheetName ( i ) , value : me . api . asc _getWorksheetName ( i ) } ) ;
}
}
var handlerDlg = function ( dlg , result ) {
if ( result == 'ok' ) {
props = dlg . getSettings ( ) ;
me . api . asc _insertHyperlink ( props ) ;
}
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
} ;
var cell = me . api . asc _getCellInfo ( ) ,
seltype = cell . asc _getFlags ( ) . asc _getSelectionType ( ) ;
props = cell . asc _getHyperlink ( ) ;
win = new SSE . Views . HyperlinkSettingsDialog ( {
api : me . api ,
handler : handlerDlg
} ) ;
win . show ( ) ;
win . setSettings ( {
sheets : items ,
currentSheet : me . api . asc _getWorksheetName ( me . api . asc _getActiveWorksheetIndex ( ) ) ,
props : props ,
text : cell . asc _getText ( ) ,
isLock : cell . asc _getFlags ( ) . asc _getLockText ( ) ,
2016-04-05 11:52:34 +00:00
allowInternal : ( seltype !== Asc . c _oAscSelectionType . RangeImage && seltype !== Asc . c _oAscSelectionType . RangeShape &&
seltype !== Asc . c _oAscSelectionType . RangeShapeText && seltype !== Asc . c _oAscSelectionType . RangeChart &&
seltype !== Asc . c _oAscSelectionType . RangeChartText )
2016-03-11 00:48:53 +00:00
} ) ;
}
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Add Hyperlink' ) ;
} ,
onInsertChart : function ( btn ) {
if ( ! this . editMode ) return ;
var me = this , info = me . api . asc _getCellInfo ( ) ;
2016-04-05 11:52:34 +00:00
if ( info . asc _getFlags ( ) . asc _getSelectionType ( ) != Asc . c _oAscSelectionType . RangeImage ) {
2016-03-11 00:48:53 +00:00
var win , props ;
if ( me . api ) {
props = me . api . asc _getChartObject ( ) ;
if ( props ) {
2016-04-05 11:52:34 +00:00
var ischartedit = ( me . toolbar . mode . isEditDiagram || info . asc _getFlags ( ) . asc _getSelectionType ( ) == Asc . c _oAscSelectionType . RangeChart || info . asc _getFlags ( ) . asc _getSelectionType ( ) == Asc . c _oAscSelectionType . RangeChartText ) ;
2016-03-11 00:48:53 +00:00
( new SSE . Views . ChartSettingsDlg (
{
chartSettings : props ,
api : me . api ,
handler : function ( result , value ) {
if ( result == 'ok' ) {
if ( me . api ) {
( ischartedit ) ? me . api . asc _editChartDrawingObject ( value . chartSettings ) : me . api . asc _addChartDrawingObject ( value . chartSettings ) ;
}
}
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
}
} ) ) . show ( ) ;
}
}
}
} ,
onBtnInsertTextClick : function ( btn , e ) {
if ( this . api )
this . _addAutoshape ( btn . pressed , 'textRect' ) ;
if ( this . toolbar . btnInsertShape . pressed )
this . toolbar . btnInsertShape . toggle ( false , true ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar , this . toolbar . btnInsertShape ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Add Text' ) ;
} ,
onInsertTextClick : function ( menu , item , e ) {
if ( item . value === 'text' ) {
if ( this . api )
this . _addAutoshape ( true , 'textRect' ) ;
this . toolbar . btnInsertText . toggle ( true , true ) ;
if ( this . toolbar . btnInsertShape . pressed )
this . toolbar . btnInsertShape . toggle ( false , true ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar , this . toolbar . btnInsertShape ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Add Text' ) ;
}
} ,
onInsertShapeHide : function ( btn , e ) {
if ( this . toolbar . btnInsertShape . pressed && ! this . _isAddingShape ) {
this . toolbar . btnInsertShape . toggle ( false , true ) ;
}
this . _isAddingShape = false ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
} ,
onSortType : function ( type , btn ) {
if ( this . api )
this . api . asc _sortColFilter ( type , '' ) ;
} ,
onSearch : function ( type , btn ) {
this . getApplication ( ) . getController ( 'LeftMenu' ) . showSearchDlg ( true ) ;
} ,
onAutoFilter : function ( btn ) {
var state = this . _state . filter ;
this . _state . filter = undefined ;
if ( this . api ) {
if ( this . _state . tablename || state )
2016-04-05 11:52:34 +00:00
this . api . asc _changeAutoFilter ( this . _state . tablename , Asc . c _oAscChangeFilterOptions . filter , ! state ) ;
2016-03-11 00:48:53 +00:00
else
this . api . asc _addAutoFilter ( ) ;
}
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Auto filter' ) ;
} ,
onClearFilter : function ( btn ) {
if ( this . api )
this . api . asc _clearFilter ( ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Clear filter' ) ;
} ,
onNumberFormat : function ( btn ) {
if ( this . api ) {
var format = btn . options . formatId ;
if ( btn . options . formatId == this . toolbar . ascFormatOptions . Accounting ) {
var value = Common . localStorage . getItem ( "sse-settings-reg-settings" ) ;
value = ( value !== null ) ? parseInt ( value ) : ( ( this . toolbar . mode . lang ) ? parseInt ( Common . util . LanguageInfo . getLocalLanguageCode ( this . toolbar . mode . lang ) ) : 0x0409 ) ;
format = this . api . asc _getLocaleCurrency ( value ) ;
}
this . api . asc _setCellFormat ( format ) ;
}
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Number Format' ) ;
} ,
onNumberFormatMenu : function ( menu , item ) {
if ( this . api )
this . api . asc _setCellFormat ( item . value ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Number Format' ) ;
} ,
onDecrement : function ( btn ) {
if ( this . api )
this . api . asc _decreaseCellDigitNumbers ( ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Decrement' ) ;
} ,
onIncrement : function ( btn ) {
if ( this . api )
this . api . asc _increaseCellDigitNumbers ( ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Increment' ) ;
} ,
onInsertFormulaMenu : function ( menu , item , e ) {
if ( this . api ) {
if ( item . value === 'more' ) {
var controller = this . getApplication ( ) . getController ( 'FormulaDialog' ) ;
if ( controller ) {
controller . showDialog ( ) ;
}
} else {
item . value = item . value || 'SUM' ;
2016-04-05 11:52:34 +00:00
this . api . asc _insertFormula ( this . api . asc _getFormulaLocaleName ( item . value ) , Asc . c _oAscPopUpSelectorType . Func , true ) ;
2016-03-11 00:48:53 +00:00
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Insert formula' ) ;
}
}
} ,
onNamedRangeMenu : function ( menu , item , e ) {
if ( this . api ) {
var me = this ;
if ( item . value === 'paste' ) {
( new SSE . Views . NamedRangePasteDlg ( {
handler : function ( result , settings ) {
if ( result == 'ok' && settings ) {
2016-04-05 11:52:34 +00:00
me . api . asc _insertFormula ( settings . asc _getName ( ) , settings . asc _getIsTable ( ) ? Asc . c _oAscPopUpSelectorType . Table : Asc . c _oAscPopUpSelectorType . Range , false ) ;
2016-03-11 00:48:53 +00:00
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Paste Named Range' ) ;
}
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
} ,
2016-04-05 11:52:34 +00:00
ranges : me . api . asc _getDefinedNames ( Asc . c _oAscGetDefinedNamesList . WorksheetWorkbook ) // names only for current sheet and workbook
2016-03-11 00:48:53 +00:00
} ) ) . show ( ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Paste Named Range' ) ;
} else {
var wc = me . api . asc _getWorksheetsCount ( ) ,
i = - 1 ,
items = [ ] , sheetNames = [ ] ;
if ( item . value === 'new' ) {
if ( this . _state . namedrange _locked ) {
Common . NotificationCenter . trigger ( 'namedrange:locked' ) ;
return ;
}
while ( ++ i < wc ) {
if ( ! this . api . asc _isWorksheetHidden ( i ) ) {
items . push ( { displayValue : me . api . asc _getWorksheetName ( i ) , value : i } ) ;
}
}
( new SSE . Views . NamedRangeEditDlg ( {
api : me . api ,
handler : function ( result , settings ) {
if ( result == 'ok' && settings ) {
me . api . asc _setDefinedNames ( settings ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'New Named Range' ) ;
}
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
} ,
sheets : items ,
props : me . api . asc _getDefaultDefinedName ( ) ,
isEdit : false
} ) ) . show ( ) ;
} else {
var cellEditor = this . getApplication ( ) . getController ( 'CellEditor' ) ;
while ( ++ i < wc ) {
if ( ! this . api . asc _isWorksheetHidden ( i ) ) {
sheetNames [ i ] = me . api . asc _getWorksheetName ( i ) ;
items . push ( { displayValue : sheetNames [ i ] , value : i } ) ;
}
}
( new SSE . Views . NameManagerDlg ( {
api : me . api ,
handler : function ( result ) {
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Name Manager' ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
} ,
locked : me . _state . namedrange _locked ,
sheets : items ,
sheetNames : sheetNames ,
2016-04-05 11:52:34 +00:00
ranges : me . api . asc _getDefinedNames ( Asc . c _oAscGetDefinedNamesList . All ) ,
2016-03-11 00:48:53 +00:00
props : me . api . asc _getDefaultDefinedName ( ) ,
sort : cellEditor . rangeListSort
} ) ) . on ( 'close' , function ( win ) {
cellEditor . rangeListSort = win . getSettings ( ) ;
} ) . show ( ) ;
}
}
}
} ,
onNamedRangeMenuOpen : function ( ) {
if ( this . api ) {
2016-04-05 11:52:34 +00:00
var names = this . api . asc _getDefinedNames ( Asc . c _oAscGetDefinedNamesList . WorksheetWorkbook ) ;
2016-03-11 00:48:53 +00:00
this . toolbar . btnNamedRange . menu . items [ 2 ] . setDisabled ( names . length < 1 ) ;
}
} ,
onClearStyleMenu : function ( menu , item , e ) {
if ( this . api )
this . api . asc _emptyCells ( item . value ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Clear' ) ;
} ,
onCopyStyleToggle : function ( btn , state , e ) {
if ( this . api )
this . api . asc _formatPainter ( state ? 1 : 0 ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
this . modeAlwaysSetStyle = state ;
} ,
onCellInsertMenu : function ( menu , item , e ) {
if ( this . api )
this . api . asc _insertCells ( item . value ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Cell insert' ) ;
} ,
onCellDeleteMenu : function ( menu , item , e ) {
if ( this . api )
this . api . asc _deleteCells ( item . value ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Cell delete' ) ;
} ,
onColorSchemaClick : function ( menu , item ) {
if ( this . api ) {
this . api . asc _ChangeColorScheme ( item . value ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Color Scheme' ) ;
}
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
} ,
onComboBlur : function ( ) {
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
} ,
onFontNameSelect : function ( combo , record ) {
if ( this . api ) {
if ( record . isNewFont ) {
Common . UI . warning ( {
width : 500 ,
closable : false ,
msg : this . confirmAddFontName ,
buttons : [ 'yes' , 'no' ] ,
primary : 'yes' ,
callback : _ . bind ( function ( btn ) {
if ( btn == 'yes' ) {
this . api . asc _setCellFontName ( record . name ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Font Name' ) ;
} else {
this . toolbar . cmbFontName . setValue ( this . api . asc _getCellInfo ( ) . asc _getFont ( ) . asc _getName ( ) ) ;
}
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar , { restorefocus : true } ) ;
} , this )
} ) ;
} else {
this . api . asc _setCellFontName ( record . name ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Font Name' ) ;
}
}
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar , { restorefocus : true } ) ;
} ,
onComboOpen : function ( needfocus , combo ) {
_ . delay ( function ( ) {
var input = $ ( 'input' , combo . cmpEl ) . select ( ) ;
if ( needfocus ) input . focus ( ) ;
else if ( ! combo . isMenuOpen ( ) ) input . one ( 'mouseup' , function ( e ) { e . preventDefault ( ) ; } ) ;
} , 10 ) ;
} ,
onFontSizeSelect : function ( combo , record ) {
this . _state . fontsize = undefined ;
if ( this . api )
this . api . asc _setCellFontSize ( record . value ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar , { restorefocus : true } ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Font Size' ) ;
} ,
onFontSizeChanged : function ( before , combo , record , e ) {
var value ,
me = this ;
if ( before ) {
var item = combo . store . findWhere ( {
displayValue : record . value
} ) ;
if ( ! item ) {
value = /^\+?(\d*\.?\d+)$|^\+?(\d+\.?\d*)$/ . exec ( record . value ) ;
if ( ! value ) {
value = this . _getApiTextSize ( ) ;
Common . UI . warning ( {
msg : this . textFontSizeErr ,
callback : function ( ) {
_ . defer ( function ( btn ) {
$ ( 'input' , combo . cmpEl ) . focus ( ) ;
} )
}
} ) ;
combo . setRawValue ( value ) ;
e . preventDefault ( ) ;
return false ;
}
}
} else {
value = parseFloat ( record . value ) ;
value = value > 409 ? 409 :
value < 1 ? 1 : Math . floor ( ( value + 0.4 ) * 2 ) / 2 ;
combo . setRawValue ( value ) ;
this . _state . fontsize = undefined ;
if ( this . api )
this . api . asc _setCellFontSize ( value ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
}
} ,
onAdvSettingsClick : function ( btn , e ) {
this . toolbar . fireEvent ( 'file:settings' , this ) ;
btn . cmpEl . blur ( ) ;
} ,
onZoomInClick : function ( btn ) {
if ( this . api ) {
var f = Math . floor ( this . api . asc _getZoom ( ) * 10 ) / 10 ;
f += . 1 ;
if ( f > 0 && ! ( f > 2. ) ) {
this . api . asc _setZoom ( f ) ;
}
}
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
} ,
onZoomOutClick : function ( btn ) {
if ( this . api ) {
var f = Math . ceil ( this . api . asc _getZoom ( ) * 10 ) / 10 ;
f -= . 1 ;
if ( ! ( f < . 5 ) ) {
this . api . asc _setZoom ( f ) ;
}
}
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
} ,
onHideMenu : function ( menu , item ) {
var params = { } ,
option ;
switch ( item . value ) {
case 'title' : params . title = item . checked ; option = 'sse-hidden-title' ; break ;
case 'formula' : params . formula = item . checked ; option = 'sse-hidden-formula' ; break ;
case 'headings' : params . headings = item . checked ; break ;
case 'gridlines' : params . gridlines = item . checked ; break ;
}
this . hideElements ( params ) ;
option && Common . localStorage . setItem ( option , item . checked ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
} ,
onListStyleSelect : function ( combo , record ) {
this . _state . prstyle = undefined ;
if ( this . api ) {
this . api . asc _setCellStyle ( record . get ( 'name' ) ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Style' ) ;
}
} ,
createDelayedElements : function ( ) {
var me = this ;
this . api . asc _registerCallback ( 'asc_onShowChartDialog' , _ . bind ( this . onApiChartDblClick , this ) ) ;
this . api . asc _registerCallback ( 'asc_onCanUndoChanged' , _ . bind ( this . onApiCanRevert , this , 'undo' ) ) ;
this . api . asc _registerCallback ( 'asc_onCanRedoChanged' , _ . bind ( this . onApiCanRevert , this , 'redo' ) ) ;
this . api . asc _registerCallback ( 'asc_onEditCell' , _ . bind ( this . onApiEditCell , this ) ) ;
this . api . asc _registerCallback ( 'asc_onEndAddShape' , _ . bind ( this . onApiEndAddShape , this ) ) ;
this . api . asc _registerCallback ( 'asc_onZoomChanged' , _ . bind ( this . onApiZoomChange , this ) ) ;
this . api . asc _registerCallback ( 'asc_onSheetsChanged' , _ . bind ( this . onApiSheetChanged , this ) ) ;
this . api . asc _registerCallback ( 'asc_onStopFormatPainter' , _ . bind ( this . onApiStyleChange , this ) ) ;
this . api . asc _registerCallback ( 'asc_onUpdateSheetViewSettings' , _ . bind ( this . onApiSheetChanged , this ) ) ;
Common . util . Shortcuts . delegateShortcuts ( {
shortcuts : {
'command+l,ctrl+l' : function ( e ) {
2016-03-15 10:53:55 +00:00
if ( me . editMode ) {
2016-03-29 14:35:28 +00:00
if ( ! me . api . asc _getCellInfo ( ) . asc _getFormatTableInfo ( ) )
2016-03-15 10:53:55 +00:00
me . _setTableFormat ( me . toolbar . mnuTableTemplatePicker . store . at ( 23 ) . get ( 'name' ) ) ;
}
2016-03-11 00:48:53 +00:00
return false ;
} ,
'command+shift+l,ctrl+shift+l' : function ( e ) {
var state = me . _state . filter ;
me . _state . filter = undefined ;
if ( me . editMode && me . api ) {
if ( me . _state . tablename || state )
2016-04-05 11:52:34 +00:00
me . api . asc _changeAutoFilter ( me . _state . tablename , Asc . c _oAscChangeFilterOptions . filter , ! state ) ;
2016-03-11 00:48:53 +00:00
else
me . api . asc _addAutoFilter ( ) ;
}
return false ;
} ,
'command+s,ctrl+s' : function ( e ) {
me . onSave ( ) ;
e . preventDefault ( ) ;
e . stopPropagation ( ) ;
} ,
'command+k,ctrl+k' : function ( e ) {
if ( me . editMode && ! me . toolbar . mode . isEditMailMerge && ! me . toolbar . mode . isEditDiagram && ! me . api . isCellEdited )
me . onHyperlink ( ) ;
e . preventDefault ( ) ;
}
}
} ) ;
this . wrapOnSelectionChanged = _ . bind ( this . onApiSelectionChanged , this ) ;
this . api . asc _registerCallback ( 'asc_onSelectionChanged' , this . wrapOnSelectionChanged ) ;
this . onApiSelectionChanged ( this . api . asc _getCellInfo ( ) ) ;
this . api . asc _registerCallback ( 'asc_onEditorSelectionChanged' , _ . bind ( this . onApiEditorSelectionChanged , this ) ) ;
this . attachToControlEvents ( ) ;
this . onApiSheetChanged ( ) ;
this . applyFormulaSettings ( ) ;
Common . NotificationCenter . on ( 'cells:range' , _ . bind ( this . onCellsRange , this ) ) ;
} ,
onChangeViewMode : function ( item , compact ) {
var me = this ,
toolbarFull = $ ( '#id-toolbar-full' ) ,
toolbarShort = $ ( '#id-toolbar-short' ) ;
me . toolbar . isCompactView = compact ;
if ( toolbarFull && toolbarShort ) {
me . api . asc _unregisterCallback ( 'asc_onSelectionChanged' , me . wrapOnSelectionChanged ) ;
if ( compact ) {
toolbarShort . css ( {
display : 'table'
} ) ;
toolbarFull . css ( {
display : 'none'
} ) ;
toolbarShort . parent ( ) . css ( {
height : '41px'
} ) ;
me . toolbar . rendererComponents ( 'short' ) ;
} else {
toolbarShort . css ( {
display : 'none'
} ) ;
toolbarFull . css ( {
display : 'table'
} ) ;
toolbarShort . parent ( ) . css ( {
height : '67px'
} ) ;
me . toolbar . rendererComponents ( 'full' ) ;
// layout styles
_ . defer ( function ( ) {
var listStylesVisible = ( me . toolbar . listStyles . rendered ) ;
if ( me . toolbar . listStyles . menuPicker . store . length > 0 && listStylesVisible ) {
me . toolbar . listStyles . fillComboView ( me . toolbar . listStyles . menuPicker . getSelectedRec ( ) , true ) ;
}
} , 100 ) ;
}
me . _state . coauthdisable = undefined ;
me . api . asc _registerCallback ( 'asc_onSelectionChanged' , me . wrapOnSelectionChanged ) ;
me . onApiSelectionChanged ( me . api . asc _getCellInfo ( ) ) ;
Common . localStorage . setItem ( 'sse-toolbar-compact' , compact ? 1 : 0 ) ;
Common . NotificationCenter . trigger ( 'layout:changed' , 'toolbar' ) ;
}
} ,
fillTableTemplates : function ( ) {
var me = this ;
function createPicker ( element , menu ) {
var picker = new Common . UI . DataView ( {
el : element ,
parentMenu : menu ,
restoreHeight : 300 ,
style : 'max-height: 300px;' ,
store : me . getCollection ( 'TableTemplates' ) ,
itemTemplate : _ . template ( '<div class="item-template"><img src="<%= imageUrl %>" id="<%= id %>"></div>' )
} ) ;
picker . on ( 'item:click' , function ( picker , item , record ) {
if ( me . api ) {
me . _state . tablestylename = null ;
if ( ! record )
record = picker . store . at ( 23 ) ;
me . _setTableFormat ( record . get ( 'name' ) ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Table Templates' ) ;
}
} ) ;
if ( picker . scroller ) {
picker . scroller . update ( { alwaysVisibleY : true } ) ;
}
return picker ;
}
if ( _ . isUndefined ( this . toolbar . mnuTableTemplatePicker ) ) {
this . toolbar . mnuTableTemplatePicker = createPicker ( $ ( '#id-toolbar-menu-table-templates' ) , this . toolbar . btnTableTemplate . menu ) ;
}
// if (_.isUndefined(this.toolbar.mnuTableTemplatePickerShort)) {
// this.toolbar.mnuTableTemplatePickerShort = createPicker($('#id-toolbar-short-menu-table-templates'));
// }
} ,
onTableTplMenuOpen : function ( cmp ) {
var scroller = this . toolbar . mnuTableTemplatePicker . scroller ;
if ( scroller ) {
scroller . update ( { alwaysVisibleY : true } ) ;
scroller . scrollTop ( 0 ) ;
}
} ,
onApiInitTableTemplates : function ( images ) {
var store = this . getCollection ( 'TableTemplates' ) ;
if ( store ) {
var templates = [ ] ;
_ . each ( images , function ( item ) {
templates . push ( {
name : item . asc _getName ( ) ,
caption : item . asc _getDisplayName ( ) ,
type : item . asc _getType ( ) ,
imageUrl : item . asc _getImage ( ) ,
allowSelected : true ,
selected : false
} ) ;
} ) ;
store . reset ( ) ;
store . add ( templates ) ;
}
this . fillTableTemplates ( ) ;
} ,
onApiInitEditorStyles : function ( styles ) {
window . styles _loaded = false ;
var self = this ,
listStyles = self . toolbar . listStyles ;
if ( ! listStyles ) {
self . styles = styles ;
return ;
}
listStyles . menuPicker . store . reset ( [ ] ) ; // remove all
var merged _array = styles . asc _getDefaultStyles ( ) . concat ( styles . asc _getDocStyles ( ) ) ;
_ . each ( merged _array , function ( style ) {
listStyles . menuPicker . store . add ( {
imageUrl : style . asc _getImage ( ) ,
name : style . asc _getName ( ) ,
uid : Common . UI . getId ( )
} ) ;
} ) ;
if ( listStyles . menuPicker . store . length > 0 && listStyles . rendered ) {
listStyles . fillComboView ( listStyles . menuPicker . store . at ( 0 ) , true ) ;
listStyles . selectByIndex ( 0 ) ;
}
window . styles _loaded = true ;
} ,
onApiCoAuthoringDisconnect : function ( ) {
this . toolbar . setMode ( { isDisconnected : true } ) ;
this . editMode = false ;
} ,
onApiChartDblClick : function ( ) {
this . onInsertChart ( this . btnInsertChart ) ;
} ,
onApiCanRevert : function ( which , can ) {
if ( which == 'undo' ) {
if ( this . _state . can _undo !== can ) {
this . toolbar . btnUndo . setDisabled ( ! can ) ;
this . _state . can _undo = can ;
}
} else {
if ( this . _state . can _redo !== can ) {
this . toolbar . btnRedo . setDisabled ( ! can ) ;
this . _state . can _redo = can ;
}
}
} ,
setDisabledComponents : function ( components , disable ) {
_ . each ( [ ] . concat ( components ) , function ( component ) {
if ( component . isDisabled ( ) !== disable ) component . setDisabled ( disable )
} ) ;
} ,
onApiEditCell : function ( state ) {
var toolbar = this . toolbar ;
if ( toolbar . mode . isEditDiagram || toolbar . mode . isEditMailMerge ) {
2016-04-05 11:52:34 +00:00
is _cell _edited = ( state == Asc . c _oAscCellEditorState . editStart ) ;
toolbar . lockToolbar ( SSE . enumLock . editCell , state == Asc . c _oAscCellEditorState . editStart , { array : [ toolbar . btnDecDecimal , toolbar . btnIncDecimal , toolbar . btnNumberFormat ] } ) ;
2016-03-11 00:48:53 +00:00
} else
2016-04-05 11:52:34 +00:00
if ( state == Asc . c _oAscCellEditorState . editStart || state == Asc . c _oAscCellEditorState . editEnd ) {
toolbar . lockToolbar ( SSE . enumLock . editCell , state == Asc . c _oAscCellEditorState . editStart , {
2016-03-11 00:48:53 +00:00
array : [
toolbar . btnClearStyle . menu . items [ 1 ] ,
toolbar . btnClearStyle . menu . items [ 2 ] ,
toolbar . btnClearStyle . menu . items [ 3 ] ,
toolbar . btnClearStyle . menu . items [ 4 ] ,
toolbar . mnuitemClearFilter ,
toolbar . btnNamedRange . menu . items [ 0 ] ,
toolbar . btnNamedRange . menu . items [ 1 ]
] ,
merge : true ,
clear : [ SSE . enumLock . editFormula , SSE . enumLock . editText ]
} ) ;
2016-04-05 11:52:34 +00:00
var is _cell _edited = ( state == Asc . c _oAscCellEditorState . editStart ) ;
2016-03-11 00:48:53 +00:00
( is _cell _edited ) ? Common . util . Shortcuts . suspendEvents ( 'command+l, ctrl+l, command+shift+l, ctrl+shift+l, command+k, ctrl+k, alt+h' ) :
Common . util . Shortcuts . resumeEvents ( 'command+l, ctrl+l, command+shift+l, ctrl+shift+l, command+k, ctrl+k, alt+h' ) ;
if ( is _cell _edited ) {
toolbar . listStyles . suspendEvents ( ) ;
toolbar . listStyles . menuPicker . selectRecord ( null ) ;
toolbar . listStyles . resumeEvents ( ) ;
this . _state . prstyle = undefined ;
}
} else {
2016-04-05 11:52:34 +00:00
if ( state == Asc . c _oAscCellEditorState . editText ) var is _text = true , is _formula = false ; else
if ( state == Asc . c _oAscCellEditorState . editFormula ) is _text = ! ( is _formula = true ) ; else
if ( state == Asc . c _oAscCellEditorState . editEmptyCell ) is _text = is _formula = false ;
2016-03-11 00:48:53 +00:00
toolbar . lockToolbar ( SSE . enumLock . editFormula , is _formula ,
{ array : [ toolbar . cmbFontName , toolbar . cmbFontSize , toolbar . btnIncFontSize , toolbar . btnDecFontSize ,
toolbar . btnBold , toolbar . btnItalic , toolbar . btnUnderline , toolbar . btnTextColor ] } ) ;
toolbar . lockToolbar ( SSE . enumLock . editText , is _text , { array : [ toolbar . btnInsertFormula ] } ) ;
}
this . _state . coauthdisable = undefined ;
this . _state . selection _type = undefined ;
this . checkInsertAutoshape ( { action : 'cancel' } ) ;
} ,
onApiZoomChange : function ( zf , type ) {
switch ( type ) {
case 1 : // FitWidth
case 2 : // FitPage
case 0 :
default : {
$ ( '.menu-zoom .zoom' , this . toolbar . el ) . html ( Math . floor ( ( zf + . 005 ) * 100 ) + '%' ) ;
}
}
} ,
onApiSheetChanged : function ( ) {
if ( this . api ) {
var params = this . api . asc _getSheetViewSettings ( ) ,
menu = this . toolbar . btnShowMode . menu ;
if ( menu ) {
menu . items [ 3 ] . setChecked ( ! params . asc _getShowRowColHeaders ( ) ) ;
menu . items [ 4 ] . setChecked ( ! params . asc _getShowGridLines ( ) ) ;
}
}
} ,
onApiEditorSelectionChanged : function ( fontobj ) {
if ( ! this . editMode ) return ;
var toolbar = this . toolbar ,
val ;
/* read font name */
var fontparam = fontobj . asc _getName ( ) ;
if ( fontparam != toolbar . cmbFontName . getValue ( ) ) {
Common . NotificationCenter . trigger ( 'fonts:change' , fontobj ) ;
}
/* read font params */
if ( ! toolbar . mode . isEditMailMerge && ! toolbar . mode . isEditDiagram ) {
val = fontobj . asc _getBold ( ) ;
if ( this . _state . bold !== val ) {
toolbar . btnBold . toggle ( val === true , true ) ;
this . _state . bold = val ;
}
val = fontobj . asc _getItalic ( ) ;
if ( this . _state . italic !== val ) {
toolbar . btnItalic . toggle ( val === true , true ) ;
this . _state . italic = val ;
}
val = fontobj . asc _getUnderline ( ) ;
if ( this . _state . underline !== val ) {
toolbar . btnUnderline . toggle ( val === true , true ) ;
this . _state . underline = val ;
}
}
/* read font size */
var str _size = fontobj . asc _getSize ( ) ;
if ( this . _state . fontsize !== str _size ) {
toolbar . cmbFontSize . setValue ( ( str _size !== undefined ) ? str _size : '' ) ;
this . _state . fontsize = str _size ;
}
/* read font color */
var clr ,
color ,
fontColorPicker = this . toolbar . mnuTextColorPicker ;
if ( ! toolbar . btnTextColor . ischanged && ! fontColorPicker . isDummy ) {
color = fontobj . asc _getColor ( ) ;
if ( color ) {
2016-04-05 11:52:34 +00:00
if ( color . get _type ( ) == Asc . c _oAscColor . COLOR _TYPE _SCHEME ) {
2016-03-11 00:48:53 +00:00
clr = { color : Common . Utils . ThemeColor . getHexColor ( color . get _r ( ) , color . get _g ( ) , color . get _b ( ) ) , effectValue : color . get _value ( ) } ;
} else {
clr = Common . Utils . ThemeColor . getHexColor ( color . get _r ( ) , color . get _g ( ) , color . get _b ( ) ) ;
}
}
var type1 = typeof ( clr ) ,
type2 = typeof ( this . _state . clrtext ) ;
if ( ( type1 !== type2 ) || ( type1 == 'object' &&
( clr . effectValue !== this . _state . clrtext . effectValue || this . _state . clrtext . color . indexOf ( clr . color ) < 0 ) ) ||
( type1 != 'object' && this . _state . clrtext !== undefined && this . _state . clrtext . indexOf ( clr ) < 0 ) ) {
if ( _ . isObject ( clr ) ) {
var isselected = false ;
for ( var i = 0 ; i < 10 ; i ++ ) {
if ( Common . Utils . ThemeColor . ThemeValues [ i ] == clr . effectValue ) {
fontColorPicker . select ( clr , true ) ;
isselected = true ;
break ;
}
}
if ( ! isselected ) fontColorPicker . clearSelection ( ) ;
} else {
fontColorPicker . select ( clr , true ) ;
}
this . _state . clrtext = clr ;
}
this . _state . clrtext _asccolor = color ;
}
} ,
onApiSelectionChanged : function ( info ) {
if ( ! this . editMode ) return ;
var selectionType = info . asc _getFlags ( ) . asc _getSelectionType ( ) ;
var coauth _disable = ( ! this . toolbar . mode . isEditMailMerge && ! this . toolbar . mode . isEditDiagram ) ? ( info . asc _getLocked ( ) === true ) : false ;
if ( this . _disableEditOptions ( selectionType , coauth _disable ) ) {
return ;
}
var me = this ,
toolbar = this . toolbar ,
fontobj = info . asc _getFont ( ) ,
val , need _disable = false ;
/* read font name */
var fontparam = fontobj . asc _getName ( ) ;
if ( fontparam != toolbar . cmbFontName . getValue ( ) ) {
Common . NotificationCenter . trigger ( 'fonts:change' , fontobj ) ;
}
/* read font params */
if ( ! toolbar . mode . isEditMailMerge && ! toolbar . mode . isEditDiagram ) {
val = fontobj . asc _getBold ( ) ;
if ( this . _state . bold !== val ) {
toolbar . btnBold . toggle ( val === true , true ) ;
this . _state . bold = val ;
}
val = fontobj . asc _getItalic ( ) ;
if ( this . _state . italic !== val ) {
toolbar . btnItalic . toggle ( val === true , true ) ;
this . _state . italic = val ;
}
val = fontobj . asc _getUnderline ( ) ;
if ( this . _state . underline !== val ) {
toolbar . btnUnderline . toggle ( val === true , true ) ;
this . _state . underline = val ;
}
}
/* read font size */
var str _size = fontobj . asc _getSize ( ) ;
if ( this . _state . fontsize !== str _size ) {
toolbar . cmbFontSize . setValue ( ( str _size !== undefined ) ? str _size : '' ) ;
this . _state . fontsize = str _size ;
}
/* read font color */
var clr ,
color ,
fontColorPicker = this . toolbar . mnuTextColorPicker ,
paragraphColorPicker = this . toolbar . mnuBackColorPicker ;
if ( ! toolbar . btnTextColor . ischanged && ! fontColorPicker . isDummy ) {
color = fontobj . asc _getColor ( ) ;
if ( color ) {
2016-04-05 11:52:34 +00:00
if ( color . get _type ( ) == Asc . c _oAscColor . COLOR _TYPE _SCHEME ) {
2016-03-11 00:48:53 +00:00
clr = { color : Common . Utils . ThemeColor . getHexColor ( color . get _r ( ) , color . get _g ( ) , color . get _b ( ) ) , effectValue : color . get _value ( ) } ;
} else {
clr = Common . Utils . ThemeColor . getHexColor ( color . get _r ( ) , color . get _g ( ) , color . get _b ( ) ) ;
}
}
var type1 = typeof ( clr ) ,
type2 = typeof ( this . _state . clrtext ) ;
if ( ( type1 !== type2 ) || ( type1 == 'object' &&
( clr . effectValue !== this . _state . clrtext . effectValue || this . _state . clrtext . color . indexOf ( clr . color ) < 0 ) ) ||
( type1 != 'object' && this . _state . clrtext !== undefined && this . _state . clrtext . indexOf ( clr ) < 0 ) ) {
if ( _ . isObject ( clr ) ) {
var isselected = false ;
for ( var i = 0 ; i < 10 ; i ++ ) {
if ( Common . Utils . ThemeColor . ThemeValues [ i ] == clr . effectValue ) {
fontColorPicker . select ( clr , true ) ;
isselected = true ;
break ;
}
}
if ( ! isselected ) fontColorPicker . clearSelection ( ) ;
} else {
fontColorPicker . select ( clr , true ) ;
}
this . _state . clrtext = clr ;
}
this . _state . clrtext _asccolor = color ;
}
/* read cell background color */
if ( ! toolbar . btnBackColor . ischanged && ! paragraphColorPicker . isDummy ) {
color = info . asc _getFill ( ) . asc _getColor ( ) ;
if ( color ) {
2016-04-05 11:52:34 +00:00
if ( color . get _type ( ) == Asc . c _oAscColor . COLOR _TYPE _SCHEME ) {
2016-03-11 00:48:53 +00:00
clr = { color : Common . Utils . ThemeColor . getHexColor ( color . get _r ( ) , color . get _g ( ) , color . get _b ( ) ) , effectValue : color . get _value ( ) } ;
} else {
clr = Common . Utils . ThemeColor . getHexColor ( color . get _r ( ) , color . get _g ( ) , color . get _b ( ) ) ;
}
} else {
clr = 'transparent' ;
}
type1 = typeof ( clr ) ;
type2 = typeof ( this . _state . clrback ) ;
if ( ( type1 !== type2 ) || ( type1 == 'object' &&
( clr . effectValue !== this . _state . clrback . effectValue || this . _state . clrback . color . indexOf ( clr . color ) < 0 ) ) ||
( type1 != 'object' && this . _state . clrback !== undefined && this . _state . clrback . indexOf ( clr ) < 0 ) ) {
if ( _ . isObject ( clr ) ) {
var isselected = false ;
for ( i = 0 ; i < 10 ; i ++ ) {
if ( Common . Utils . ThemeColor . ThemeValues [ i ] == clr . effectValue ) {
paragraphColorPicker . select ( clr , true ) ;
isselected = true ;
break ;
}
}
if ( ! isselected ) paragraphColorPicker . clearSelection ( ) ;
} else {
paragraphColorPicker . select ( clr , true ) ;
}
this . _state . clrback = clr ;
}
this . _state . clrshd _asccolor = color ;
}
2016-04-05 11:52:34 +00:00
if ( selectionType == Asc . c _oAscSelectionType . RangeChart || selectionType == Asc . c _oAscSelectionType . RangeChartText )
2016-03-11 00:48:53 +00:00
return ;
if ( ! toolbar . mode . isEditDiagram )
{
// (coauth_disable !== toolbar.btnClearStyle.isDisabled()) && toolbar.btnClearStyle.setDisabled(coauth_disable);
// (coauth_disable !== toolbar.btnCopyStyle.isDisabled()) && toolbar.btnCopyStyle.setDisabled(coauth_disable);
2016-03-29 14:35:28 +00:00
var filterInfo = info . asc _getAutoFilterInfo ( ) ,
formatTableInfo = info . asc _getFormatTableInfo ( ) ;
2016-03-11 00:48:53 +00:00
if ( ! toolbar . mode . isEditMailMerge ) {
/* read cell horizontal align */
fontparam = info . asc _getHorAlign ( ) ;
if ( this . _state . pralign !== fontparam ) {
this . _state . pralign = fontparam ;
var index = - 1 , align ;
switch ( fontparam ) {
case 'left' : index = 0 ; align = 'btn-align-left' ; break ;
case 'center' : index = 1 ; align = 'btn-align-center' ; break ;
case 'right' : index = 2 ; align = 'btn-align-right' ; break ;
case 'justify' : index = 3 ; align = 'btn-align-just' ; break ;
default : index = - 255 ; align = 'btn-align-left' ; break ;
}
if ( ! ( index < 0 ) ) {
toolbar . btnAlignRight . toggle ( index === 2 , true ) ;
toolbar . btnAlignLeft . toggle ( index === 0 , true ) ;
toolbar . btnAlignCenter . toggle ( index === 1 , true ) ;
toolbar . btnAlignJust . toggle ( index === 3 , true ) ;
toolbar . btnHorizontalAlign . menu . items [ index ] . setChecked ( true , false ) ;
} else if ( index == - 255 ) {
toolbar . btnAlignRight . toggle ( false , true ) ;
toolbar . btnAlignLeft . toggle ( false , true ) ;
toolbar . btnAlignCenter . toggle ( false , true ) ;
toolbar . btnAlignJust . toggle ( false , true ) ;
this . _clearChecked ( toolbar . btnHorizontalAlign . menu ) ;
}
var btnHorizontalAlign = this . toolbar . btnHorizontalAlign ;
if ( btnHorizontalAlign . rendered ) {
var hIconEl = $ ( '.btn-icon' , btnHorizontalAlign . cmpEl ) ;
if ( hIconEl ) {
hIconEl . removeClass ( btnHorizontalAlign . options . icls ) ;
btnHorizontalAlign . options . icls = align ;
hIconEl . addClass ( btnHorizontalAlign . options . icls ) ;
}
}
toolbar . btnTextOrient . menu . items [ 1 ] . setDisabled ( fontparam == 'justify' ) ;
toolbar . btnTextOrient . menu . items [ 2 ] . setDisabled ( fontparam == 'justify' ) ;
}
/* read cell vertical align */
fontparam = info . asc _getVertAlign ( ) ;
if ( this . _state . valign !== fontparam ) {
this . _state . valign = fontparam ;
index = - 1 ; align = '' ;
switch ( fontparam ) {
case 'top' : index = 0 ; align = 'btn-valign-top' ; break ;
case 'center' : index = 1 ; align = 'btn-valign-middle' ; break ;
case 'bottom' : index = 2 ; align = 'btn-valign-bottom' ; break ;
}
if ( index > - 1 ) {
toolbar . btnAlignTop . toggle ( index === 0 , true ) ;
toolbar . btnAlignMiddle . toggle ( index === 1 , true ) ;
toolbar . btnAlignBottom . toggle ( index === 2 , true ) ;
toolbar . btnVerticalAlign . menu . items [ index ] . setChecked ( true , false ) ;
var btnVerticalAlign = this . toolbar . btnVerticalAlign ;
if ( btnVerticalAlign . rendered ) {
var vIconEl = $ ( '.btn-icon' , btnVerticalAlign . cmpEl ) ;
if ( vIconEl ) {
vIconEl . removeClass ( btnVerticalAlign . options . icls ) ;
btnVerticalAlign . options . icls = align ;
vIconEl . addClass ( btnVerticalAlign . options . icls ) ;
}
}
}
}
2016-03-29 14:35:28 +00:00
need _disable = this . _state . controlsdisabled . filters || formatTableInfo !== null || filterInfo && filterInfo . asc _getIsAutoFilter ( ) === null ;
2016-03-11 00:48:53 +00:00
// (need_disable !== toolbar.btnMerge.isDisabled()) && toolbar.btnMerge.setDisabled(need_disable);
toolbar . lockToolbar ( SSE . enumLock . ruleMerge , need _disable , { array : [ toolbar . btnMerge ] } ) ;
val = info . asc _getFlags ( ) . asc _getMerge ( ) ;
if ( this . _state . merge !== val ) {
toolbar . btnMerge . toggle ( val === true , true ) ;
this . _state . merge = val ;
}
/* read cell text wrapping */
if ( ! toolbar . btnWrap . isDisabled ( ) ) {
val = info . asc _getFlags ( ) . asc _getWrapText ( ) ;
if ( this . _state . wrap !== val ) {
toolbar . btnWrap . toggle ( val === true , true ) ;
this . _state . wrap = val ;
}
}
}
val = ( filterInfo ) ? filterInfo . asc _getIsAutoFilter ( ) : null ;
if ( this . _state . filter !== val ) {
toolbar . btnSetAutofilter . toggle ( val === true , true ) ;
toolbar . mnuitemAutoFilter . setChecked ( val === true , true ) ;
this . _state . filter = val ;
}
need _disable = this . _state . controlsdisabled . filters || ( val === null ) ;
toolbar . lockToolbar ( SSE . enumLock . ruleFilter , need _disable ,
{ array : [ toolbar . btnSortDown , toolbar . btnSortUp , toolbar . mnuitemSortAZ , toolbar . mnuitemSortZA ,
toolbar . btnTableTemplate , toolbar . btnSetAutofilter , toolbar . mnuitemAutoFilter , toolbar . btnAutofilter ] } ) ;
2016-03-29 14:35:28 +00:00
val = ( formatTableInfo ) ? formatTableInfo . asc _getTableStyleName ( ) : null ;
2016-03-11 00:48:53 +00:00
if ( this . _state . tablestylename !== val && this . toolbar . mnuTableTemplatePicker ) {
val = this . toolbar . mnuTableTemplatePicker . store . findWhere ( { name : val } ) ;
if ( val ) {
this . toolbar . mnuTableTemplatePicker . selectRecord ( val ) ;
this . _state . tablestylename = val . get ( 'name' ) ;
} else {
toolbar . mnuTableTemplatePicker . deselectAll ( ) ;
this . _state . tablestylename = null ;
}
}
2016-03-29 14:35:28 +00:00
this . _state . tablename = ( formatTableInfo ) ? formatTableInfo . asc _getTableName ( ) : undefined ;
2016-03-11 00:48:53 +00:00
need _disable = this . _state . controlsdisabled . filters || ! filterInfo || ( filterInfo . asc _getIsApplyAutoFilter ( ) !== true ) ;
toolbar . lockToolbar ( SSE . enumLock . ruleDelFilter , need _disable , { array : [ toolbar . btnClearAutofilter , toolbar . mnuitemClearFilter ] } ) ;
}
fontparam = toolbar . numFormatTypes [ info . asc _getNumFormatType ( ) ] ;
if ( ! fontparam )
fontparam = toolbar . numFormatTypes [ 1 ] ;
toolbar . btnNumberFormat . setCaption ( fontparam ) ;
val = info . asc _getAngle ( ) ;
if ( this . _state . angle !== val ) {
this . _clearChecked ( toolbar . btnTextOrient . menu ) ;
switch ( val ) {
case 45 : toolbar . btnTextOrient . menu . items [ 1 ] . setChecked ( true , true ) ; break ;
case - 45 : toolbar . btnTextOrient . menu . items [ 2 ] . setChecked ( true , true ) ; break ;
case 90 : toolbar . btnTextOrient . menu . items [ 3 ] . setChecked ( true , true ) ; break ;
case - 90 : toolbar . btnTextOrient . menu . items [ 4 ] . setChecked ( true , true ) ; break ;
default : toolbar . btnTextOrient . menu . items [ 0 ] . setChecked ( true , true ) ; break ;
}
this . _state . angle = val ;
}
val = info . asc _getStyleName ( ) ;
if ( this . _state . prstyle != val && ! this . toolbar . listStyles . isDisabled ( ) ) {
var listStyle = this . toolbar . listStyles ,
listStylesVisible = ( listStyle . rendered ) ;
if ( listStylesVisible ) {
listStyle . suspendEvents ( ) ;
var styleRec = listStyle . menuPicker . store . findWhere ( {
name : val
} ) ;
this . _state . prstyle = ( listStyle . menuPicker . store . length > 0 ) ? val : undefined ;
listStyle . menuPicker . selectRecord ( styleRec ) ;
listStyle . resumeEvents ( ) ;
}
}
2016-04-05 11:52:34 +00:00
val = ( selectionType == Asc . c _oAscSelectionType . RangeRow ) ;
2016-03-11 00:48:53 +00:00
if ( this . _state . controlsdisabled . rows !== val ) {
this . _state . controlsdisabled . rows = val ;
toolbar . btnAddCell . menu . items [ 3 ] . setDisabled ( val ) ;
toolbar . btnDeleteCell . menu . items [ 3 ] . setDisabled ( val ) ;
}
2016-04-05 11:52:34 +00:00
val = ( selectionType == Asc . c _oAscSelectionType . RangeCol ) ;
2016-03-11 00:48:53 +00:00
if ( this . _state . controlsdisabled . cols !== val ) {
this . _state . controlsdisabled . cols = val ;
toolbar . btnAddCell . menu . items [ 2 ] . setDisabled ( val ) ;
toolbar . btnDeleteCell . menu . items [ 2 ] . setDisabled ( val ) ;
}
val = filterInfo && filterInfo . asc _getIsApplyAutoFilter ( ) ;
if ( this . _state . controlsdisabled . cells _right !== ( this . _state . controlsdisabled . rows || val ) ) {
this . _state . controlsdisabled . cells _right = ( this . _state . controlsdisabled . rows || val ) ;
toolbar . btnAddCell . menu . items [ 0 ] . setDisabled ( this . _state . controlsdisabled . cells _right ) ;
toolbar . btnDeleteCell . menu . items [ 0 ] . setDisabled ( this . _state . controlsdisabled . cells _right ) ;
}
if ( this . _state . controlsdisabled . cells _down !== ( this . _state . controlsdisabled . cols || val ) ) {
this . _state . controlsdisabled . cells _down = ( this . _state . controlsdisabled . cols || val ) ;
toolbar . btnAddCell . menu . items [ 1 ] . setDisabled ( this . _state . controlsdisabled . cells _down ) ;
toolbar . btnDeleteCell . menu . items [ 1 ] . setDisabled ( this . _state . controlsdisabled . cells _down ) ;
}
} ,
onApiStyleChange : function ( ) {
this . toolbar . btnCopyStyle . toggle ( false , true ) ;
this . modeAlwaysSetStyle = false ;
} ,
updateThemeColors : function ( ) {
var updateColors = function ( picker , defaultColor ) {
if ( picker ) {
var clr ;
var effectcolors = Common . Utils . ThemeColor . getEffectColors ( ) ;
for ( var i = 0 ; i < effectcolors . length ; i ++ ) {
if ( typeof ( picker . currentColor ) == 'object' &&
clr === undefined &&
picker . currentColor . effectId == effectcolors [ i ] . effectId )
clr = effectcolors [ i ] ;
}
picker . updateColors ( effectcolors , Common . Utils . ThemeColor . getStandartColors ( ) ) ;
if ( picker . currentColor === undefined ) {
picker . currentColor = defaultColor ;
} else if ( clr !== undefined ) {
picker . currentColor = clr ;
}
}
} ;
updateColors ( this . toolbar . mnuTextColorPicker , Common . Utils . ThemeColor . getStandartColors ( ) [ 1 ] ) ;
if ( this . toolbar . btnTextColor . currentColor === undefined ) {
this . toolbar . btnTextColor . currentColor = Common . Utils . ThemeColor . getStandartColors ( ) [ 1 ] ;
} else
this . toolbar . btnTextColor . currentColor = this . toolbar . mnuTextColorPicker . currentColor . color || this . toolbar . mnuTextColorPicker . currentColor ;
$ ( '.btn-color-value-line' , this . toolbar . btnTextColor . cmpEl ) . css ( 'background-color' , '#' + this . toolbar . btnTextColor . currentColor ) ;
updateColors ( this . toolbar . mnuBackColorPicker , Common . Utils . ThemeColor . getStandartColors ( ) [ 3 ] ) ;
if ( this . toolbar . btnBackColor . currentColor === undefined ) {
this . toolbar . btnBackColor . currentColor = Common . Utils . ThemeColor . getStandartColors ( ) [ 3 ] ;
} else
this . toolbar . btnBackColor . currentColor = this . toolbar . mnuBackColorPicker . currentColor . color || this . toolbar . mnuBackColorPicker . currentColor ;
$ ( '.btn-color-value-line' , this . toolbar . btnBackColor . cmpEl ) . css ( 'background-color' , this . toolbar . btnBackColor . currentColor == 'transparent' ? 'transparent' : '#' + this . toolbar . btnBackColor . currentColor ) ;
if ( this . _state . clrtext _asccolor !== undefined || this . _state . clrshd _asccolor !== undefined ) {
this . _state . clrtext = undefined ;
this . _state . clrback = undefined ;
this . onApiSelectionChanged ( this . api . asc _getCellInfo ( ) ) ;
}
this . _state . clrtext _asccolor = undefined ;
this . _state . clrshd _asccolor = undefined ;
updateColors ( this . toolbar . mnuBorderColorPicker , Common . Utils . ThemeColor . getEffectColors ( ) [ 1 ] ) ;
this . toolbar . btnBorders . options . borderscolor = this . toolbar . mnuBorderColorPicker . currentColor . color || this . toolbar . mnuBorderColorPicker . currentColor ;
$ ( '#id-toolbar-mnu-item-border-color .menu-item-icon' ) . css ( 'border-color' , '#' + this . toolbar . btnBorders . options . borderscolor ) ;
} ,
hideElements : function ( opts ) {
if ( ! _ . isUndefined ( opts . title ) ) {
var headerView = this . getApplication ( ) . getController ( 'Viewport' ) . getView ( 'Common.Views.Header' ) ;
headerView && headerView . setVisible ( ! opts . title ) ;
Common . NotificationCenter . trigger ( 'layout:changed' , 'header' ) ;
}
if ( ! _ . isUndefined ( opts . compact ) ) {
this . onChangeViewMode ( opts . compact ) ;
}
if ( ! _ . isUndefined ( opts . formula ) ) {
var cellEditor = this . getApplication ( ) . getController ( 'CellEditor' ) . getView ( 'CellEditor' ) ;
cellEditor && cellEditor . setVisible ( ! opts . formula ) ;
Common . NotificationCenter . trigger ( 'layout:changed' , 'celleditor' , opts . formula ? 'hidden' : 'showed' ) ;
}
if ( ! _ . isUndefined ( opts . headings ) ) {
if ( this . api ) {
var current = this . api . asc _getSheetViewSettings ( ) ;
current . asc _setShowRowColHeaders ( ! opts . headings ) ;
this . api . asc _setSheetViewSettings ( current ) ;
}
}
if ( ! _ . isUndefined ( opts . gridlines ) ) {
if ( this . api ) {
current = this . api . asc _getSheetViewSettings ( ) ;
current . asc _setShowGridLines ( ! opts . gridlines ) ;
this . api . asc _setSheetViewSettings ( current ) ;
}
}
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
} ,
fillAutoShapes : function ( ) {
var me = this ,
shapesStore = this . getApplication ( ) . getCollection ( 'ShapeGroups' ) ;
for ( var i = 0 ; i < shapesStore . length ; i ++ ) {
var shapeGroup = shapesStore . at ( i ) ;
var menuItem = new Common . UI . MenuItem ( {
caption : shapeGroup . get ( 'groupName' ) ,
menu : new Common . UI . Menu ( {
menuAlign : 'tl-tr' ,
items : [
{ template : _ . template ( '<div id="id-toolbar-menu-shapegroup' + i + '" class="menu-shape" style="width: ' + ( shapeGroup . get ( 'groupWidth' ) - 8 ) + 'px; margin-left: 5px;"></div>' ) }
]
} )
} ) ;
me . toolbar . btnInsertShape . menu . addItem ( menuItem ) ;
var shapePicker = new Common . UI . DataView ( {
el : $ ( '#id-toolbar-menu-shapegroup' + i ) ,
store : shapeGroup . get ( 'groupStore' ) ,
parentMenu : menuItem . menu ,
showLast : false ,
itemTemplate : _ . template ( '<div class="item-shape"><img src="<%= imageUrl %>" id="<%= id %>"></div>' )
} ) ;
shapePicker . on ( 'item:click' , function ( picker , item , record , e ) {
if ( me . api ) {
me . _addAutoshape ( true , record . get ( 'data' ) . shapeType ) ;
me . _isAddingShape = true ;
if ( me . toolbar . btnInsertText . pressed ) {
me . toolbar . btnInsertText . toggle ( false , true ) ;
}
if ( e . type !== 'click' )
me . toolbar . btnInsertShape . menu . hide ( ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar , me . toolbar . btnInsertShape ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Add Shape' ) ;
}
} ) ;
}
} ,
fillTextArt : function ( ) {
var me = this ;
if ( this . toolbar . mnuTextArtPicker ) {
var models = this . getApplication ( ) . getCollection ( 'Common.Collections.TextArt' ) . models ,
count = this . toolbar . mnuTextArtPicker . store . length ;
if ( count > 0 && count == models . length ) {
var data = this . toolbar . mnuTextArtPicker . store . models ;
_ . each ( models , function ( template , index ) {
data [ index ] . set ( 'imageUrl' , template . get ( 'imageUrl' ) ) ;
} ) ;
} else {
this . toolbar . mnuTextArtPicker . store . reset ( models ) ;
}
} else {
this . toolbar . mnuTextArtPicker = new Common . UI . DataView ( {
el : $ ( '#id-toolbar-menu-insart' ) ,
store : this . getApplication ( ) . getCollection ( 'Common.Collections.TextArt' ) ,
parentMenu : this . toolbar . mnuInsertTextArt . menu ,
showLast : false ,
itemTemplate : _ . template ( '<div class="item-art"><img src="<%= imageUrl %>" id="<%= id %>"></div>' )
} ) ;
this . toolbar . mnuTextArtPicker . on ( 'item:click' , function ( picker , item , record , e ) {
if ( me . api ) {
me . toolbar . fireEvent ( 'inserttextart' , me . toolbar ) ;
me . api . asc _addTextArt ( record . get ( 'data' ) ) ;
if ( me . toolbar . btnInsertShape . pressed )
me . toolbar . btnInsertShape . toggle ( false , true ) ;
if ( e . type !== 'click' )
me . toolbar . btnInsertText . menu . hide ( ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar , me . toolbar . btnInsertText ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Add Text Art' ) ;
}
} ) ;
}
} ,
attachToControlEvents : function ( ) {
// this.control({
// 'menu[action=table-templates]':{
// select: this._onMenuTableTemplate,
// itemmouseenter: function(obj, record, item, index, event, eOpts) {
// if (obj.tooltip) obj.tooltip.close();
// obj.tooltip = Ext.create('Ext.tip.ToolTip', {
// closeAction : 'destroy',
// dismissDelay : 2000,
// html : record.get('caption')
// });
// var xy = event.getXY();
// obj.tooltip.showAt([xy[0]+10,xy[1]+10]);
// },
// itemmouseleave: function(obj, record, item, index, e, eOpts) {
// if (obj.tooltip) obj.tooltip.close();
// },
// hide: function() {
// this.getToolbar().fireEvent('editcomplete', this.getToolbar());
// }
// },
// 'menu[action=number-format]': {
// click: this._handleNumberFormatMenu
// }
// });
} ,
onSheetChanged : function ( ) {
if ( this . api ) {
var params = this . api . asc _getSheetViewSettings ( ) ;
var menu = this . getMenuHideOptions ( ) ;
if ( menu ) {
menu . items . getAt ( 3 ) . setChecked ( ! params . asc _getShowRowColHeaders ( ) ) ;
menu . items . getAt ( 4 ) . setChecked ( ! params . asc _getShowGridLines ( ) ) ;
}
}
} ,
_disableEditOptions : function ( seltype , coauth _disable ) {
if ( this . api . isCellEdited ) return true ;
if ( this . api . isRangeSelection ) return true ;
2016-04-05 11:52:34 +00:00
if ( this . _state . selection _type === seltype && this . _state . coauthdisable === coauth _disable ) return ( seltype === Asc . c _oAscSelectionType . RangeImage ) ;
2016-03-11 00:48:53 +00:00
var toolbar = this . toolbar ,
2016-04-05 11:52:34 +00:00
is _chart _text = seltype == Asc . c _oAscSelectionType . RangeChartText ,
is _chart = seltype == Asc . c _oAscSelectionType . RangeChart ,
is _shape _text = seltype == Asc . c _oAscSelectionType . RangeShapeText ,
is _shape = seltype == Asc . c _oAscSelectionType . RangeShape ,
is _image = seltype == Asc . c _oAscSelectionType . RangeImage ,
2016-03-11 00:48:53 +00:00
is _mode _2 = is _shape _text || is _shape || is _chart _text || is _chart ;
if ( coauth _disable ) {
toolbar . lockToolbar ( SSE . enumLock . coAuth , coauth _disable ) ;
} else {
var _set = SSE . enumLock ;
var type = seltype ;
switch ( seltype ) {
2016-04-05 11:52:34 +00:00
case Asc . c _oAscSelectionType . RangeImage : type = _set . selImage ; break ;
case Asc . c _oAscSelectionType . RangeShape : type = _set . selShape ; break ;
case Asc . c _oAscSelectionType . RangeShapeText : type = _set . selShapeText ; break ;
case Asc . c _oAscSelectionType . RangeChart : type = _set . selChart ; break ;
case Asc . c _oAscSelectionType . RangeChartText : type = _set . selChartText ; break ;
2016-03-11 00:48:53 +00:00
}
toolbar . lockToolbar ( type , type != seltype , {
array : [
toolbar . btnClearStyle . menu . items [ 1 ] ,
toolbar . btnClearStyle . menu . items [ 2 ] ,
toolbar . btnClearStyle . menu . items [ 3 ] ,
toolbar . btnClearStyle . menu . items [ 4 ] ,
toolbar . mnuitemSortAZ ,
toolbar . mnuitemSortZA ,
toolbar . mnuitemAutoFilter ,
toolbar . mnuitemClearFilter
] ,
merge : true ,
clear : [ _set . selImage , _set . selChart , _set . selChartText , _set . selShape , _set . selShapeText , _set . coAuth ]
} ) ;
}
$ ( '#ce-func-label' ) . toggleClass ( 'disabled' , is _image || is _mode _2 || coauth _disable ) ;
this . _state . controlsdisabled . filters = is _image || is _mode _2 || coauth _disable ;
if ( is _image || is _mode _2 || coauth _disable ) {
toolbar . listStyles . suspendEvents ( ) ;
toolbar . listStyles . menuPicker . selectRecord ( null ) ;
toolbar . listStyles . resumeEvents ( ) ;
this . _state . prstyle = undefined ;
}
this . _state . selection _type = seltype ;
this . _state . coauthdisable = coauth _disable ; // need to redisable coAuthControls
return is _image ;
} ,
_getApiTextSize : function ( ) {
var cellInfo = this . api . asc _getCellInfo ( ) ;
return cellInfo ? cellInfo . asc _getFont ( ) . asc _getSize ( ) : 12 ;
} ,
_clearChecked : function ( menu ) {
_ . each ( menu . items , function ( item ) {
if ( item . setChecked )
item . setChecked ( false , true ) ;
} ) ;
} ,
_setTableFormat : function ( fmtname ) {
var me = this ;
if ( me . api . isRangeSelection !== true ) {
if ( me . api . asc _getAddFormatTableOptions ( ) != false ) {
var handlerDlg = function ( dlg , result ) {
if ( result == 'ok' ) {
me . _state . filter = undefined ;
2016-04-05 11:52:34 +00:00
me . api . asc _setSelectionDialogMode ( Asc . c _oAscSelectionDialogType . None ) ;
2016-03-11 00:48:53 +00:00
if ( me . _state . tablename )
2016-04-05 11:52:34 +00:00
me . api . asc _changeAutoFilter ( me . _state . tablename , Asc . c _oAscChangeFilterOptions . style , fmtname ) ;
2016-03-11 00:48:53 +00:00
else
me . api . asc _addAutoFilter ( fmtname , dlg . getSettings ( ) ) ;
}
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
} ;
var win = new SSE . Views . TableOptionsDialog ( {
handler : handlerDlg
} ) ;
win . show ( ) ;
win . setSettings ( {
api : me . api
} ) ;
} else {
me . _state . filter = undefined ;
if ( me . _state . tablename )
2016-04-05 11:52:34 +00:00
me . api . asc _changeAutoFilter ( me . _state . tablename , Asc . c _oAscChangeFilterOptions . style , fmtname ) ;
2016-03-11 00:48:53 +00:00
else
me . api . asc _addAutoFilter ( fmtname ) ;
}
}
} ,
onHideMenus : function ( e ) {
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar , { restorefocus : true } ) ;
} ,
onSetupCopyStyleButton : function ( ) {
this . modeAlwaysSetStyle = false ;
var acsCopyFmtStyleState = {
kOff : 0 ,
kOn : 1 ,
kMultiple : 2
} ;
var me = this ;
Common . NotificationCenter . on ( {
'edit:complete' : function ( ) {
if ( me . api && me . modeAlwaysSetStyle ) {
me . api . asc _formatPainter ( acsCopyFmtStyleState . kOff ) ;
me . toolbar . btnCopyStyle . toggle ( false , true ) ;
me . modeAlwaysSetStyle = false ;
}
}
} ) ;
$ ( me . toolbar . btnCopyStyle . cmpEl ) . dblclick ( function ( ) {
if ( me . api ) {
me . modeAlwaysSetStyle = true ;
me . toolbar . btnCopyStyle . toggle ( true , true ) ;
me . api . asc _formatPainter ( acsCopyFmtStyleState . kMultiple ) ;
}
} ) ;
} ,
onCellsRange : function ( status ) {
2016-04-05 11:52:34 +00:00
this . api . isRangeSelection = ( status != Asc . c _oAscSelectionDialogType . None ) ;
this . onApiEditCell ( this . api . isRangeSelection ? Asc . c _oAscCellEditorState . editStart : Asc . c _oAscCellEditorState . editEnd ) ;
2016-03-11 00:48:53 +00:00
var toolbar = this . toolbar ;
toolbar . lockToolbar ( SSE . enumLock . selRange , this . api . isRangeSelection ) ;
this . setDisabledComponents ( [ toolbar . btnUndo ] , this . api . isRangeSelection || ! this . api . asc _getCanUndo ( ) ) ;
this . setDisabledComponents ( [ toolbar . btnRedo ] , this . api . isRangeSelection || ! this . api . asc _getCanRedo ( ) ) ;
this . onApiSelectionChanged ( this . api . asc _getCellInfo ( ) ) ;
} ,
onLockDefNameManager : function ( state ) {
2016-04-05 11:52:34 +00:00
this . _state . namedrange _locked = ( state == Asc . c _oAscDefinedNameReason . LockDefNameManager ) ;
2016-03-11 00:48:53 +00:00
} ,
DisableToolbar : function ( disable ) {
var mask = $ ( '.toolbar-mask' ) ;
if ( disable && mask . length > 0 || ! disable && mask . length == 0 ) return ;
var toolbar = this . toolbar ;
toolbar . $el . find ( '.toolbar' ) . toggleClass ( 'masked' , disable ) ;
this . toolbar . lockToolbar ( SSE . enumLock . menuFileOpen , disable , { array : [ toolbar . btnShowMode ] } ) ;
if ( disable ) {
mask = $ ( "<div class='toolbar-mask'>" ) . appendTo ( toolbar . $el ) ;
var left = toolbar . isCompactView ? 75 : ( toolbar . mode . nativeApp ? 80 : 48 ) ;
mask . css ( 'left' , left + 'px' ) ;
mask . css ( 'right' , ( toolbar . isCompactView ? 0 : 45 ) + 'px' ) ;
Common . util . Shortcuts . suspendEvents ( 'command+l, ctrl+l, command+shift+l, ctrl+shift+l, command+k, ctrl+k, command+alt+h, ctrl+alt+h' ) ;
} else {
mask . remove ( ) ;
Common . util . Shortcuts . resumeEvents ( 'command+l, ctrl+l, command+shift+l, ctrl+shift+l, command+k, ctrl+k, command+alt+h, ctrl+alt+h' ) ;
}
} ,
applyFormulaSettings : function ( ) {
var formulas = this . toolbar . btnInsertFormula . menu . items ;
for ( var i = 0 ; i < Math . min ( 4 , formulas . length ) ; i ++ ) {
formulas [ i ] . setCaption ( this . api . asc _getFormulaLocaleName ( formulas [ i ] . value ) ) ;
}
} ,
textEmptyImgUrl : 'You need to specify image URL.' ,
warnMergeLostData : 'Operation can destroy data in the selected cells.<br>Continue?' ,
textWarning : 'Warning' ,
textFontSizeErr : 'The entered value is incorrect.<br>Please enter a numeric value between 1 and 409' ,
textCancel : 'Cancel' ,
confirmAddFontName : 'The font you are going to save is not available on the current device.<br>The text style will be displayed using one of the device fonts, the saved font will be used when it is available.<br>Do you want to continue?'
} , SSE . Controllers . Toolbar || { } ) ) ;
} ) ;