diff --git a/apps/spreadsheeteditor/main/app/controller/ViewTab.js b/apps/spreadsheeteditor/main/app/controller/ViewTab.js index 736fce2e5..3b441f76b 100644 --- a/apps/spreadsheeteditor/main/app/controller/ViewTab.js +++ b/apps/spreadsheeteditor/main/app/controller/ViewTab.js @@ -84,7 +84,10 @@ define([ 'viewtab:formula': this.onViewSettings, 'viewtab:headings': this.onViewSettings, 'viewtab:gridlines': this.onViewSettings, - 'viewtab:zoom': this.onZoom + 'viewtab:zoom': this.onZoom, + 'viewtab:showview': this.onShowView, + 'viewtab:openview': this.onOpenView + // 'viewtab:manager': this.onOpenManager }, 'Statusbar': { 'sheet:changed': this.onApiSheetChanged.bind(this) @@ -135,6 +138,29 @@ define([ Common.NotificationCenter.trigger('edit:complete', this.view); }, + onShowView: function() { + var views = this.api.asc_getNamedSheetViews(), + menu = this.view.btnSheetView.menu._innerMenu, + active = false; + + menu.removeItems(1, menu.items.length-1); + _.each(views, function(item, index) { + menu.addItem(new Common.UI.MenuItem({ + caption : item.asc_getName(), + checkable: true, + allowDepress: false, + checked : item.asc_getIsActive() + })); + if (item.asc_getIsActive()) + active = true; + }); + menu.items[0].setChecked(!active, true); + }, + + onOpenView: function(item) { + this.api && this.api.asc_setActiveNamedSheetView((item.value == 'default') ? null : item.name); + }, + // onWorksheetLocked: function(index,locked) { // if (index == this.api.asc_getActiveWorksheetIndex()) { // Common.Utils.lockControls(SSE.enumLock.sheetLock, locked, {array: this.view.btnsSortDown.concat(this.view.btnsSortUp, this.view.btnCustomSort, this.view.btnGroup, this.view.btnUngroup)}); diff --git a/apps/spreadsheeteditor/main/app/view/ViewTab.js b/apps/spreadsheeteditor/main/app/view/ViewTab.js index f12de75f4..0e4232b17 100644 --- a/apps/spreadsheeteditor/main/app/view/ViewTab.js +++ b/apps/spreadsheeteditor/main/app/view/ViewTab.js @@ -60,7 +60,6 @@ define([ this.chGridlines.on('change', function (field, value) { me.fireEvent('viewtab:gridlines', [2, value]); }); - this.cmbZoom.on('selected', function(combo, record) { me.fireEvent('viewtab:zoom', [record.value]); }); @@ -222,7 +221,7 @@ define([ setButtonMenu: function(btn) { var me = this, - arr = [{caption: me.textDefault, value: 'default'}]; + arr = [{caption: me.textDefault, value: 'default', checkable: true, allowDepress: false}]; btn.setMenu(new Common.UI.Menu({ items: [ {template: _.template('
')}, @@ -242,6 +241,8 @@ define([ _.delay(function() { menu._innerMenu && menu._innerMenu.cmpEl.focus(); }, 10); + }).on('show:before', function (menu, e) { + me.fireEvent('viewtab:showview'); }).on('keydown:before', _.bind(me.onBeforeKeyDown, this)); var menu = new Common.UI.Menu({ @@ -257,8 +258,9 @@ define([ top : 0 }); menu.cmpEl.attr({tabindex: "-1"}); - menu.on('item:click', function (menu, item, e) { - me.fireEvent('viewtab:openview', [{name: item.caption, value: item.value}]); + menu.on('item:toggle', function (menu, item, state, e) { + if (!!state) + me.fireEvent('viewtab:openview', [{name: item.caption, value: item.value}]); }).on('keydown:before', _.bind(me.onBeforeKeyDown, this)); btn.menu._innerMenu = menu; menu._outerMenu = btn.menu;