/** * Viewport.js * * Controller for the viewport * * Created by Maxim Kadushkin on 24 March 2014 * Copyright (c) 2014 Ascensio System SIA. All rights reserved. * */ define([ 'core', 'common/main/lib/view/Header', 'spreadsheeteditor/main/app/view/Viewport' // ,'spreadsheeteditor/main/app/view/LeftMenu' ], function (Viewport) { 'use strict'; SSE.Controllers.Viewport = Backbone.Controller.extend({ // Specifying a Viewport model models: [], // Specifying a collection of out Viewport collections: [], // Specifying application views views: [ 'Viewport', // is main application layout 'Common.Views.Header' ], // When controller is created let's setup view event listeners initialize: function() { // This most important part when we will tell our controller what events should be handled this.addListeners({ // Events generated by main view 'Viewport': { } }); }, setApi: function(api) { this.api = api; }, // When our application is ready, lets get started onLaunch: function() { // Create and render main view this.viewport = this.createView('Viewport').render(); this.header = this.createView('Common.Views.Header', { headerCaption: 'Spreadsheet Editor' }).render(); Common.NotificationCenter.on('layout:changed', _.bind(this.onLayoutChanged, this)); $(window).on('resize', _.bind(this.onWindowResize, this)); this.viewport.celayout.on('layout:resizedrag', function() { this.viewport.fireEvent('layout:resizedrag', [this, 'cell:edit']); this.api.asc_Resize(); }, this); var leftPanel = $('#left-menu'); this.viewport.hlayout.on('layout:resizedrag', function() { this.api.asc_Resize(); Common.localStorage.setItem('sse-mainmenu-width',leftPanel.width()); }, this); this.boxSdk = $('#editor_sdk'); this.boxFormula = $('#cell-editing-box'); this.boxSdk.css('border-left', 'none'); this.boxFormula.css('border-left', 'none'); }, onLayoutChanged: function(area) { switch (area) { default: this.viewport.vlayout.doLayout(); this.viewport.celayout.doLayout(); case 'rightmenu': this.viewport.hlayout.doLayout(); break; case 'leftmenu': var panel = this.viewport.hlayout.items[0]; if (panel.resize.el) { if (panel.el.width() > 40) { this.boxSdk.css('border-left', ''); this.boxFormula.css('border-left', ''); panel.resize.el.show(); } else { panel.resize.el.hide(); this.boxSdk.css('border-left', 'none'); this.boxFormula.css('border-left', 'none'); } } this.viewport.hlayout.doLayout(); break; case 'header': case 'toolbar': case 'status': this.viewport.vlayout.doLayout(); this.viewport.celayout.doLayout(); break; case 'celleditor': if (arguments[1]) { this.boxSdk.css('border-top', arguments[1]=='hidden'?'none':''); } this.viewport.celayout.doLayout(); break; } this.api.asc_Resize(); }, onWindowResize: function(e) { this.onLayoutChanged('window'); Common.NotificationCenter.trigger('window:resize'); } }); });