288 lines
12 KiB
JavaScript
288 lines
12 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
|
|
*
|
|
*/
|
|
"use strict";
|
|
DrawingObjectsController.prototype.getTheme = function () {
|
|
return this.drawingObjects.Layout.Master.Theme;
|
|
};
|
|
DrawingObjectsController.prototype.getDrawingArray = function () {
|
|
return this.drawingObjects.cSld.spTree;
|
|
};
|
|
DrawingObjectsController.prototype.checkSelectedObjectsAndCallback = function (callback, args, bNoSendProps, nHistoryPointType) {
|
|
var check_type = changestype_Drawing_Props,
|
|
comment;
|
|
if (this.drawingObjects.slideComments) {
|
|
comment = this.drawingObjects.slideComments.getSelectedComment();
|
|
if (comment) {
|
|
check_type = changestype_MoveComment;
|
|
comment = comment.Get_Id();
|
|
}
|
|
}
|
|
if (editor.WordControl.m_oLogicDocument.Document_Is_SelectionLocked(check_type, comment) === false) {
|
|
var nPointType = isRealNumber(nHistoryPointType) ? nHistoryPointType : historydescription_CommonControllerCheckSelected;
|
|
History.Create_NewPoint(nPointType);
|
|
callback.apply(this, args);
|
|
this.startRecalculate();
|
|
}
|
|
};
|
|
DrawingObjectsController.prototype.startRecalculate = function () {
|
|
editor.WordControl.m_oLogicDocument.Recalculate();
|
|
};
|
|
DrawingObjectsController.prototype.getDrawingObjects = function () {
|
|
return this.drawingObjects.cSld.spTree;
|
|
};
|
|
DrawingObjectsController.prototype.paragraphFormatPaste = function (CopyTextPr, CopyParaPr, Bool) {
|
|
var _this = this;
|
|
this.checkSelectedObjectsAndCallback(function () {
|
|
this.applyTextFunction(CDocumentContent.prototype.Paragraph_Format_Paste, CTable.prototype.Paragraph_Format_Paste, [CopyTextPr, CopyParaPr, Bool]);
|
|
},
|
|
[CopyTextPr, CopyParaPr, Bool], false, historydescription_Presentation_ParaFormatPaste);
|
|
};
|
|
DrawingObjectsController.prototype.paragraphFormatPaste2 = function () {
|
|
return this.paragraphFormatPaste(editor.WordControl.m_oLogicDocument.CopyTextPr, editor.WordControl.m_oLogicDocument.CopyParaPr, true);
|
|
};
|
|
DrawingObjectsController.prototype.getDrawingDocument = function () {
|
|
return editor.WordControl.m_oDrawingDocument;
|
|
};
|
|
DrawingObjectsController.prototype.getTheme = function () {
|
|
return this.drawingObjects.Layout.Master.Theme;
|
|
};
|
|
DrawingObjectsController.prototype.onMouseDown = function (e, x, y) {
|
|
var ret = this.curState.onMouseDown(e, x, y, 0);
|
|
if (e.ClickCount < 2) {
|
|
this.updateOverlay();
|
|
this.updateSelectionState();
|
|
}
|
|
return ret;
|
|
};
|
|
DrawingObjectsController.prototype.OnMouseDown = DrawingObjectsController.prototype.onMouseDown;
|
|
DrawingObjectsController.prototype.onMouseMove = function (e, x, y) {
|
|
this.curState.onMouseMove(e, x, y, 0);
|
|
};
|
|
DrawingObjectsController.prototype.OnMouseMove = DrawingObjectsController.prototype.onMouseMove;
|
|
DrawingObjectsController.prototype.onMouseUp = function (e, x, y) {
|
|
this.curState.onMouseUp(e, x, y, 0);
|
|
};
|
|
DrawingObjectsController.prototype.OnMouseUp = DrawingObjectsController.prototype.onMouseUp;
|
|
DrawingObjectsController.prototype.convertPixToMM = function (pix) {
|
|
return editor.WordControl.m_oDrawingDocument.GetMMPerDot(pix);
|
|
};
|
|
DrawingObjectsController.prototype.resetSelect = function () {
|
|
this.checkChartTextSelection(true);
|
|
this.resetSelection();
|
|
this.clearPreTrackObjects();
|
|
this.clearTrackObjects();
|
|
this.changeCurrentState(new NullState(this));
|
|
};
|
|
DrawingObjectsController.prototype.checkSelectedObjectsAndFireCallback = function (callback, args) {
|
|
var check_type = changestype_Drawing_Props,
|
|
comment;
|
|
if (this.drawingObjects.slideComments) {
|
|
comment = this.drawingObjects.slideComments.getSelectedComment();
|
|
if (comment) {
|
|
check_type = changestype_MoveComment;
|
|
comment = comment.Get_Id();
|
|
}
|
|
}
|
|
if (editor.WordControl.m_oLogicDocument.Document_Is_SelectionLocked(check_type, comment) === false) {
|
|
callback.apply(this, args);
|
|
this.startRecalculate();
|
|
}
|
|
};
|
|
DrawingObjectsController.prototype.showChartSettings = function () {
|
|
editor.asc_doubleClickOnChart(this.getChartObject());
|
|
this.changeCurrentState(new NullState(this));
|
|
};
|
|
DrawingObjectsController.prototype.getColorMapOverride = function () {
|
|
return this.drawingObjects.Get_ColorMap();
|
|
};
|
|
DrawingObjectsController.prototype.editChart = function (binary) {
|
|
var bin_object = {
|
|
"binary": binary
|
|
};
|
|
var chart_space = this.getChartSpace2(bin_object, null);
|
|
chart_space.setParent(this.drawingObjects);
|
|
var by_types;
|
|
by_types = getObjectsByTypesFromArr(this.selectedObjects, true);
|
|
if (by_types.charts.length === 1) {
|
|
if (by_types.charts[0].group) {
|
|
var parent_group = by_types.charts[0].group;
|
|
var major_group = by_types.charts[0].getMainGroup();
|
|
for (var i = parent_group.spTree.length - 1; i > -1; --i) {
|
|
if (parent_group.spTree[i] === by_types.charts[0]) {
|
|
parent_group.removeFromSpTreeByPos(i);
|
|
chart_space.setGroup(parent_group);
|
|
chart_space.spPr.xfrm.setOffX(by_types.charts[0].spPr.xfrm.offX);
|
|
chart_space.spPr.xfrm.setOffY(by_types.charts[0].spPr.xfrm.offY);
|
|
parent_group.addToSpTree(i, chart_space);
|
|
parent_group.updateCoordinatesAfterInternalResize();
|
|
major_group.recalculate();
|
|
if (this.selection.groupSelection) {
|
|
this.selection.groupSelection.resetSelection();
|
|
this.selection.groupSelection.selectObject(chart_space, this.drawingObjects.num);
|
|
}
|
|
this.startRecalculate();
|
|
this.sendGraphicObjectProps();
|
|
return;
|
|
}
|
|
}
|
|
} else {
|
|
chart_space.spPr.xfrm.setOffX(by_types.charts[0].x);
|
|
chart_space.spPr.xfrm.setOffY(by_types.charts[0].y);
|
|
var pos = by_types.charts[0].deleteDrawingBase();
|
|
chart_space.addToDrawingObjects(pos);
|
|
this.resetSelection();
|
|
this.selectObject(chart_space, this.drawingObjects.num);
|
|
this.startRecalculate();
|
|
this.sendGraphicObjectProps();
|
|
this.updateOverlay();
|
|
}
|
|
}
|
|
};
|
|
DrawingObjectsController.prototype.handleSlideComments = function (e, x, y, pageIndex) {
|
|
var comments = this.drawingObjects.slideComments.comments,
|
|
i, index_selected = -1;
|
|
var ret = {
|
|
result: null,
|
|
selectedIndex: -1
|
|
};
|
|
if (this.handleEventMode === HANDLE_EVENT_MODE_HANDLE) {
|
|
editor.asc_hideComments();
|
|
for (i = comments.length - 1; i > -1; --i) {
|
|
if (comments[i].selected) {
|
|
index_selected = i;
|
|
}
|
|
comments[i].selected = false;
|
|
}
|
|
}
|
|
for (i = comments.length - 1; i > -1; --i) {
|
|
if (comments[i].hit(x, y)) {
|
|
if (this.handleEventMode === HANDLE_EVENT_MODE_HANDLE) {
|
|
comments[i].selected = true;
|
|
this.addPreTrackObject(new MoveComment(comments[i]));
|
|
this.changeCurrentState(new PreMoveCommentState(this, x, y, comments[i]));
|
|
if (i !== index_selected) {
|
|
this.drawingObjects.showDrawingObjects(true);
|
|
}
|
|
ret.result = true;
|
|
ret.selectedIndex = index_selected;
|
|
return ret;
|
|
} else {
|
|
ret.result = {
|
|
objectId: comments[i],
|
|
cursorType: "move"
|
|
};
|
|
ret.selectedIndex = index_selected;
|
|
return ret;
|
|
}
|
|
}
|
|
}
|
|
if (this.handleEventMode === HANDLE_EVENT_MODE_HANDLE) {
|
|
ret.result = false;
|
|
ret.selectedIndex = index_selected;
|
|
return ret;
|
|
} else {
|
|
ret.result = null;
|
|
ret.selectedIndex = index_selected;
|
|
return ret;
|
|
}
|
|
};
|
|
function PreMoveCommentState(drawingObjects, startX, startY, comment) {
|
|
this.drawingObjects = drawingObjects;
|
|
this.startX = startX;
|
|
this.startY = startY;
|
|
this.comment = comment;
|
|
}
|
|
PreMoveCommentState.prototype = {
|
|
onMouseDown: function (e, x, y, pageIndex) {
|
|
if (this.handleEventMode === HANDLE_EVENT_MODE_HANDLE) {
|
|
return true;
|
|
} else {
|
|
return {
|
|
objectId: this.comment,
|
|
cursorType: "move"
|
|
};
|
|
}
|
|
},
|
|
onMouseMove: function (e, x, y, pageIndex) {
|
|
if (Math.abs(this.startX - x) < MOVE_DELTA && Math.abs(this.startY - y) < MOVE_DELTA) {
|
|
return;
|
|
}
|
|
this.drawingObjects.swapTrackObjects();
|
|
this.drawingObjects.changeCurrentState(new MoveCommentState(this.drawingObjects, this.startX, this.startY, this.comment));
|
|
this.drawingObjects.onMouseMove(e, x, y);
|
|
},
|
|
onMouseUp: function (e, x, y, pageIndex) {
|
|
var Coords = editor.WordControl.m_oDrawingDocument.ConvertCoordsToCursorWR_Comment(this.comment.x, this.comment.y, this.drawingObjects.num);
|
|
editor.sync_HideComment();
|
|
editor.sync_ShowComment(this.comment.Id, Coords.X, Coords.Y);
|
|
editor.WordControl.m_oLogicDocument.noShowContextMenu = true;
|
|
this.drawingObjects.clearPreTrackObjects();
|
|
this.drawingObjects.changeCurrentState(new NullState(this.drawingObjects));
|
|
}
|
|
};
|
|
function MoveCommentState(drawingObjects, startX, startY, comment) {
|
|
this.drawingObjects = drawingObjects;
|
|
this.startX = startX;
|
|
this.startY = startY;
|
|
this.comment = comment;
|
|
}
|
|
MoveCommentState.prototype = {
|
|
onMouseDown: function (e, x, y, pageIndex) {
|
|
if (this.handleEventMode === HANDLE_EVENT_MODE_HANDLE) {
|
|
return true;
|
|
} else {
|
|
return {
|
|
objectId: this.comment,
|
|
cursorType: "move"
|
|
};
|
|
}
|
|
},
|
|
onMouseMove: function (e, x, y, pageIndex) {
|
|
var dx = x - this.startX;
|
|
var dy = y - this.startY;
|
|
this.drawingObjects.arrTrackObjects[0].track(dx, dy);
|
|
this.drawingObjects.updateOverlay();
|
|
},
|
|
onMouseUp: function (e, x, y, pageIndex) {
|
|
if (!this.drawingObjects.isViewMode() && editor.WordControl.m_oLogicDocument.Document_Is_SelectionLocked(changestype_MoveComment, this.comment.Get_Id()) === false) {
|
|
History.Create_NewPoint(historydescription_Presentation_MoveComments);
|
|
var tracks = this.drawingObjects.arrTrackObjects;
|
|
for (var i = 0; i < tracks.length; ++i) {
|
|
tracks[i].trackEnd();
|
|
}
|
|
this.drawingObjects.startRecalculate();
|
|
}
|
|
this.drawingObjects.clearTrackObjects();
|
|
this.drawingObjects.updateOverlay();
|
|
this.drawingObjects.changeCurrentState(new NullState(this.drawingObjects));
|
|
}
|
|
}; |