/* * (c) Copyright Ascensio System SIA 2010-2015 * * 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. 125a-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 * */ var SCALE_MIN = 40; var MENU_SCALE_PART = 260; define(["text!spreadsheeteditor/main/app/template/RightMenu.template", "jquery", "underscore", "backbone", "common/main/lib/component/Button", "common/main/lib/component/MetricSpinner", "common/main/lib/component/CheckBox", "spreadsheeteditor/main/app/view/ParagraphSettings", "spreadsheeteditor/main/app/view/ImageSettings", "spreadsheeteditor/main/app/view/ChartSettings", "spreadsheeteditor/main/app/view/ShapeSettings", "common/main/lib/component/Scroller"], function (menuTemplate, $, _, Backbone) { SSE.Views.RightMenu = Backbone.View.extend(_.extend({ el: "#right-menu", template: _.template(menuTemplate), events: {}, initialize: function () { this.minimizedMode = true; this.btnText = new Common.UI.Button({ hint: this.txtParagraphSettings, asctype: c_oAscTypeSelectElement.Paragraph, enableToggle: true, disabled: true, toggleGroup: "tabpanelbtnsGroup" }); this.btnImage = new Common.UI.Button({ hint: this.txtImageSettings, asctype: c_oAscTypeSelectElement.Image, enableToggle: true, disabled: true, toggleGroup: "tabpanelbtnsGroup" }); this.btnChart = new Common.UI.Button({ hint: this.txtChartSettings, asctype: c_oAscTypeSelectElement.Chart, enableToggle: true, disabled: true, toggleGroup: "tabpanelbtnsGroup" }); this.btnShape = new Common.UI.Button({ hint: this.txtShapeSettings, asctype: c_oAscTypeSelectElement.Shape, enableToggle: true, disabled: true, toggleGroup: "tabpanelbtnsGroup" }); this._settings = []; this._settings[c_oAscTypeSelectElement.Paragraph] = { panel: "id-paragraph-settings", btn: this.btnText }; this._settings[c_oAscTypeSelectElement.Image] = { panel: "id-image-settings", btn: this.btnImage }; this._settings[c_oAscTypeSelectElement.Shape] = { panel: "id-shape-settings", btn: this.btnShape }; this._settings[c_oAscTypeSelectElement.Chart] = { panel: "id-chart-settings", btn: this.btnChart }; return this; }, render: function () { var el = $(this.el); this.trigger("render:before", this); el.css("width", "40px"); el.css("z-index", 101); el.show(); el.html(this.template({})); this.btnText.el = $("#id-right-menu-text"); this.btnText.render(); this.btnImage.el = $("#id-right-menu-image"); this.btnImage.render(); this.btnChart.el = $("#id-right-menu-chart"); this.btnChart.render(); this.btnShape.el = $("#id-right-menu-shape"); this.btnShape.render(); this.btnText.on("click", _.bind(this.onBtnMenuClick, this)); this.btnImage.on("click", _.bind(this.onBtnMenuClick, this)); this.btnChart.on("click", _.bind(this.onBtnMenuClick, this)); this.btnShape.on("click", _.bind(this.onBtnMenuClick, this)); this.paragraphSettings = new SSE.Views.ParagraphSettings(); this.imageSettings = new SSE.Views.ImageSettings(); this.chartSettings = new SSE.Views.ChartSettings(); this.shapeSettings = new SSE.Views.ShapeSettings(); if (_.isUndefined(this.scroller)) { this.scroller = new Common.UI.Scroller({ el: $(this.el).find(".right-panel"), suppressScrollX: true, useKeyboard: false }); } this.trigger("render:after", this); return this; }, setApi: function (api) { this.api = api; this.paragraphSettings.setApi(api); this.imageSettings.setApi(api); this.chartSettings.setApi(api); this.shapeSettings.setApi(api); }, setMode: function (mode) {}, onBtnMenuClick: function (btn, e) { var target_pane = $("#" + this._settings[btn.options.asctype].panel); var target_pane_parent = target_pane.parent(); if (btn.pressed) { if (this.minimizedMode) { $(this.el).width(MENU_SCALE_PART); target_pane_parent.css("display", "inline-block"); this.minimizedMode = false; window.localStorage.setItem("sse-hidden-right-settings", 0); } target_pane_parent.find("> .active").removeClass("active"); target_pane.addClass("active"); if (this.scroller) { this.scroller.scrollTop(0); } } else { target_pane_parent.css("display", "none"); $(this.el).width(SCALE_MIN); this.minimizedMode = true; window.localStorage.setItem("sse-hidden-right-settings", 1); } this.fireEvent("rightmenuclick", [this, btn.options.asctype, this.minimizedMode]); }, SetActivePane: function (type, open) { if (this.minimizedMode && open !== true || this._settings[type] === undefined) { return; } if (this.minimizedMode) { this._settings[type].btn.toggle(true, false); this._settings[type].btn.trigger("click", this._settings[type].btn); } else { var target_pane = $("#" + this._settings[type].panel); if (!target_pane.hasClass("active")) { target_pane.parent().find("> .active").removeClass("active"); target_pane.addClass("active"); if (this.scroller) { this.scroller.update(); } } if (!this._settings[type].btn.isActive()) { this._settings[type].btn.toggle(true, false); } } }, GetActivePane: function () { return (this.minimizedMode) ? null : $(".settings-panel.active")[0].id; }, SetDisabled: function (id, disabled, all) { if (all) { this.paragraphSettings.disableControls(disabled); this.shapeSettings.disableControls(disabled); this.imageSettings.disableControls(disabled); this.chartSettings.disableControls(disabled); } else { var cmp = $("#" + id); if (disabled !== cmp.hasClass("disabled")) { cmp.toggleClass("disabled", disabled); (disabled) ? cmp.attr({ disabled: disabled }) : cmp.removeAttr("disabled"); } } }, clearSelection: function () { var target_pane = $(".right-panel"); target_pane.find("> .active").removeClass("active"); _.each(this._settings, function (item) { if (item.btn.isActive()) { item.btn.toggle(false, true); } }); target_pane.css("display", "none"); $(this.el).width(SCALE_MIN); this.minimizedMode = true; window.localStorage.setItem("sse-hidden-right-settings", 1); Common.NotificationCenter.trigger("layout:changed", "rightmenu"); }, txtParagraphSettings: "Paragraph Settings", txtImageSettings: "Image Settings", txtShapeSettings: "Shape Settings", txtChartSettings: "Chart Settings" }, SSE.Views.RightMenu || {})); });