212 lines
9.7 KiB
JavaScript
212 lines
9.7 KiB
JavaScript
/*
|
|
* (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 || {}));
|
|
}); |