3.0 source code
This commit is contained in:
450
OfficeWeb/sdk/Excel/view/DrawingObjectsController.js
Normal file
450
OfficeWeb/sdk/Excel/view/DrawingObjectsController.js
Normal file
@@ -0,0 +1,450 @@
|
||||
/*
|
||||
* (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";
|
||||
if (window.editor === "undefined" && window["Asc"]["editor"]) {
|
||||
window.editor = window["Asc"]["editor"];
|
||||
}
|
||||
function CContentChangesElement(Type, Pos, Count, Data) {
|
||||
this.m_nType = Type;
|
||||
this.m_nPos = Pos;
|
||||
this.m_nCount = Count;
|
||||
this.m_pData = Data;
|
||||
this.Refresh_BinaryData = function () {
|
||||
this.m_pData.Pos = this.m_aPositions[0];
|
||||
if (editor && editor.isPresentationEditor) {
|
||||
var Binary_Writer = History.BinaryWriter;
|
||||
var Binary_Pos = Binary_Writer.GetCurPosition();
|
||||
this.m_pData.Data.UseArray = true;
|
||||
this.m_pData.Data.PosArray = this.m_aPositions;
|
||||
Binary_Writer.WriteString2(this.m_pData.Class.Get_Id());
|
||||
this.m_pData.Class.Save_Changes(this.m_pData.Data, Binary_Writer);
|
||||
var Binary_Len = Binary_Writer.GetCurPosition() - Binary_Pos;
|
||||
this.m_pData.Binary.Pos = Binary_Pos;
|
||||
this.m_pData.Binary.Len = Binary_Len;
|
||||
}
|
||||
};
|
||||
this.Check_Changes = function (Type, Pos) {
|
||||
var CurPos = Pos;
|
||||
if (contentchanges_Add === Type) {
|
||||
for (var Index = 0; Index < this.m_nCount; Index++) {
|
||||
if (false !== this.m_aPositions[Index]) {
|
||||
if (CurPos <= this.m_aPositions[Index]) {
|
||||
this.m_aPositions[Index]++;
|
||||
} else {
|
||||
if (contentchanges_Add === this.m_nType) {
|
||||
CurPos++;
|
||||
} else {
|
||||
CurPos--;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for (var Index = 0; Index < this.m_nCount; Index++) {
|
||||
if (false !== this.m_aPositions[Index]) {
|
||||
if (CurPos < this.m_aPositions[Index]) {
|
||||
this.m_aPositions[Index]--;
|
||||
} else {
|
||||
if (CurPos > this.m_aPositions[Index]) {
|
||||
if (contentchanges_Add === this.m_nType) {
|
||||
CurPos++;
|
||||
} else {
|
||||
CurPos--;
|
||||
}
|
||||
} else {
|
||||
if (contentchanges_Remove === this.m_nType) {
|
||||
this.m_aPositions[Index] = false;
|
||||
return false;
|
||||
} else {
|
||||
CurPos++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return CurPos;
|
||||
};
|
||||
this.Make_ArrayOfSimpleActions = function (Type, Pos, Count) {
|
||||
var Positions = [];
|
||||
if (contentchanges_Add === Type) {
|
||||
for (var Index = 0; Index < Count; Index++) {
|
||||
Positions[Index] = Pos + Index;
|
||||
}
|
||||
} else {
|
||||
for (var Index = 0; Index < Count; Index++) {
|
||||
Positions[Index] = Pos;
|
||||
}
|
||||
}
|
||||
return Positions;
|
||||
};
|
||||
this.m_aPositions = this.Make_ArrayOfSimpleActions(Type, Pos, Count);
|
||||
}
|
||||
function CContentChanges() {
|
||||
this.m_aChanges = [];
|
||||
this.Add = function (Changes) {
|
||||
this.m_aChanges.push(Changes);
|
||||
};
|
||||
this.Clear = function () {
|
||||
this.m_aChanges.length = 0;
|
||||
};
|
||||
this.Check = function (Type, Pos) {
|
||||
var CurPos = Pos;
|
||||
var Count = this.m_aChanges.length;
|
||||
for (var Index = 0; Index < Count; Index++) {
|
||||
var NewPos = this.m_aChanges[Index].Check_Changes(Type, CurPos);
|
||||
if (false === NewPos) {
|
||||
return false;
|
||||
}
|
||||
CurPos = NewPos;
|
||||
}
|
||||
return CurPos;
|
||||
};
|
||||
this.Refresh = function () {
|
||||
var Count = this.m_aChanges.length;
|
||||
for (var Index = 0; Index < Count; Index++) {
|
||||
this.m_aChanges[Index].Refresh_BinaryData();
|
||||
}
|
||||
};
|
||||
}
|
||||
function CheckIdSatetShapeAdd(state) {
|
||||
return ! (state instanceof NullState);
|
||||
}
|
||||
DrawingObjectsController.prototype.getTheme = function () {
|
||||
return window["Asc"]["editor"].wbModel.theme;
|
||||
};
|
||||
DrawingObjectsController.prototype.getDrawingArray = function () {
|
||||
var ret = [];
|
||||
var drawing_bases = this.drawingObjects.getDrawingObjects();
|
||||
for (var i = 0; i < drawing_bases.length; ++i) {
|
||||
ret.push(drawing_bases[i].graphicObject);
|
||||
}
|
||||
return ret;
|
||||
};
|
||||
DrawingObjectsController.prototype.setTableProps = function (props) {
|
||||
var by_type = this.getSelectedObjectsByTypes();
|
||||
if (by_type.tables.length === 1) {
|
||||
var target_text_object = getTargetTextObject(this);
|
||||
if (target_text_object === by_type.tables[0]) {
|
||||
by_type.tables[0].graphicObject.Set_Props(props);
|
||||
} else {
|
||||
by_type.tables[0].graphicObject.Select_All();
|
||||
by_type.tables[0].graphicObject.Set_Props(props);
|
||||
by_type.tables[0].graphicObject.Selection_Remove();
|
||||
}
|
||||
editor.WordControl.m_oLogicDocument.Check_GraphicFrameRowHeight(by_type.tables[0]);
|
||||
}
|
||||
};
|
||||
DrawingObjectsController.prototype.RefreshAfterChangeColorScheme = function () {
|
||||
var drawings = this.getDrawingArray();
|
||||
for (var i = 0; i < drawings.length; ++i) {
|
||||
if (drawings[i]) {
|
||||
drawings[i].handleUpdateFill();
|
||||
drawings[i].handleUpdateLn();
|
||||
drawings[i].addToRecalculate();
|
||||
}
|
||||
}
|
||||
};
|
||||
DrawingObjectsController.prototype.getLayout = function () {
|
||||
return null;
|
||||
};
|
||||
DrawingObjectsController.prototype.updateOverlay = function () {
|
||||
this.drawingObjects.OnUpdateOverlay();
|
||||
};
|
||||
DrawingObjectsController.prototype.recalculate = function (bAll, Point) {
|
||||
History.Get_RecalcData(Point);
|
||||
if (bAll) {
|
||||
var drawings = this.getDrawingObjects();
|
||||
for (var i = 0; i < drawings.length; ++i) {
|
||||
if (drawings[i].recalcText) {
|
||||
drawings[i].recalcText();
|
||||
}
|
||||
drawings[i].recalculate();
|
||||
}
|
||||
} else {
|
||||
for (var key in this.objectsForRecalculate) {
|
||||
this.objectsForRecalculate[key].recalculate();
|
||||
}
|
||||
}
|
||||
this.objectsForRecalculate = {};
|
||||
};
|
||||
DrawingObjectsController.prototype.recalculate2 = function (bAll) {
|
||||
if (bAll) {
|
||||
var drawings = this.getDrawingObjects();
|
||||
for (var i = 0; i < drawings.length; ++i) {
|
||||
if (drawings[i].recalcText) {
|
||||
drawings[i].recalcText();
|
||||
}
|
||||
drawings[i].recalculate();
|
||||
}
|
||||
} else {
|
||||
for (var key in this.objectsForRecalculate) {
|
||||
this.objectsForRecalculate[key].recalculate();
|
||||
}
|
||||
}
|
||||
this.objectsForRecalculate = {};
|
||||
};
|
||||
DrawingObjectsController.prototype.updateRecalcObjects = function () {};
|
||||
DrawingObjectsController.prototype.getTheme = function () {
|
||||
return window["Asc"]["editor"].wbModel.theme;
|
||||
};
|
||||
DrawingObjectsController.prototype.startRecalculate = function () {
|
||||
this.recalculate();
|
||||
this.drawingObjects.showDrawingObjects(true);
|
||||
};
|
||||
DrawingObjectsController.prototype.getDrawingObjects = function () {
|
||||
var ret = [];
|
||||
var drawing_bases = this.drawingObjects.getDrawingObjects();
|
||||
for (var i = 0; i < drawing_bases.length; ++i) {
|
||||
ret.push(drawing_bases[i].graphicObject);
|
||||
}
|
||||
return ret;
|
||||
};
|
||||
DrawingObjectsController.prototype.checkSelectedObjectsForMove = function (group) {
|
||||
var selected_object = group ? group.selectedObjects : this.selectedObjects;
|
||||
for (var i = 0; i < selected_object.length; ++i) {
|
||||
if (selected_object[i].canMove()) {
|
||||
this.arrPreTrackObjects.push(selected_object[i].createMoveTrack());
|
||||
}
|
||||
}
|
||||
};
|
||||
DrawingObjectsController.prototype.checkSelectedObjectsAndFireCallback = function (callback, args) {
|
||||
var selection_state = this.getSelectionState();
|
||||
this.drawingObjects.objectLocker.reset();
|
||||
for (var i = 0; i < this.selectedObjects.length; ++i) {
|
||||
this.drawingObjects.objectLocker.addObjectId(this.selectedObjects[i].Get_Id());
|
||||
}
|
||||
var _this = this;
|
||||
var callback2 = function (bLock, bSync) {
|
||||
if (bLock) {
|
||||
if (bSync !== true) {
|
||||
_this.setSelectionState(selection_state);
|
||||
}
|
||||
callback.apply(_this, args);
|
||||
}
|
||||
};
|
||||
this.drawingObjects.objectLocker.checkObjects(callback2);
|
||||
};
|
||||
DrawingObjectsController.prototype.onMouseDown = function (e, x, y) {
|
||||
e.ShiftKey = e.shiftKey;
|
||||
e.CtrlKey = e.metaKey || e.ctrlKey;
|
||||
e.Button = e.button;
|
||||
e.Type = g_mouse_event_type_down;
|
||||
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) {
|
||||
e.ShiftKey = e.shiftKey;
|
||||
e.CtrlKey = e.metaKey || e.ctrlKey;
|
||||
e.Button = e.button;
|
||||
e.Type = g_mouse_event_type_move;
|
||||
this.curState.onMouseMove(e, x, y, 0);
|
||||
};
|
||||
DrawingObjectsController.prototype.OnMouseMove = DrawingObjectsController.prototype.onMouseMove;
|
||||
DrawingObjectsController.prototype.onMouseUp = function (e, x, y) {
|
||||
e.ShiftKey = e.shiftKey;
|
||||
e.CtrlKey = e.metaKey || e.ctrlKey;
|
||||
e.Button = e.button;
|
||||
e.Type = g_mouse_event_type_up;
|
||||
this.curState.onMouseUp(e, x, y, 0);
|
||||
};
|
||||
DrawingObjectsController.prototype.OnMouseUp = DrawingObjectsController.prototype.onMouseUp;
|
||||
DrawingObjectsController.prototype.createGroup = function () {
|
||||
var group = this.getGroup();
|
||||
if (group) {
|
||||
var group_array = this.getArrayForGrouping();
|
||||
for (var i = group_array.length - 1; i > -1; --i) {
|
||||
group_array[i].deleteDrawingBase();
|
||||
}
|
||||
this.resetSelection();
|
||||
this.drawingObjects.getWorksheetModel && group.setWorksheet(this.drawingObjects.getWorksheetModel());
|
||||
group.setDrawingObjects(this.drawingObjects);
|
||||
if (this.drawingObjects && this.drawingObjects.cSld) {
|
||||
group.setParent(this.drawingObjects);
|
||||
}
|
||||
group.addToDrawingObjects();
|
||||
group.checkDrawingBaseCoords();
|
||||
this.selectObject(group, 0);
|
||||
group.addToRecalculate();
|
||||
this.startRecalculate();
|
||||
}
|
||||
};
|
||||
DrawingObjectsController.prototype.handleChartDoubleClick = function () {
|
||||
var drawingObjects = this.drawingObjects;
|
||||
this.checkSelectedObjectsAndFireCallback(function () {
|
||||
drawingObjects.showChartSettings();
|
||||
},
|
||||
[]);
|
||||
};
|
||||
DrawingObjectsController.prototype.addChartDrawingObject = function (options) {
|
||||
History.Create_NewPoint();
|
||||
var chart = this.getChartSpace(this.drawingObjects.getWorksheetModel(), options);
|
||||
if (chart) {
|
||||
chart.setWorksheet(this.drawingObjects.getWorksheetModel());
|
||||
chart.setStyle(2);
|
||||
chart.setBDeleted(false);
|
||||
this.resetSelection();
|
||||
var w, h;
|
||||
if (isRealObject(options) && isRealNumber(options.width) && isRealNumber(options.height)) {
|
||||
w = this.drawingObjects.convertMetric(options.width, 0, 3);
|
||||
h = this.drawingObjects.convertMetric(options.height, 0, 3);
|
||||
} else {
|
||||
w = this.drawingObjects.convertMetric(c_oAscChartDefines.defaultChartWidth, 0, 3);
|
||||
h = this.drawingObjects.convertMetric(c_oAscChartDefines.defaultChartHeight, 0, 3);
|
||||
}
|
||||
var chartLeft, chartTop;
|
||||
if (options && isRealNumber(options.left) && options.left >= 0 && isRealNumber(options.top) && options.top >= 0) {
|
||||
chartLeft = this.drawingObjects.convertMetric(options.left, 0, 3);
|
||||
chartTop = this.drawingObjects.convertMetric(options.top, 0, 3);
|
||||
} else {
|
||||
chartLeft = this.drawingObjects.convertMetric((this.drawingObjects.getContextWidth() - w) / 2, 0, 3);
|
||||
if (chartLeft < 0) {
|
||||
chartLeft = 0;
|
||||
}
|
||||
chartTop = this.drawingObjects.convertMetric((this.drawingObjects.getContextHeight() - h) / 2, 0, 3);
|
||||
if (chartTop < 0) {
|
||||
chartTop = 0;
|
||||
}
|
||||
}
|
||||
chart.setSpPr(new CSpPr());
|
||||
chart.spPr.setParent(chart);
|
||||
chart.spPr.setXfrm(new CXfrm());
|
||||
chart.spPr.xfrm.setParent(chart.spPr);
|
||||
chart.spPr.xfrm.setOffX(chartLeft);
|
||||
chart.spPr.xfrm.setOffY(chartTop);
|
||||
chart.spPr.xfrm.setExtX(w);
|
||||
chart.spPr.xfrm.setExtY(h);
|
||||
chart.setDrawingObjects(this.drawingObjects);
|
||||
chart.setWorksheet(this.drawingObjects.getWorksheetModel());
|
||||
chart.addToDrawingObjects();
|
||||
this.resetSelection();
|
||||
this.selectObject(chart, 0);
|
||||
if (options) {
|
||||
var old_range = options.getRange();
|
||||
options.putRange(null);
|
||||
this.editChartCallback(options);
|
||||
options.putRange(old_range);
|
||||
}
|
||||
chart.addToRecalculate();
|
||||
chart.checkDrawingBaseCoords();
|
||||
this.startRecalculate();
|
||||
this.drawingObjects.sendGraphicObjectProps();
|
||||
}
|
||||
};
|
||||
DrawingObjectsController.prototype.isPointInDrawingObjects = function (x, y, e) {
|
||||
this.handleEventMode = HANDLE_EVENT_MODE_CURSOR;
|
||||
var ret = this.curState.onMouseDown(e || {},
|
||||
x, y, 0);
|
||||
this.handleEventMode = HANDLE_EVENT_MODE_HANDLE;
|
||||
return ret;
|
||||
};
|
||||
DrawingObjectsController.prototype.handleDoubleClickOnChart = function (chart) {
|
||||
this.changeCurrentState(new NullState());
|
||||
};
|
||||
DrawingObjectsController.prototype.addImageFromParams = function (rasterImageId, x, y, extX, extY) {
|
||||
History.Create_NewPoint();
|
||||
var image = this.createImage(rasterImageId, x, y, extX, extY);
|
||||
this.resetSelection();
|
||||
image.setWorksheet(this.drawingObjects.getWorksheetModel());
|
||||
image.setDrawingObjects(this.drawingObjects);
|
||||
image.addToDrawingObjects();
|
||||
image.checkDrawingBaseCoords();
|
||||
this.selectObject(image, 0);
|
||||
image.addToRecalculate();
|
||||
this.startRecalculate();
|
||||
};
|
||||
DrawingObjectsController.prototype.isViewMode = function () {
|
||||
return this.drawingObjects.isViewerMode();
|
||||
};
|
||||
DrawingObjectsController.prototype.getDrawingDocument = function () {
|
||||
return this.drawingObjects.drawingDocument;
|
||||
};
|
||||
DrawingObjectsController.prototype.convertPixToMM = function (pix) {
|
||||
return this.drawingObjects ? this.drawingObjects.convertMetric(pix, 0, 3) : 0;
|
||||
};
|
||||
DrawingObjectsController.prototype.setParagraphNumbering = function (Bullet) {
|
||||
this.applyDocContentFunction(CDocumentContent.prototype.Set_ParagraphPresentationNumbering, [Bullet], CTable.prototype.Set_ParagraphPresentationNumbering);
|
||||
};
|
||||
DrawingObjectsController.prototype.setParagraphIndent = function (Indent) {
|
||||
if (isRealObject(Indent) && isRealNumber(Indent.Left) && Indent.Left < 0) {
|
||||
Indent.Left = 0;
|
||||
}
|
||||
this.applyDocContentFunction(CDocumentContent.prototype.Set_ParagraphIndent, [Indent], CTable.prototype.Set_ParagraphIndent);
|
||||
};
|
||||
DrawingObjectsController.prototype.paragraphIncDecIndent = function (bIncrease) {
|
||||
this.applyDocContentFunction(CDocumentContent.prototype.Increase_ParagraphLevel, [bIncrease], CTable.prototype.Increase_ParagraphLevel);
|
||||
};
|
||||
DrawingObjectsController.prototype.canIncreaseParagraphLevel = function (bIncrease) {
|
||||
var content = this.getTargetDocContent();
|
||||
if (content) {
|
||||
var target_text_object = getTargetTextObject(this);
|
||||
if (target_text_object && target_text_object.getObjectType() === historyitem_type_Shape && (!target_text_object.isPlaceholder() || !target_text_object.getPhType() !== phType_title && target_text_object.getPhType() !== phType_ctrTitle)) {
|
||||
return content.Can_IncreaseParagraphLevel(bIncrease);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
};
|
||||
DrawingObjectsController.prototype.onKeyPress = function (e) {
|
||||
if (true === this.isViewMode()) {
|
||||
return false;
|
||||
}
|
||||
if (e.CtrlKey || e.AltKey) {
|
||||
return false;
|
||||
}
|
||||
var Code;
|
||||
if (null != e.Which) {
|
||||
Code = e.Which;
|
||||
} else {
|
||||
if (e.KeyCode) {
|
||||
Code = e.KeyCode;
|
||||
} else {
|
||||
Code = 0;
|
||||
}
|
||||
}
|
||||
var bRetValue = false;
|
||||
if (Code > 32) {
|
||||
this.checkSelectedObjectsAndCallback(function () {
|
||||
this.paragraphAdd(new ParaText(String.fromCharCode(Code)));
|
||||
},
|
||||
[], false, historydescription_Spreadsheet_ParagraphAdd);
|
||||
bRetValue = true;
|
||||
}
|
||||
return bRetValue;
|
||||
};
|
||||
function CheckRightButtonEvent(e) {
|
||||
return e.button === 2;
|
||||
}
|
||||
Reference in New Issue
Block a user