10275 lines
540 KiB
JavaScript
10275 lines
540 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";
|
|
var Page_Width = 210;
|
|
var Page_Height = 297;
|
|
var X_Left_Margin = 30;
|
|
var X_Right_Margin = 15;
|
|
var Y_Bottom_Margin = 20;
|
|
var Y_Top_Margin = 20;
|
|
var Y_Default_Header = 12.5;
|
|
var Y_Default_Footer = 12.5;
|
|
var X_Left_Field = X_Left_Margin;
|
|
var X_Right_Field = Page_Width - X_Right_Margin;
|
|
var Y_Bottom_Field = Page_Height - Y_Bottom_Margin;
|
|
var Y_Top_Field = Y_Top_Margin;
|
|
var docpostype_Content = 0;
|
|
var docpostype_FlowObjects = 1;
|
|
var docpostype_HdrFtr = 2;
|
|
var docpostype_DrawingObjects = 3;
|
|
var selectionflag_Common = 0;
|
|
var selectionflag_Numbering = 1;
|
|
var selectionflag_DrawingObject = 2;
|
|
var orientation_Portrait = 0;
|
|
var orientation_Landscape = 1;
|
|
var search_Common = 0;
|
|
var search_Header = 256;
|
|
var search_Footer = 512;
|
|
var search_HdrFtr_All = 1;
|
|
var search_HdrFtr_All_no_First = 2;
|
|
var search_HdrFtr_First = 3;
|
|
var search_HdrFtr_Even = 4;
|
|
var search_HdrFtr_Odd = 5;
|
|
var search_HdrFtr_Odd_no_First = 6;
|
|
var recalcresult_NextElement = 0;
|
|
var recalcresult_PrevPage = 1;
|
|
var recalcresult_CurPage = 2;
|
|
var recalcresult_NextPage = 3;
|
|
var recalcresult_NextLine = 4;
|
|
var recalcresult_CurLine = 5;
|
|
var recalcresult_CurPagePara = 6;
|
|
var recalcresult2_End = 0;
|
|
var recalcresult2_NextPage = 1;
|
|
var StartTime;
|
|
function CSelectedElement(Element, SelectedAll) {
|
|
this.Element = Element;
|
|
this.SelectedAll = SelectedAll;
|
|
}
|
|
function CSelectedContent() {
|
|
this.Elements = [];
|
|
this.DrawingObjects = [];
|
|
this.Comments = [];
|
|
this.Maths = [];
|
|
this.HaveShape = false;
|
|
this.MoveDrawing = false;
|
|
this.HaveMath = false;
|
|
}
|
|
CSelectedContent.prototype = {
|
|
Reset: function () {
|
|
this.Elements = [];
|
|
this.DrawingObjects = [];
|
|
this.Comments = [];
|
|
this.HaveShape = false;
|
|
},
|
|
Add: function (Element) {
|
|
this.Elements.push(Element);
|
|
},
|
|
Set_MoveDrawing: function (Value) {
|
|
this.MoveDrawing = Value;
|
|
},
|
|
On_EndCollectElements: function (LogicDocument, bNeedTurnOffHistory) {
|
|
var Count = this.Elements.length;
|
|
for (var Pos = 0; Pos < Count; Pos++) {
|
|
var Element = this.Elements[Pos].Element;
|
|
Element.Get_AllDrawingObjects(this.DrawingObjects);
|
|
Element.Get_AllComments(this.Comments);
|
|
Element.Get_AllMaths(this.Maths);
|
|
}
|
|
this.HaveMath = (this.Maths.length > 0 ? true : false);
|
|
Count = this.DrawingObjects.length;
|
|
for (var Pos = 0; Pos < Count; Pos++) {
|
|
var DrawingObj = this.DrawingObjects[Pos];
|
|
var ShapeType = DrawingObj.GraphicObj.getObjectType();
|
|
if (historyitem_type_Shape === ShapeType || historyitem_type_GroupShape === ShapeType) {
|
|
this.HaveShape = true;
|
|
break;
|
|
}
|
|
}
|
|
var Comments = {};
|
|
Count = this.Comments.length;
|
|
for (var Pos = 0; Pos < Count; Pos++) {
|
|
var Element = this.Comments[Pos];
|
|
var Id = Element.Comment.CommentId;
|
|
if (undefined === Comments[Id]) {
|
|
Comments[Id] = {};
|
|
}
|
|
if (true === Element.Comment.Start) {
|
|
Comments[Id].Start = Element.Paragraph;
|
|
} else {
|
|
Comments[Id].End = Element.Paragraph;
|
|
}
|
|
}
|
|
var NewComments = [];
|
|
for (var Id in Comments) {
|
|
var Element = Comments[Id];
|
|
var Para = null;
|
|
if (undefined === Element.Start && undefined !== Element.End) {
|
|
Para = Element.End;
|
|
} else {
|
|
if (undefined !== Element.Start && undefined === Element.End) {
|
|
Para = Element.Start;
|
|
} else {
|
|
if (undefined !== Element.Start && undefined !== Element.End) {
|
|
NewComments.push(Id);
|
|
}
|
|
}
|
|
}
|
|
if (null !== Para) {
|
|
var OldVal = Para.DeleteCommentOnRemove;
|
|
Para.DeleteCommentOnRemove = false;
|
|
Para.Remove_CommentMarks(Id);
|
|
Para.DeleteCommentOnRemove = OldVal;
|
|
}
|
|
}
|
|
Count = NewComments.length;
|
|
var Count2 = this.Comments.length;
|
|
var DocumentComments = LogicDocument.Comments;
|
|
for (var Pos = 0; Pos < Count; Pos++) {
|
|
var Id = NewComments[Pos];
|
|
var OldComment = DocumentComments.Get_ById(Id);
|
|
if (null !== OldComment) {
|
|
var NewComment = OldComment.Copy();
|
|
if (true !== bNeedTurnOffHistory) {
|
|
DocumentComments.Add(NewComment);
|
|
editor.sync_AddComment(NewComment.Get_Id(), NewComment.Data);
|
|
for (var Pos2 = 0; Pos2 < Count2; Pos2++) {
|
|
var Element = this.Comments[Pos2].Comment;
|
|
if (Id === Element.CommentId) {
|
|
Element.Set_CommentId(NewComment.Get_Id());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
};
|
|
function CDocumentRecalculateState() {
|
|
this.Id = null;
|
|
this.PageIndex = 0;
|
|
this.Start = true;
|
|
this.StartIndex = 0;
|
|
this.StartPage = 0;
|
|
this.NewSection = false;
|
|
this.MainStartPos = -1;
|
|
}
|
|
function Document_Recalculate_Page() {
|
|
var LogicDocument = editor.WordControl.m_oLogicDocument;
|
|
LogicDocument.Recalculate_Page();
|
|
}
|
|
function CDocumentPage() {
|
|
this.Width = 0;
|
|
this.Height = 0;
|
|
this.Margins = {
|
|
Left: 0,
|
|
Right: 0,
|
|
Top: 0,
|
|
Bottom: 0
|
|
};
|
|
this.Bounds = new CDocumentBounds(0, 0, 0, 0);
|
|
this.Pos = 0;
|
|
this.EndPos = 0;
|
|
this.X = 0;
|
|
this.Y = 0;
|
|
this.XLimit = 0;
|
|
this.YLimit = 0;
|
|
this.EndSectionParas = [];
|
|
}
|
|
CDocumentPage.prototype = {
|
|
Update_Limits: function (Limits) {
|
|
this.X = Limits.X;
|
|
this.XLimit = Limits.XLimit;
|
|
this.Y = Limits.Y;
|
|
this.YLimit = Limits.YLimit;
|
|
},
|
|
Shift: function (Dx, Dy) {
|
|
this.X += Dx;
|
|
this.XLimit += Dx;
|
|
this.Y += Dy;
|
|
this.YLimit += Dy;
|
|
this.Bounds.Shift(Dx, Dy);
|
|
},
|
|
Check_EndSectionPara: function (Element) {
|
|
var Count = this.EndSectionParas.length;
|
|
for (var Index = 0; Index < Count; Index++) {
|
|
if (Element === this.EndSectionParas[Index]) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
},
|
|
Copy: function () {
|
|
var NewPage = new CDocumentPage();
|
|
NewPage.Width = this.Width;
|
|
NewPage.Height = this.Height;
|
|
NewPage.Margins.Left = this.Margins.Left;
|
|
NewPage.Margins.Right = this.Margins.Right;
|
|
NewPage.Margins.Top = this.Margins.Top;
|
|
NewPage.Margins.Bottom = this.Margins.Bottom;
|
|
NewPage.Bounds.Left = this.Bounds.Left;
|
|
NewPage.Bounds.Right = this.Bounds.Right;
|
|
NewPage.Bounds.Top = this.Bounds.Top;
|
|
NewPage.Bounds.Bottom = this.Bounds.Bottom;
|
|
NewPage.Pos = this.Pos;
|
|
NewPage.EndPos = this.EndPos;
|
|
NewPage.X = this.X;
|
|
NewPage.Y = this.Y;
|
|
NewPage.XLimit = this.XLimit;
|
|
NewPage.YLimit = this.YLimit;
|
|
return NewPage;
|
|
}
|
|
};
|
|
function CStatistics(LogicDocument) {
|
|
this.LogicDocument = LogicDocument;
|
|
this.Id = null;
|
|
this.StartPos = 0;
|
|
this.CurPage = 0;
|
|
this.Pages = 0;
|
|
this.Words = 0;
|
|
this.Paragraphs = 0;
|
|
this.SymbolsWOSpaces = 0;
|
|
this.SymbolsWhSpaces = 0;
|
|
}
|
|
CStatistics.prototype = {
|
|
Start: function () {
|
|
this.StartPos = 0;
|
|
this.CurPage = 0;
|
|
this.Pages = 0;
|
|
this.Words = 0;
|
|
this.Paragraphs = 0;
|
|
this.SymbolsWOSpaces = 0;
|
|
this.SymbolsWhSpaces = 0;
|
|
this.Id = setTimeout(function () {
|
|
editor.WordControl.m_oLogicDocument.Statistics_OnPage();
|
|
},
|
|
1);
|
|
this.Send();
|
|
},
|
|
Next: function (StartPos, CurPage) {
|
|
clearTimeout(this.Id);
|
|
this.StartPos = StartPos;
|
|
this.CurPage = CurPage;
|
|
this.Id = setTimeout(function () {
|
|
editor.WordControl.m_oLogicDocument.Statistics_OnPage();
|
|
},
|
|
1);
|
|
this.Send();
|
|
},
|
|
Stop: function () {
|
|
if (null != this.Id) {
|
|
this.Send();
|
|
clearTimeout(this.Id);
|
|
this.Id = null;
|
|
editor.sync_GetDocInfoEndCallback();
|
|
}
|
|
},
|
|
Send: function () {
|
|
var Stats = {
|
|
PageCount: this.Pages,
|
|
WordsCount: this.Words,
|
|
ParagraphCount: this.Paragraphs,
|
|
SymbolsCount: this.SymbolsWOSpaces,
|
|
SymbolsWSCount: this.SymbolsWhSpaces
|
|
};
|
|
editor.sync_DocInfoCallback(Stats);
|
|
},
|
|
Add_Paragraph: function (Count) {
|
|
if ("undefined" != typeof(Count)) {
|
|
this.Paragraphs += Count;
|
|
} else {
|
|
this.Paragraphs++;
|
|
}
|
|
},
|
|
Add_Word: function (Count) {
|
|
if ("undefined" != typeof(Count)) {
|
|
this.Words += Count;
|
|
} else {
|
|
this.Words++;
|
|
}
|
|
},
|
|
Add_Page: function (Count) {
|
|
if ("undefined" != typeof(Count)) {
|
|
this.Pages += Count;
|
|
} else {
|
|
this.Pages++;
|
|
}
|
|
},
|
|
Add_Symbol: function (bSpace) {
|
|
this.SymbolsWhSpaces++;
|
|
if (true != bSpace) {
|
|
this.SymbolsWOSpaces++;
|
|
}
|
|
}
|
|
};
|
|
function CDocumentRecalcInfo() {
|
|
this.FlowObject = null;
|
|
this.FlowObjectPageBreakBefore = false;
|
|
this.FlowObjectPage = 0;
|
|
this.FlowObjectElementsCount = 0;
|
|
this.RecalcResult = recalcresult_NextElement;
|
|
this.WidowControlParagraph = null;
|
|
this.WidowControlLine = -1;
|
|
this.WidowControlReset = false;
|
|
this.KeepNextParagraph = null;
|
|
this.FrameRecalc = false;
|
|
}
|
|
CDocumentRecalcInfo.prototype = {
|
|
Reset: function () {
|
|
this.FlowObject = null;
|
|
this.FlowObjectPageBreakBefore = false;
|
|
this.FlowObjectPage = 0;
|
|
this.FlowObjectElementsCount = 0;
|
|
this.RecalcResult = recalcresult_NextElement;
|
|
this.WidowControlParagraph = null;
|
|
this.WidowControlLine = -1;
|
|
this.WidowControlReset = false;
|
|
this.KeepNextParagraph = null;
|
|
},
|
|
Can_RecalcObject: function () {
|
|
if (null === this.FlowObject && null === this.WidowControlParagraph && null === this.KeepNextParagraph) {
|
|
return true;
|
|
}
|
|
return false;
|
|
},
|
|
Set_FlowObject: function (Object, RelPage, RecalcResult, ElementsCount) {
|
|
this.FlowObject = Object;
|
|
this.FlowObjectPage = RelPage;
|
|
this.FlowObjectElementsCount = ElementsCount;
|
|
this.RecalcResult = RecalcResult;
|
|
},
|
|
Check_FlowObject: function (FlowObject) {
|
|
if (FlowObject === this.FlowObject) {
|
|
return true;
|
|
}
|
|
return false;
|
|
},
|
|
Set_PageBreakBefore: function (Value) {
|
|
this.FlowObjectPageBreakBefore = Value;
|
|
},
|
|
Is_PageBreakBefore: function () {
|
|
return this.FlowObjectPageBreakBefore;
|
|
},
|
|
Set_WidowControl: function (Paragraph, Line) {
|
|
this.WidowControlParagraph = Paragraph;
|
|
this.WidowControlLine = Line;
|
|
},
|
|
Check_WidowControl: function (Paragraph, Line) {
|
|
if (Paragraph === this.WidowControlParagraph && Line === this.WidowControlLine) {
|
|
return true;
|
|
}
|
|
return false;
|
|
},
|
|
Set_KeepNext: function (Paragraph) {
|
|
this.KeepNextParagraph = Paragraph;
|
|
},
|
|
Check_KeepNext: function (Paragraph) {
|
|
if (Paragraph === this.KeepNextParagraph) {
|
|
return true;
|
|
}
|
|
return false;
|
|
},
|
|
Reset_WidowControl: function () {
|
|
this.WidowControlReset = true;
|
|
},
|
|
Set_FrameRecalc: function (Value) {
|
|
this.FrameRecalc = Value;
|
|
}
|
|
};
|
|
function CDocument(DrawingDocument) {
|
|
this.History = History;
|
|
History.Document = this;
|
|
this.IdCounter = g_oIdCounter;
|
|
this.TableId = g_oTableId;
|
|
this.CollaborativeEditing = null;
|
|
if (typeof CollaborativeEditing !== "undefined") {
|
|
this.CollaborativeEditing = CollaborativeEditing;
|
|
}
|
|
this.Id = g_oIdCounter.Get_NewId();
|
|
this.StartPage = 0;
|
|
this.CurPage = 0;
|
|
this.StyleCounter = 0;
|
|
this.NumInfoCounter = 0;
|
|
this.SectPr = new CSectionPr(this);
|
|
this.SectionsInfo = new CDocumentSectionsInfo();
|
|
this.Content = [];
|
|
this.Content[0] = new Paragraph(DrawingDocument, this, 0, 0, 0, 0, 0);
|
|
this.Content[0].Set_DocumentNext(null);
|
|
this.Content[0].Set_DocumentPrev(null);
|
|
this.ContentLastChangePos = 0;
|
|
this.CurPos = {
|
|
X: 0,
|
|
Y: 0,
|
|
ContentPos: 0,
|
|
RealX: 0,
|
|
RealY: 0,
|
|
Type: docpostype_Content
|
|
};
|
|
this.Selection = {
|
|
Start: false,
|
|
Use: false,
|
|
StartPos: 0,
|
|
EndPos: 0,
|
|
Flag: selectionflag_Common,
|
|
Data: null,
|
|
UpdateOnRecalc: false,
|
|
DragDrop: {
|
|
Flag: 0,
|
|
Data: null
|
|
}
|
|
};
|
|
this.Pages = [];
|
|
this.RecalcInfo = new CDocumentRecalcInfo();
|
|
this.RecalcId = 0;
|
|
this.FullRecalc = new CDocumentRecalculateState();
|
|
this.TurnOffRecalc = false;
|
|
this.TurnOffInterfaceEvents = false;
|
|
this.TurnOffRecalcCurPos = false;
|
|
this.CheckEmptyElementsOnSelection = true;
|
|
this.Numbering = new CNumbering();
|
|
this.Styles = new CStyles();
|
|
this.DrawingDocument = DrawingDocument;
|
|
this.NeedUpdateTarget = false;
|
|
this.ReindexStartPos = -1;
|
|
this.HdrFtr = new CHeaderFooterController(this, this.DrawingDocument);
|
|
this.SearchInfo = {
|
|
Id: null,
|
|
StartPos: 0,
|
|
CurPage: 0,
|
|
String: null
|
|
};
|
|
this.TargetPos = {
|
|
X: 0,
|
|
Y: 0,
|
|
PageNum: 0
|
|
};
|
|
this.CopyTextPr = null;
|
|
this.CopyParaPr = null;
|
|
this.Statistics = new CStatistics(this);
|
|
this.HighlightColor = null;
|
|
if (typeof CComments !== "undefined") {
|
|
this.Comments = new CComments();
|
|
}
|
|
this.Lock = new CLock();
|
|
this.m_oContentChanges = new CContentChanges();
|
|
this.DrawingObjects = null;
|
|
if (typeof CGraphicObjects !== "undefined") {
|
|
this.DrawingObjects = new CGraphicObjects(this, this.DrawingDocument, editor);
|
|
}
|
|
this.theme = GenerateDefaultTheme(this);
|
|
this.clrSchemeMap = GenerateDefaultColorMap();
|
|
this.SearchEngine = null;
|
|
if (typeof CDocumentSearch !== "undefined") {
|
|
this.SearchEngine = new CDocumentSearch();
|
|
}
|
|
this.Spelling = new CDocumentSpelling();
|
|
this.UseTextShd = true;
|
|
g_oTableId.Add(this, this.Id);
|
|
}
|
|
var selected_None = -1;
|
|
var selected_DrawingObject = 0;
|
|
var selected_DrawingObjectText = 1;
|
|
function CSelectedElementsInfo() {
|
|
this.m_bTable = false;
|
|
this.m_bMixedSelection = false;
|
|
this.m_nDrawing = selected_None;
|
|
this.m_pParagraph = null;
|
|
this.m_oMath = null;
|
|
this.m_oHyperlink = null;
|
|
this.Reset = function () {
|
|
this.m_bSelection = false;
|
|
this.m_bTable = false;
|
|
this.m_bMixedSelection = false;
|
|
this.m_nDrawing = -1;
|
|
};
|
|
this.Set_Paragraph = function (Para) {
|
|
this.m_pParagraph = Para;
|
|
};
|
|
this.Set_Math = function (Math) {
|
|
this.m_oMath = Math;
|
|
};
|
|
this.Set_Hyperlink = function (Hyperlink) {
|
|
this.m_oHyperlink = Hyperlink;
|
|
};
|
|
this.Get_Paragraph = function () {
|
|
return this.m_pParagraph;
|
|
};
|
|
this.Get_Math = function () {
|
|
return this.m_oMath;
|
|
};
|
|
this.Get_Hyperlink = function () {
|
|
return this.m_oHyperlink;
|
|
};
|
|
this.Set_Table = function () {
|
|
this.m_bTable = true;
|
|
};
|
|
this.Set_Drawing = function (nDrawing) {
|
|
this.m_nDrawing = nDrawing;
|
|
};
|
|
this.Is_DrawingObjSelected = function () {
|
|
return (this.m_nDrawing === selected_DrawingObject ? true : false);
|
|
};
|
|
this.Set_MixedSelection = function () {
|
|
this.m_bMixedSelection = true;
|
|
};
|
|
this.Is_InTable = function () {
|
|
return this.m_bTable;
|
|
};
|
|
this.Is_MixedSelection = function () {
|
|
return this.m_bMixedSelection;
|
|
};
|
|
}
|
|
CDocument.prototype = {
|
|
Init: function () {},
|
|
Get_Id: function () {
|
|
return this.Id;
|
|
},
|
|
Set_Id: function (newId) {
|
|
g_oTableId.Reset_Id(this, newId, this.Id);
|
|
this.Id = newId;
|
|
},
|
|
On_EndLoad: function () {
|
|
this.Update_SectionsInfo();
|
|
this.Check_SectionLastParagraph();
|
|
if (null != this.DrawingObjects) {
|
|
this.DrawingObjects.addToZIndexManagerAfterOpen();
|
|
}
|
|
this.Cursor_MoveToStartPos(false);
|
|
if (editor.DocInfo) {
|
|
var TemplateReplacementData = editor.DocInfo.get_TemplateReplacement();
|
|
if (null !== TemplateReplacementData) {
|
|
this.private_ProcessTemplateReplacement(TemplateReplacementData);
|
|
}
|
|
}
|
|
},
|
|
Add_TestDocument: function () {
|
|
this.Content = [];
|
|
var Text = ["Comparison view helps you track down memory leaks, by displaying which objects have been correctly cleaned up by the garbage collector. Generally used to record and compare two (or more) memory snapshots of before and after an operation. The idea is that inspecting the delta in freed memory and reference count lets you confirm the presence and cause of a memory leak.", "Containment view provides a better view of object structure, helping us analyse objects referenced in the global namespace (i.e. window) to find out what is keeping them around. It lets you analyse closures and dive into your objects at a low level.", "Dominators view helps confirm that no unexpected references to objects are still hanging around (i.e that they are well contained) and that deletion/garbage collection is actually working."];
|
|
var ParasCount = 50;
|
|
var RunsCount = Text.length;
|
|
for (var ParaIndex = 0; ParaIndex < ParasCount; ParaIndex++) {
|
|
var Para = new Paragraph(this.DrawingDocument, this, 0, 0, 0, 0, 0);
|
|
for (var RunIndex = 0; RunIndex < RunsCount; RunIndex++) {
|
|
var String = Text[RunIndex];
|
|
var StringLen = String.length;
|
|
for (var TextIndex = 0; TextIndex < StringLen; TextIndex++) {
|
|
var Run = new ParaRun(Para);
|
|
var TextElement = String[TextIndex];
|
|
var Element = (TextElement !== " " ? new ParaText(TextElement) : new ParaSpace());
|
|
Run.Add_ToContent(TextIndex, Element, false);
|
|
Para.Add_ToContent(0, Run);
|
|
}
|
|
}
|
|
this.Internal_Content_Add(this.Content.length, Para);
|
|
}
|
|
var RecalculateData = {
|
|
Inline: {
|
|
Pos: 0,
|
|
PageNum: 0
|
|
},
|
|
Flow: [],
|
|
HdrFtr: [],
|
|
Drawings: {
|
|
All: true,
|
|
Map: {}
|
|
}
|
|
};
|
|
this.Recalculate(false, false, RecalculateData);
|
|
},
|
|
LoadEmptyDocument: function () {
|
|
this.DrawingDocument.TargetStart();
|
|
this.Recalculate();
|
|
this.Interface_Update_ParaPr();
|
|
this.Interface_Update_TextPr();
|
|
},
|
|
Set_CurrentElement: function (Index, bUpdateStates) {
|
|
var OldDocPosType = this.CurPos.Type;
|
|
var ContentPos = Math.max(0, Math.min(this.Content.length - 1, Index));
|
|
this.CurPos.Type = docpostype_Content;
|
|
this.CurPos.ContentPos = Math.max(0, Math.min(this.Content.length - 1, Index));
|
|
if (true === this.Content[ContentPos].Is_SelectionUse()) {
|
|
this.Selection.Flag = selectionflag_Common;
|
|
this.Selection.Use = true;
|
|
this.Selection.StartPos = ContentPos;
|
|
this.Selection.EndPos = ContentPos;
|
|
} else {
|
|
this.Selection_Remove();
|
|
}
|
|
if (false != bUpdateStates) {
|
|
this.Document_UpdateInterfaceState();
|
|
this.Document_UpdateRulersState();
|
|
this.Document_UpdateSelectionState();
|
|
}
|
|
if (docpostype_HdrFtr === OldDocPosType) {
|
|
this.DrawingDocument.ClearCachePages();
|
|
this.DrawingDocument.FirePaint();
|
|
}
|
|
},
|
|
Is_ThisElementCurrent: function () {
|
|
return true;
|
|
},
|
|
Update_ConentIndexing: function () {
|
|
if (-1 !== this.ReindexStartPos) {
|
|
for (var Index = this.ReindexStartPos, Count = this.Content.length; Index < Count; Index++) {
|
|
this.Content[Index].Index = Index;
|
|
}
|
|
this.ReindexStartPos = -1;
|
|
}
|
|
},
|
|
protected_ReindexContent: function (StartPos) {
|
|
if (-1 === this.ReindexStartPos || this.ReindexStartPos > StartPos) {
|
|
this.ReindexStartPos = StartPos;
|
|
}
|
|
},
|
|
Get_PageContentStartPos: function (PageIndex, ElementIndex) {
|
|
if (undefined === ElementIndex && undefined !== this.Pages[PageIndex]) {
|
|
ElementIndex = this.Pages[PageIndex].Pos;
|
|
}
|
|
var SectPr = this.SectionsInfo.Get_SectPr(ElementIndex).SectPr;
|
|
var Y = SectPr.PageMargins.Top;
|
|
var YLimit = SectPr.PageSize.H - SectPr.PageMargins.Bottom;
|
|
var X = SectPr.PageMargins.Left;
|
|
var XLimit = SectPr.PageSize.W - SectPr.PageMargins.Right;
|
|
var HdrFtrLine = this.HdrFtr.Get_HdrFtrLines(PageIndex);
|
|
var YHeader = HdrFtrLine.Top;
|
|
if (null !== YHeader && YHeader > Y) {
|
|
Y = YHeader;
|
|
}
|
|
var YFooter = HdrFtrLine.Bottom;
|
|
if (null !== YFooter && YFooter < YLimit) {
|
|
YLimit = YFooter;
|
|
}
|
|
return {
|
|
X: X,
|
|
Y: Y,
|
|
XLimit: XLimit,
|
|
YLimit: YLimit
|
|
};
|
|
},
|
|
Get_PageLimits: function (PageIndex) {
|
|
var Index = (undefined !== this.Pages[PageIndex] ? this.Pages[PageIndex].Pos : 0);
|
|
var SectPr = this.SectionsInfo.Get_SectPr(Index).SectPr;
|
|
var W = SectPr.Get_PageWidth();
|
|
var H = SectPr.Get_PageHeight();
|
|
return {
|
|
X: 0,
|
|
Y: 0,
|
|
XLimit: W,
|
|
YLimit: H
|
|
};
|
|
},
|
|
Get_PageFields: function (PageIndex) {
|
|
var Index = (undefined !== this.Pages[PageIndex] ? this.Pages[PageIndex].Pos : 0);
|
|
var SectPr = this.SectionsInfo.Get_SectPr(Index).SectPr;
|
|
var Y = SectPr.PageMargins.Top;
|
|
var YLimit = SectPr.PageSize.H - SectPr.PageMargins.Bottom;
|
|
var X = SectPr.PageMargins.Left;
|
|
var XLimit = SectPr.PageSize.W - SectPr.PageMargins.Right;
|
|
return {
|
|
X: X,
|
|
Y: Y,
|
|
XLimit: XLimit,
|
|
YLimit: YLimit
|
|
};
|
|
},
|
|
Get_Theme: function () {
|
|
return this.theme;
|
|
},
|
|
Get_ColorMap: function () {
|
|
return this.clrSchemeMap;
|
|
},
|
|
TurnOff_Recalculate: function () {
|
|
this.TurnOffRecalc = true;
|
|
},
|
|
TurnOn_Recalculate: function (bRecalculate) {
|
|
this.TurnOffRecalc = false;
|
|
if (bRecalculate) {
|
|
this.Recalculate();
|
|
}
|
|
},
|
|
Recalculate: function (bOneParagraph, bRecalcContentLast, _RecalcData) {
|
|
StartTime = new Date().getTime();
|
|
if (true === this.TurnOffRecalc) {
|
|
return;
|
|
}
|
|
if (false != this.SearchEngine.ClearOnRecalc) {
|
|
var bOldSearch = (this.SearchEngine.Count > 0 ? true : false);
|
|
this.SearchEngine.Clear();
|
|
if (true === bOldSearch) {
|
|
editor.sync_SearchEndCallback();
|
|
this.DrawingDocument.ClearCachePages();
|
|
this.DrawingDocument.FirePaint();
|
|
}
|
|
}
|
|
this.NeedUpdateTarget = true;
|
|
this.RecalcId++;
|
|
if (undefined === _RecalcData) {
|
|
var SimpleChanges = History.Is_SimpleChanges();
|
|
if (1 === SimpleChanges.length) {
|
|
var Run = SimpleChanges[0].Class;
|
|
var Para = Run.Paragraph;
|
|
var Res = Para.Recalculate_FastRange(SimpleChanges);
|
|
if (-1 !== Res) {
|
|
if (Res === Para.Get_StartPage_Absolute() + Para.Pages.length - 1) {
|
|
var NextElement = Para.Get_DocumentNext();
|
|
if (null !== NextElement && true === this.Pages[Res].Check_EndSectionPara(NextElement)) {
|
|
var LastVisibleBounds = Para.Get_LastRangeVisibleBounds();
|
|
var ___X = LastVisibleBounds.X + LastVisibleBounds.W;
|
|
var ___Y = LastVisibleBounds.Y;
|
|
NextElement.Reset(___X, ___Y, Math.max(___X + 10, NextElement.XLimit), 10000, Res);
|
|
NextElement.Recalculate_Page(Res);
|
|
}
|
|
}
|
|
this.DrawingDocument.OnRecalculatePage(Res, this.Pages[Res]);
|
|
this.DrawingDocument.OnEndRecalculate(false, true);
|
|
History.Reset_RecalcIndex();
|
|
this.private_UpdateCursorXY(true, true);
|
|
return;
|
|
}
|
|
}
|
|
if (SimpleChanges.length >= 1) {
|
|
var Run = SimpleChanges[0].Class;
|
|
var Para = Run.Paragraph;
|
|
var FastPages = Para.Recalculate_FastWholeParagraph();
|
|
var FastPagesCount = FastPages.length;
|
|
if (FastPagesCount > 0) {
|
|
var NextElement = Para.Get_DocumentNext();
|
|
var LastFastPage = FastPages[FastPagesCount - 1];
|
|
if (null !== NextElement && true === this.Pages[LastFastPage].Check_EndSectionPara(NextElement)) {
|
|
var LastVisibleBounds = Para.Get_LastRangeVisibleBounds();
|
|
var ___X = LastVisibleBounds.X + LastVisibleBounds.W;
|
|
var ___Y = LastVisibleBounds.Y;
|
|
NextElement.Reset(___X, ___Y, Math.max(___X + 10, NextElement.XLimit), 10000, LastFastPage);
|
|
NextElement.Recalculate_Page(LastFastPage);
|
|
}
|
|
for (var Index = 0; Index < FastPagesCount; Index++) {
|
|
var PageIndex = FastPages[Index];
|
|
this.DrawingDocument.OnRecalculatePage(PageIndex, this.Pages[PageIndex]);
|
|
}
|
|
this.DrawingDocument.OnEndRecalculate(false, true);
|
|
History.Reset_RecalcIndex();
|
|
this.private_UpdateCursorXY(true, true);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
this.RecalcInfo.Reset();
|
|
var ChangeIndex = 0;
|
|
var MainChange = false;
|
|
var RecalcData = (undefined === _RecalcData ? History.Get_RecalcData() : _RecalcData);
|
|
History.Reset_RecalcIndex();
|
|
this.DrawingObjects.recalculate_(RecalcData.Drawings);
|
|
this.DrawingObjects.recalculateText_(RecalcData.Drawings);
|
|
for (var GraphIndex = 0; GraphIndex < RecalcData.Flow.length; GraphIndex++) {
|
|
RecalcData.Flow[GraphIndex].recalculateDocContent();
|
|
}
|
|
var SectPrIndex = -1;
|
|
for (var HdrFtrIndex = 0; HdrFtrIndex < RecalcData.HdrFtr.length; HdrFtrIndex++) {
|
|
var HdrFtr = RecalcData.HdrFtr[HdrFtrIndex];
|
|
var FindIndex = this.SectionsInfo.Find_ByHdrFtr(HdrFtr);
|
|
if (-1 === FindIndex) {
|
|
continue;
|
|
}
|
|
var SectPr = this.SectionsInfo.Get_SectPr2(FindIndex).SectPr;
|
|
var HdrFtrInfo = SectPr.Get_HdrFtrInfo(HdrFtr);
|
|
if (null !== HdrFtrInfo) {
|
|
var bHeader = HdrFtrInfo.Header;
|
|
var bFirst = HdrFtrInfo.First;
|
|
var bEven = HdrFtrInfo.Even;
|
|
var CheckSectIndex = -1;
|
|
if (true === bFirst) {
|
|
var CurSectIndex = FindIndex;
|
|
var SectCount = this.SectionsInfo.Elements.length;
|
|
while (CurSectIndex < SectCount) {
|
|
var CurSectPr = this.SectionsInfo.Get_SectPr2(CurSectIndex).SectPr;
|
|
if (FindIndex === CurSectIndex || null === CurSectPr.Get_HdrFtr(bHeader, bFirst, bEven)) {
|
|
if (true === CurSectPr.Get_TitlePage()) {
|
|
CheckSectIndex = CurSectIndex;
|
|
break;
|
|
}
|
|
} else {
|
|
break;
|
|
}
|
|
CurSectIndex++;
|
|
}
|
|
} else {
|
|
if (true === bEven) {
|
|
if (true === EvenAndOddHeaders) {
|
|
CheckSectIndex = FindIndex;
|
|
}
|
|
} else {
|
|
CheckSectIndex = FindIndex;
|
|
}
|
|
}
|
|
if (-1 !== CheckSectIndex && (-1 === SectPrIndex || CheckSectIndex < SectPrIndex)) {
|
|
SectPrIndex = CheckSectIndex;
|
|
}
|
|
}
|
|
}
|
|
if (-1 === RecalcData.Inline.Pos && -1 === SectPrIndex) {
|
|
ChangeIndex = -1;
|
|
RecalcData.Inline.PageNum = 0;
|
|
} else {
|
|
if (-1 === RecalcData.Inline.Pos) {
|
|
MainChange = false;
|
|
ChangeIndex = (0 === SectPrIndex ? 0 : this.SectionsInfo.Get_SectPr2(SectPrIndex - 1).Index + 1);
|
|
RecalcData.Inline.PageNum = 0;
|
|
} else {
|
|
if (-1 === SectPrIndex) {
|
|
MainChange = true;
|
|
ChangeIndex = RecalcData.Inline.Pos;
|
|
} else {
|
|
MainChange = true;
|
|
ChangeIndex = RecalcData.Inline.Pos;
|
|
var ChangeIndex2 = (0 === SectPrIndex ? 0 : this.SectionsInfo.Get_SectPr2(SectPrIndex - 1).Index + 1);
|
|
if (ChangeIndex2 <= ChangeIndex) {
|
|
ChangeIndex = ChangeIndex2;
|
|
RecalcData.Inline.PageNum = 0;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (ChangeIndex < 0) {
|
|
this.DrawingDocument.ClearCachePages();
|
|
this.DrawingDocument.FirePaint();
|
|
return;
|
|
} else {
|
|
if (ChangeIndex >= this.Content.length) {
|
|
ChangeIndex = this.Content.length - 1;
|
|
}
|
|
}
|
|
while (ChangeIndex > 0) {
|
|
var PrevElement = this.Content[ChangeIndex - 1];
|
|
if (type_Paragraph === PrevElement.Get_Type() && true === PrevElement.Get_CompiledPr2(false).ParaPr.KeepNext) {
|
|
ChangeIndex--;
|
|
RecalcData.Inline.PageNum = PrevElement.Get_StartPage_Absolute() + (PrevElement.Pages.length - 1);
|
|
} else {
|
|
break;
|
|
}
|
|
}
|
|
var StartPage = 0;
|
|
var StartIndex = 0;
|
|
var ChangedElement = this.Content[ChangeIndex];
|
|
if (ChangedElement.Pages.length > 0 && -1 !== ChangedElement.Index && ChangedElement.Get_StartPage_Absolute() < RecalcData.Inline.PageNum - 1) {
|
|
StartIndex = ChangeIndex;
|
|
StartPage = RecalcData.Inline.PageNum - 1;
|
|
} else {
|
|
var PagesCount = this.Pages.length;
|
|
for (var PageIndex = 0; PageIndex < PagesCount; PageIndex++) {
|
|
if (ChangeIndex > this.Pages[PageIndex].Pos) {
|
|
StartPage = PageIndex;
|
|
StartIndex = this.Pages[PageIndex].Pos;
|
|
} else {
|
|
break;
|
|
}
|
|
}
|
|
if (ChangeIndex === StartIndex && StartPage < RecalcData.Inline.PageNum) {
|
|
StartPage = RecalcData.Inline.PageNum - 1;
|
|
}
|
|
}
|
|
if (null != this.FullRecalc.Id) {
|
|
clearTimeout(this.FullRecalc.Id);
|
|
this.FullRecalc.Id = null;
|
|
this.DrawingDocument.OnEndRecalculate(false);
|
|
if (this.FullRecalc.StartIndex < StartIndex) {
|
|
StartIndex = this.FullRecalc.StartIndex;
|
|
StartPage = this.FullRecalc.PageIndex;
|
|
}
|
|
}
|
|
var bNewSection = (0 === StartPage ? true : false);
|
|
if (0 !== StartPage) {
|
|
var PrevStartIndex = this.Pages[StartPage - 1].Pos;
|
|
var CurSectInfo = this.SectionsInfo.Get_SectPr(StartIndex);
|
|
var PrevSectInfo = this.SectionsInfo.Get_SectPr(PrevStartIndex);
|
|
if (PrevSectInfo !== CurSectInfo && (section_type_Continuous !== CurSectInfo.SectPr.Get_Type() || true !== CurSectInfo.SectPr.Compare_PageSize(PrevSectInfo.SectPr))) {
|
|
bNewSection = true;
|
|
}
|
|
}
|
|
this.FullRecalc.PageIndex = StartPage;
|
|
this.FullRecalc.Start = true;
|
|
this.FullRecalc.StartIndex = StartIndex;
|
|
this.FullRecalc.StartPage = StartPage;
|
|
this.FullRecalc.NewSection = bNewSection;
|
|
if (true === MainChange) {
|
|
this.FullRecalc.MainStartPos = StartIndex;
|
|
}
|
|
this.DrawingDocument.OnStartRecalculate(StartPage);
|
|
this.Recalculate_Page();
|
|
},
|
|
Recalculate_Page: function () {
|
|
var PageIndex = this.FullRecalc.PageIndex;
|
|
var bStart = this.FullRecalc.Start;
|
|
var StartIndex = this.FullRecalc.StartIndex;
|
|
var bStartNewSection = this.FullRecalc.NewSection;
|
|
var SectElement = this.SectionsInfo.Get_SectPr(StartIndex);
|
|
var OldPage = (undefined !== this.Pages[PageIndex] ? this.Pages[PageIndex] : null);
|
|
if (true === bStart) {
|
|
this.Pages[PageIndex] = new CDocumentPage();
|
|
this.Pages[PageIndex].Pos = StartIndex;
|
|
if (true === this.HdrFtr.Recalculate(PageIndex)) {
|
|
this.FullRecalc.MainStartPos = StartIndex;
|
|
}
|
|
var SectPr = this.SectionsInfo.Get_SectPr(StartIndex).SectPr;
|
|
this.Pages[PageIndex].Width = SectPr.PageSize.W;
|
|
this.Pages[PageIndex].Height = SectPr.PageSize.H;
|
|
this.Pages[PageIndex].Margins.Left = SectPr.PageMargins.Left;
|
|
this.Pages[PageIndex].Margins.Top = SectPr.PageMargins.Top;
|
|
this.Pages[PageIndex].Margins.Right = SectPr.PageSize.W - SectPr.PageMargins.Right;
|
|
this.Pages[PageIndex].Margins.Bottom = SectPr.PageSize.H - SectPr.PageMargins.Bottom;
|
|
}
|
|
var Count = this.Content.length;
|
|
var MainStartPos = this.FullRecalc.MainStartPos;
|
|
if (null !== OldPage && (-1 === MainStartPos || MainStartPos > StartIndex)) {
|
|
if (OldPage.EndPos >= Count - 1 && PageIndex - this.Content[Count - 1].Get_StartPage_Absolute() >= this.Content[Count - 1].Pages.length - 1) {
|
|
this.Pages[PageIndex] = OldPage;
|
|
this.DrawingDocument.OnRecalculatePage(PageIndex, this.Pages[PageIndex]);
|
|
this.Internal_CheckCurPage();
|
|
this.DrawingDocument.OnEndRecalculate(true);
|
|
this.DrawingObjects.onEndRecalculateDocument(this.Pages.length);
|
|
if (true === this.Selection.UpdateOnRecalc) {
|
|
this.Selection.UpdateOnRecalc = false;
|
|
this.DrawingDocument.OnSelectEnd();
|
|
}
|
|
this.FullRecalc.Id = null;
|
|
this.FullRecalc.MainStartPos = -1;
|
|
return;
|
|
} else {
|
|
if (undefined !== this.Pages[PageIndex + 1]) {
|
|
this.Pages[PageIndex] = OldPage;
|
|
this.DrawingDocument.OnRecalculatePage(PageIndex, this.Pages[PageIndex]);
|
|
this.FullRecalc.PageIndex = PageIndex + 1;
|
|
this.FullRecalc.Start = true;
|
|
this.FullRecalc.StartIndex = this.Pages[PageIndex + 1].Pos;
|
|
this.FullRecalc.NewSection = false;
|
|
var CurSectInfo = this.SectionsInfo.Get_SectPr(this.Pages[PageIndex + 1].Pos);
|
|
var PrevSectInfo = this.SectionsInfo.Get_SectPr(this.Pages[PageIndex].EndPos);
|
|
if (PrevSectInfo !== CurSectInfo) {
|
|
this.FullRecalc.NewSection = true;
|
|
}
|
|
if (window["NATIVE_EDITOR_ENJINE_SYNC_RECALC"] === true) {
|
|
if (PageIndex + 1 > this.FullRecalc.StartPage + 2) {
|
|
if (window["native"]["WC_CheckSuspendRecalculate"] !== undefined) {
|
|
this.FullRecalc.Id = setTimeout(Document_Recalculate_Page, 10);
|
|
return;
|
|
}
|
|
}
|
|
this.Recalculate_Page();
|
|
return;
|
|
}
|
|
if (PageIndex + 1 > this.FullRecalc.StartPage + 2) {
|
|
this.FullRecalc.Id = setTimeout(Document_Recalculate_Page, 20);
|
|
} else {
|
|
this.Recalculate_Page();
|
|
}
|
|
return;
|
|
}
|
|
}
|
|
} else {
|
|
if (true === bStart) {
|
|
this.Pages.length = PageIndex + 1;
|
|
this.DrawingObjects.createGraphicPage(PageIndex);
|
|
this.DrawingObjects.resetDrawingArrays(PageIndex, this);
|
|
}
|
|
}
|
|
var StartPos = this.Get_PageContentStartPos(PageIndex, StartIndex);
|
|
var X = StartPos.X;
|
|
var StartY = StartPos.Y;
|
|
var Y = StartY;
|
|
var YLimit = StartPos.YLimit;
|
|
var XLimit = StartPos.XLimit;
|
|
var Page = this.Pages[PageIndex];
|
|
this.Pages[PageIndex].X = X;
|
|
this.Pages[PageIndex].XLimit = XLimit;
|
|
this.Pages[PageIndex].Y = Y;
|
|
this.Pages[PageIndex].YLimit = YLimit;
|
|
var bReDraw = true;
|
|
var bContinue = false;
|
|
var _PageIndex = PageIndex;
|
|
var _StartIndex = StartIndex;
|
|
var _bStart = false;
|
|
var _bStartNewSection = false;
|
|
var Index;
|
|
for (Index = StartIndex; Index < Count; Index++) {
|
|
var Element = this.Content[Index];
|
|
Element.TurnOff_RecalcEvent();
|
|
var RecalcResult = recalcresult_NextElement;
|
|
var bFlow = false;
|
|
if (type_Table === Element.GetType() && true != Element.Is_Inline()) {
|
|
bFlow = true;
|
|
if (true === this.RecalcInfo.Can_RecalcObject()) {
|
|
if ((0 === Index && 0 === PageIndex) || Index != StartIndex || (Index === StartIndex && true === bStartNewSection)) {
|
|
Element.Set_DocumentIndex(Index);
|
|
Element.Reset(X, Y, XLimit, YLimit, PageIndex);
|
|
}
|
|
var TempRecalcResult = Element.Recalculate_Page(PageIndex);
|
|
this.RecalcInfo.Set_FlowObject(Element, 0, TempRecalcResult, -1);
|
|
var FlowTable = new CFlowTable(Element, PageIndex);
|
|
this.DrawingObjects.addFloatTable(FlowTable);
|
|
if (0 === FlowTable.PageController) {
|
|
RecalcResult = recalcresult_CurPage;
|
|
} else {
|
|
RecalcResult = TempRecalcResult;
|
|
this.RecalcInfo.Reset();
|
|
}
|
|
} else {
|
|
if (true === this.RecalcInfo.Check_FlowObject(Element)) {
|
|
if (Element.PageNum > PageIndex || (this.RecalcInfo.FlowObjectPage <= 0 && Element.PageNum < PageIndex)) {
|
|
this.DrawingObjects.removeFloatTableById(PageIndex - 1, Element.Get_Id());
|
|
this.RecalcInfo.Set_PageBreakBefore(true);
|
|
RecalcResult = recalcresult_PrevPage;
|
|
} else {
|
|
if (Element.PageNum === PageIndex) {
|
|
if (true === this.RecalcInfo.Is_PageBreakBefore()) {
|
|
Element.Set_DocumentIndex(Index);
|
|
Element.Reset(X, Page.Height, XLimit, Page.Height, PageIndex);
|
|
Element.Recalculate_Page(PageIndex);
|
|
this.RecalcInfo.FlowObjectPage++;
|
|
RecalcResult = recalcresult_NextPage;
|
|
} else {
|
|
if ((0 === Index && 0 === PageIndex) || Index != StartIndex) {
|
|
Element.Set_DocumentIndex(Index);
|
|
Element.Reset(X, Y, XLimit, YLimit, PageIndex);
|
|
}
|
|
RecalcResult = Element.Recalculate_Page(PageIndex);
|
|
if (((0 === Index && 0 === PageIndex) || Index != StartIndex) && true != Element.Is_ContentOnFirstPage()) {
|
|
this.DrawingObjects.removeFloatTableById(PageIndex, Element.Get_Id());
|
|
this.RecalcInfo.Set_PageBreakBefore(true);
|
|
RecalcResult = recalcresult_CurPage;
|
|
} else {
|
|
this.RecalcInfo.FlowObjectPage++;
|
|
if (recalcresult_NextElement === RecalcResult) {
|
|
this.RecalcInfo.Reset();
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
RecalcResult = Element.Recalculate_Page(PageIndex);
|
|
this.DrawingObjects.addFloatTable(new CFlowTable(Element, PageIndex));
|
|
if (recalcresult_NextElement === RecalcResult) {
|
|
this.RecalcInfo.Reset();
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
RecalcResult = recalcresult_NextElement;
|
|
}
|
|
}
|
|
} else {
|
|
if (type_Paragraph === Element.GetType() && true != Element.Is_Inline()) {
|
|
bFlow = true;
|
|
if (true === this.RecalcInfo.Can_RecalcObject()) {
|
|
var FramePr = Element.Get_FramePr();
|
|
var FlowCount = 1;
|
|
for (var TempIndex = Index + 1; TempIndex < Count; TempIndex++) {
|
|
var TempElement = this.Content[TempIndex];
|
|
if (type_Paragraph === TempElement.GetType() && true != TempElement.Is_Inline()) {
|
|
var TempFramePr = TempElement.Get_FramePr();
|
|
if (true === FramePr.Compare(TempFramePr)) {
|
|
FlowCount++;
|
|
} else {
|
|
break;
|
|
}
|
|
} else {
|
|
break;
|
|
}
|
|
}
|
|
var Page_W = Page.Width;
|
|
var Page_H = Page.Height;
|
|
var Page_Field_L = Page.Margins.Left;
|
|
var Page_Field_R = Page.Margins.Right;
|
|
var Page_Field_T = Page.Margins.Top;
|
|
var Page_Field_B = Page.Margins.Bottom;
|
|
var FrameH = 0;
|
|
var FrameW = -1;
|
|
var Frame_XLimit = FramePr.Get_W();
|
|
var Frame_YLimit = FramePr.Get_H();
|
|
if (undefined === Frame_XLimit) {
|
|
Frame_XLimit = Page_Field_R - Page_Field_L;
|
|
}
|
|
if (undefined === Frame_YLimit) {
|
|
Frame_YLimit = Page_H;
|
|
}
|
|
for (var TempIndex = Index; TempIndex < Index + FlowCount; TempIndex++) {
|
|
var TempElement = this.Content[TempIndex];
|
|
TempElement.Set_DocumentIndex(TempIndex);
|
|
if (Index != TempIndex || (true != this.RecalcInfo.FrameRecalc && ((0 === Index && 0 === PageIndex) || Index != StartIndex || (Index === StartIndex && true === bStartNewSection)))) {
|
|
TempElement.Reset(0, FrameH, Frame_XLimit, Frame_YLimit, PageIndex);
|
|
}
|
|
RecalcResult = TempElement.Recalculate_Page(PageIndex);
|
|
if (recalcresult_NextElement !== RecalcResult) {
|
|
break;
|
|
}
|
|
FrameH = TempElement.Get_PageBounds(PageIndex - TempElement.Get_StartPage_Absolute()).Bottom;
|
|
}
|
|
if (-1 === FrameW && 1 === FlowCount && 1 === Element.Lines.length && undefined === FramePr.Get_W()) {
|
|
FrameW = Element.Lines[0].Ranges[0].W;
|
|
var ParaPr = Element.Get_CompiledPr2(false).ParaPr;
|
|
FrameW += ParaPr.Ind.Left + ParaPr.Ind.FirstLine;
|
|
if (align_Left != ParaPr.Jc) {
|
|
TempElement.Reset(0, 0, FrameW, Frame_YLimit, PageIndex);
|
|
TempElement.Recalculate_Page(PageIndex);
|
|
FrameH = TempElement.Get_PageBounds(PageIndex - TempElement.Get_StartPage_Absolute()).Bottom;
|
|
}
|
|
} else {
|
|
if (-1 === FrameW) {
|
|
FrameW = Frame_XLimit;
|
|
}
|
|
}
|
|
var FrameHRule = (undefined === FramePr.HRule ? heightrule_Auto : FramePr.HRule);
|
|
switch (FrameHRule) {
|
|
case heightrule_Auto:
|
|
break;
|
|
case heightrule_AtLeast:
|
|
if (FrameH < FramePr.H) {
|
|
FrameH = FramePr.H;
|
|
}
|
|
break;
|
|
case heightrule_Exact:
|
|
FrameH = FramePr.H;
|
|
break;
|
|
}
|
|
var FrameHAnchor = (FramePr.HAnchor === undefined ? c_oAscHAnchor.Margin : FramePr.HAnchor);
|
|
var FrameVAnchor = (FramePr.VAnchor === undefined ? c_oAscVAnchor.Text : FramePr.VAnchor);
|
|
var FrameX = 0;
|
|
if (undefined != FramePr.XAlign || undefined === FramePr.X) {
|
|
var XAlign = c_oAscXAlign.Left;
|
|
if (undefined != FramePr.XAlign) {
|
|
XAlign = FramePr.XAlign;
|
|
}
|
|
switch (FrameHAnchor) {
|
|
case c_oAscHAnchor.Page:
|
|
switch (XAlign) {
|
|
case c_oAscXAlign.Inside:
|
|
case c_oAscXAlign.Outside:
|
|
case c_oAscXAlign.Left:
|
|
FrameX = Page_Field_L - FrameW;
|
|
break;
|
|
case c_oAscXAlign.Right:
|
|
FrameX = Page_Field_R;
|
|
break;
|
|
case c_oAscXAlign.Center:
|
|
FrameX = (Page_W - FrameW) / 2;
|
|
break;
|
|
}
|
|
break;
|
|
case c_oAscHAnchor.Text:
|
|
case c_oAscHAnchor.Margin:
|
|
switch (XAlign) {
|
|
case c_oAscXAlign.Inside:
|
|
case c_oAscXAlign.Outside:
|
|
case c_oAscXAlign.Left:
|
|
FrameX = Page_Field_L;
|
|
break;
|
|
case c_oAscXAlign.Right:
|
|
FrameX = Page_Field_R - FrameW;
|
|
break;
|
|
case c_oAscXAlign.Center:
|
|
FrameX = (Page_Field_R + Page_Field_L - FrameW) / 2;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
} else {
|
|
switch (FrameHAnchor) {
|
|
case c_oAscHAnchor.Page:
|
|
FrameX = FramePr.X;
|
|
break;
|
|
case c_oAscHAnchor.Text:
|
|
case c_oAscHAnchor.Margin:
|
|
FrameX = Page_Field_L + FramePr.X;
|
|
break;
|
|
}
|
|
}
|
|
if (FrameW + FrameX > Page_W) {
|
|
FrameX = Page_W - FrameW;
|
|
}
|
|
if (FrameX < 0) {
|
|
FrameX = 0;
|
|
}
|
|
var FrameY = 0;
|
|
if (undefined != FramePr.YAlign) {
|
|
var YAlign = FramePr.YAlign;
|
|
switch (FrameVAnchor) {
|
|
case c_oAscVAnchor.Page:
|
|
switch (YAlign) {
|
|
case c_oAscYAlign.Inside:
|
|
case c_oAscYAlign.Outside:
|
|
case c_oAscYAlign.Top:
|
|
FrameY = 0;
|
|
break;
|
|
case c_oAscYAlign.Bottom:
|
|
FrameY = Page_H - FrameH;
|
|
break;
|
|
case c_oAscYAlign.Center:
|
|
FrameY = (Page_H - FrameH) / 2;
|
|
break;
|
|
}
|
|
break;
|
|
case c_oAscVAnchor.Text:
|
|
FrameY = Y;
|
|
break;
|
|
case c_oAscVAnchor.Margin:
|
|
switch (YAlign) {
|
|
case c_oAscYAlign.Inside:
|
|
case c_oAscYAlign.Outside:
|
|
case c_oAscYAlign.Top:
|
|
FrameY = Page_Field_T;
|
|
break;
|
|
case c_oAscYAlign.Bottom:
|
|
FrameY = Page_Field_B - FrameH;
|
|
break;
|
|
case c_oAscYAlign.Center:
|
|
FrameY = (Page_Field_B + Page_Field_T - FrameH) / 2;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
} else {
|
|
var FramePrY = 0;
|
|
if (undefined != FramePr.Y) {
|
|
FramePrY = FramePr.Y;
|
|
}
|
|
switch (FrameVAnchor) {
|
|
case c_oAscVAnchor.Page:
|
|
FrameY = FramePrY;
|
|
break;
|
|
case c_oAscVAnchor.Text:
|
|
FrameY = FramePrY + Y;
|
|
break;
|
|
case c_oAscVAnchor.Margin:
|
|
FrameY = FramePrY + Page_Field_T;
|
|
break;
|
|
}
|
|
}
|
|
if (FrameH + FrameY > Page_H) {
|
|
FrameY = Page_H - FrameH;
|
|
}
|
|
FrameY += 0.001;
|
|
FrameH -= 0.002;
|
|
if (FrameY < 0) {
|
|
FrameY = 0;
|
|
}
|
|
var FrameBounds = this.Content[Index].Get_FrameBounds(FrameX, FrameY, FrameW, FrameH);
|
|
var FrameX2 = FrameBounds.X,
|
|
FrameY2 = FrameBounds.Y,
|
|
FrameW2 = FrameBounds.W,
|
|
FrameH2 = FrameBounds.H;
|
|
if (recalcresult_NextElement !== RecalcResult) {
|
|
if (recalcresult_PrevPage === RecalcResult) {
|
|
this.RecalcInfo.Set_FrameRecalc(false);
|
|
}
|
|
} else {
|
|
if ((FrameY2 + FrameH2 > YLimit || Y > YLimit - 0.001) && Index != StartIndex) {
|
|
this.RecalcInfo.Set_FrameRecalc(true);
|
|
this.Content[Index].Start_FromNewPage();
|
|
RecalcResult = recalcresult_NextPage;
|
|
} else {
|
|
this.RecalcInfo.Set_FrameRecalc(false);
|
|
for (var TempIndex = Index; TempIndex < Index + FlowCount; TempIndex++) {
|
|
var TempElement = this.Content[TempIndex];
|
|
TempElement.Shift(TempElement.Pages.length - 1, FrameX, FrameY);
|
|
TempElement.Set_CalculatedFrame(FrameX, FrameY, FrameW, FrameH, FrameX2, FrameY2, FrameW2, FrameH2, PageIndex);
|
|
}
|
|
var FrameDx = (undefined === FramePr.HSpace ? 0 : FramePr.HSpace);
|
|
var FrameDy = (undefined === FramePr.VSpace ? 0 : FramePr.VSpace);
|
|
this.DrawingObjects.addFloatTable(new CFlowParagraph(Element, FrameX2, FrameY2, FrameW2, FrameH2, FrameDx, FrameDy, Index, FlowCount, FramePr.Wrap));
|
|
Index += FlowCount - 1;
|
|
if (FrameY >= Y) {
|
|
RecalcResult = recalcresult_NextElement;
|
|
} else {
|
|
this.RecalcInfo.Set_FlowObject(Element, PageIndex, recalcresult_NextElement, FlowCount);
|
|
RecalcResult = recalcresult_CurPage;
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
if (true === this.RecalcInfo.Check_FlowObject(Element) && true === this.RecalcInfo.Is_PageBreakBefore()) {
|
|
this.RecalcInfo.Reset();
|
|
this.RecalcInfo.Set_FrameRecalc(true);
|
|
this.Content[Index].Start_FromNewPage();
|
|
RecalcResult = recalcresult_NextPage;
|
|
} else {
|
|
if (true === this.RecalcInfo.Check_FlowObject(Element)) {
|
|
if (this.RecalcInfo.FlowObjectPage !== PageIndex) {
|
|
this.RecalcInfo.Set_PageBreakBefore(true);
|
|
this.DrawingObjects.removeFloatTableById(this.RecalcInfo.FlowObjectPage, Element.Get_Id());
|
|
RecalcResult = recalcresult_PrevPage;
|
|
} else {
|
|
Index += this.RecalcInfo.FlowObjectElementsCount - 1;
|
|
this.RecalcInfo.Reset();
|
|
RecalcResult = recalcresult_NextElement;
|
|
}
|
|
} else {
|
|
RecalcResult = recalcresult_NextElement;
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
if ((0 === Index && 0 === PageIndex) || Index != StartIndex || (Index === StartIndex && true === bStartNewSection)) {
|
|
Element.Set_DocumentIndex(Index);
|
|
Element.Reset(X, Y, XLimit, YLimit, PageIndex);
|
|
}
|
|
var SectInfoElement = this.SectionsInfo.Get_SectPr(Index);
|
|
var PrevElement = this.Content[Index - 1];
|
|
if (Index > 0 && (Index !== StartIndex || true !== bStartNewSection) && Index === SectInfoElement.Index && true === Element.IsEmpty() && (type_Paragraph !== PrevElement.GetType() || undefined === PrevElement.Get_SectionPr())) {
|
|
RecalcResult = recalcresult_NextElement;
|
|
var LastVisibleBounds = PrevElement.Get_LastRangeVisibleBounds();
|
|
var ___X = LastVisibleBounds.X + LastVisibleBounds.W;
|
|
var ___Y = LastVisibleBounds.Y;
|
|
var CompiledPr = Element.Get_CompiledPr2(false).ParaPr;
|
|
CompiledPr.Jc = align_Left;
|
|
CompiledPr.Ind.FirstLine = 0;
|
|
CompiledPr.Ind.Left = 0;
|
|
CompiledPr.Ind.Right = 0;
|
|
Element.Reset(___X, ___Y, Math.max(___X + 10, LastVisibleBounds.XLimit), 10000, PageIndex);
|
|
Element.Recalculate_Page(PageIndex);
|
|
Element.Recalc_CompiledPr();
|
|
Element.Pages[0].Y = ___Y;
|
|
Element.Lines[0].Top = 0;
|
|
Element.Lines[0].Y = LastVisibleBounds.BaseLine;
|
|
Element.Lines[0].Bottom = LastVisibleBounds.H;
|
|
Element.Pages[0].Bounds.Top = ___Y;
|
|
Element.Pages[0].Bounds.Bottom = ___Y + LastVisibleBounds.H;
|
|
this.Pages[PageIndex].EndSectionParas.push(Element);
|
|
bFlow = true;
|
|
} else {
|
|
RecalcResult = Element.Recalculate_Page(PageIndex);
|
|
}
|
|
}
|
|
}
|
|
Element.TurnOn_RecalcEvent();
|
|
if (recalcresult_CurPage === RecalcResult) {
|
|
bReDraw = false;
|
|
bContinue = true;
|
|
_PageIndex = PageIndex;
|
|
_StartIndex = StartIndex;
|
|
_bStart = false;
|
|
break;
|
|
} else {
|
|
if (recalcresult_NextElement === RecalcResult) {
|
|
if (Index < Count - 1) {
|
|
var CurSectInfo = this.SectionsInfo.Get_SectPr(Index);
|
|
var NextSectInfo = this.SectionsInfo.Get_SectPr(Index + 1);
|
|
if (CurSectInfo !== NextSectInfo) {
|
|
if (section_type_Continuous === NextSectInfo.SectPr.Get_Type() && true === CurSectInfo.SectPr.Compare_PageSize(NextSectInfo.SectPr)) {
|
|
var NewStartPos = this.Get_PageContentStartPos(PageIndex, Index + 1);
|
|
Y = Y + 0.001;
|
|
X = NewStartPos.X;
|
|
XLimit = NewStartPos.XLimit;
|
|
} else {
|
|
this.Pages[PageIndex].EndPos = Index;
|
|
bContinue = true;
|
|
_PageIndex = PageIndex + 1;
|
|
_StartIndex = Index + 1;
|
|
_bStart = true;
|
|
_bStartNewSection = true;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
if (recalcresult_NextPage === RecalcResult) {
|
|
this.Pages[PageIndex].EndPos = Index;
|
|
bContinue = true;
|
|
_PageIndex = PageIndex + 1;
|
|
_StartIndex = Index;
|
|
_bStart = true;
|
|
break;
|
|
} else {
|
|
if (recalcresult_PrevPage === RecalcResult) {
|
|
bReDraw = false;
|
|
bContinue = true;
|
|
_PageIndex = Math.max(PageIndex - 1, 0);
|
|
_StartIndex = this.Pages[_PageIndex].Pos;
|
|
_bStart = false;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (true != bFlow) {
|
|
var Bounds = Element.Get_PageBounds(PageIndex - Element.Get_StartPage_Absolute());
|
|
Y = Bounds.Bottom;
|
|
}
|
|
if (docpostype_Content == this.CurPos.Type && Index >= this.ContentLastChangePos && Index === this.CurPos.ContentPos) {
|
|
if (type_Paragraph === Element.GetType()) {
|
|
this.CurPage = Element.PageNum + Element.CurPos.PagesPos;
|
|
} else {
|
|
this.CurPage = Element.PageNum;
|
|
}
|
|
}
|
|
if (docpostype_Content === this.CurPos.Type && ((true !== this.Selection.Use && Index > this.CurPos.ContentPos) || (true === this.Selection.Use && Index > this.Selection.EndPos && Index > this.Selection.StartPos))) {
|
|
this.private_UpdateCursorXY(true, true);
|
|
}
|
|
}
|
|
if (Index >= Count) {
|
|
this.Pages[PageIndex].EndPos = Count - 1;
|
|
}
|
|
if (true === bReDraw) {
|
|
this.DrawingDocument.OnRecalculatePage(PageIndex, this.Pages[PageIndex]);
|
|
}
|
|
if (Index >= Count) {
|
|
this.Internal_CheckCurPage();
|
|
this.DrawingDocument.OnEndRecalculate(true);
|
|
this.DrawingObjects.onEndRecalculateDocument(this.Pages.length);
|
|
if (true === this.Selection.UpdateOnRecalc) {
|
|
this.Selection.UpdateOnRecalc = false;
|
|
this.DrawingDocument.OnSelectEnd();
|
|
}
|
|
this.FullRecalc.Id = null;
|
|
this.FullRecalc.MainStartPos = -1;
|
|
}
|
|
if (true === bContinue) {
|
|
this.FullRecalc.PageIndex = _PageIndex;
|
|
this.FullRecalc.Start = _bStart;
|
|
this.FullRecalc.StartIndex = _StartIndex;
|
|
this.FullRecalc.NewSection = _bStartNewSection;
|
|
this.FullRecalc.MainStartPos = _StartIndex;
|
|
if (window["NATIVE_EDITOR_ENJINE_SYNC_RECALC"] === true) {
|
|
if (_PageIndex > this.FullRecalc.StartPage + 2) {
|
|
if (window["native"]["WC_CheckSuspendRecalculate"] !== undefined) {
|
|
this.FullRecalc.Id = setTimeout(Document_Recalculate_Page, 10);
|
|
return;
|
|
}
|
|
}
|
|
this.Recalculate_Page();
|
|
return;
|
|
}
|
|
if (_PageIndex > this.FullRecalc.StartPage + 2) {
|
|
this.FullRecalc.Id = setTimeout(Document_Recalculate_Page, 20);
|
|
} else {
|
|
this.Recalculate_Page();
|
|
}
|
|
}
|
|
},
|
|
Reset_RecalculateCache: function () {
|
|
this.SectionsInfo.Reset_HdrFtrRecalculateCache();
|
|
var Count = this.Content.length;
|
|
for (var Index = 0; Index < Count; Index++) {
|
|
this.Content[Index].Reset_RecalculateCache();
|
|
}
|
|
},
|
|
Stop_Recalculate: function () {
|
|
if (null != this.FullRecalc.Id) {
|
|
clearTimeout(this.FullRecalc.Id);
|
|
this.FullRecalc.Id = null;
|
|
}
|
|
this.DrawingDocument.OnStartRecalculate(0);
|
|
},
|
|
OnContentRecalculate: function (bNeedRecalc, PageNum, DocumentIndex) {
|
|
if (false === bNeedRecalc) {
|
|
var Element = this.Content[DocumentIndex];
|
|
for (var PageNum = Element.PageNum; PageNum < Element.PageNum + Element.Pages.length; PageNum++) {
|
|
this.DrawingDocument.OnRecalculatePage(PageNum, this.Pages[PageNum]);
|
|
}
|
|
this.DrawingDocument.OnEndRecalculate(false, true);
|
|
this.Document_UpdateRulersState();
|
|
} else {
|
|
this.ContentLastChangePos = DocumentIndex;
|
|
this.Recalculate(false, false);
|
|
}
|
|
},
|
|
Recalculate_AllTables: function () {
|
|
var Count = this.Content.length;
|
|
for (var Pos = 0; Pos < Count; Pos++) {
|
|
var Item = this.Content[Pos];
|
|
if (type_Table === Item.GetType()) {
|
|
Item.Recalculate_AllTables();
|
|
}
|
|
}
|
|
},
|
|
OnContentReDraw: function (StartPage, EndPage) {
|
|
this.ReDraw(StartPage, EndPage);
|
|
},
|
|
CheckTargetUpdate: function () {
|
|
var bFlag = true;
|
|
if (this.DrawingDocument.UpdateTargetFromPaint === true) {
|
|
if (true === this.DrawingDocument.UpdateTargetCheck) {
|
|
this.NeedUpdateTarget = this.DrawingDocument.UpdateTargetCheck;
|
|
}
|
|
this.DrawingDocument.UpdateTargetCheck = false;
|
|
}
|
|
if (docpostype_Content === this.CurPos.Type) {
|
|
if (null != this.FullRecalc.Id && this.FullRecalc.StartIndex <= this.CurPos.ContentPos) {
|
|
bFlag = false;
|
|
}
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {} else {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {}
|
|
}
|
|
}
|
|
if (true === this.NeedUpdateTarget && true === bFlag && false === this.Selection_Is_TableBorderMove()) {
|
|
this.RecalculateCurPos();
|
|
this.NeedUpdateTarget = false;
|
|
}
|
|
},
|
|
RecalculateCurPos: function () {
|
|
if (true === this.TurnOffRecalcCurPos) {
|
|
return;
|
|
}
|
|
if (true === CollaborativeEditing.m_bGlobalLockSelection) {
|
|
return;
|
|
}
|
|
if (docpostype_Content === this.CurPos.Type) {
|
|
var Pos = (true === this.Selection.Use && selectionflag_Numbering !== this.Selection.Flag ? this.Selection.EndPos : this.CurPos.ContentPos);
|
|
if (Pos >= 0 && undefined !== this.Content[Pos].RecalculateCurPos && (null === this.FullRecalc.Id || this.FullRecalc.StartIndex > Pos)) {
|
|
this.Internal_CheckCurPage();
|
|
this.Content[Pos].RecalculateCurPos();
|
|
}
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
this.DrawingObjects.recalculateCurPos();
|
|
} else {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
this.HdrFtr.RecalculateCurPos();
|
|
}
|
|
}
|
|
}
|
|
this.Document_UpdateRulersState();
|
|
},
|
|
Internal_CheckCurPage: function () {
|
|
if (true === this.TurnOffRecalcCurPos) {
|
|
return;
|
|
}
|
|
if (true === CollaborativeEditing.m_bGlobalLockSelection) {
|
|
return;
|
|
}
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
var CurHdrFtr = this.HdrFtr.CurHdrFtr;
|
|
if (null !== CurHdrFtr && -1 !== CurHdrFtr.RecalcInfo.CurPage) {
|
|
this.CurPage = CurHdrFtr.RecalcInfo.CurPage;
|
|
}
|
|
}
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
var ParaDrawing = this.DrawingObjects.getMajorParaDrawing();
|
|
if (null != ParaDrawing) {
|
|
this.CurPage = ParaDrawing.PageNum;
|
|
}
|
|
} else {
|
|
var Pos = (true === this.Selection.Use && selectionflag_Numbering !== this.Selection.Flag ? this.Selection.EndPos : this.CurPos.ContentPos);
|
|
if (Pos >= 0 && (null === this.FullRecalc.Id || this.FullRecalc.StartIndex > Pos)) {
|
|
this.CurPage = this.Content[Pos].Get_CurrentPage_Absolute();
|
|
}
|
|
}
|
|
},
|
|
Set_TargetPos: function (X, Y, PageNum) {
|
|
this.TargetPos.X = X;
|
|
this.TargetPos.Y = Y;
|
|
this.TargetPos.PageNum = PageNum;
|
|
},
|
|
ReDraw: function (StartPage, EndPage) {
|
|
if ("undefined" === typeof(StartPage)) {
|
|
StartPage = 0;
|
|
}
|
|
if ("undefined" === typeof(EndPage)) {
|
|
EndPage = this.DrawingDocument.m_lCountCalculatePages;
|
|
}
|
|
for (var CurPage = StartPage; CurPage <= EndPage; CurPage++) {
|
|
this.DrawingDocument.OnRepaintPage(CurPage);
|
|
}
|
|
},
|
|
DrawPage: function (nPageIndex, pGraphics) {
|
|
this.Draw(nPageIndex, pGraphics);
|
|
},
|
|
Draw: function (nPageIndex, pGraphics) {
|
|
this.Comments.Reset_Drawing(nPageIndex);
|
|
var Page_StartPos = this.Pages[nPageIndex].Pos;
|
|
var SectPr = this.SectionsInfo.Get_SectPr(Page_StartPos).SectPr;
|
|
if (docpostype_HdrFtr !== this.CurPos.Type) {
|
|
pGraphics.Start_GlobalAlpha();
|
|
}
|
|
if (section_borders_ZOrderBack === SectPr.Get_Borders_ZOrder()) {
|
|
this.Draw_Borders(pGraphics, SectPr);
|
|
}
|
|
this.HdrFtr.Draw(nPageIndex, pGraphics);
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
pGraphics.put_GlobalAlpha(true, 0.4);
|
|
} else {
|
|
pGraphics.End_GlobalAlpha();
|
|
}
|
|
this.DrawingObjects.drawBehindDoc(nPageIndex, pGraphics);
|
|
this.DrawingObjects.drawWrappingObjects(nPageIndex, pGraphics);
|
|
var Page_StartPos = this.Pages[nPageIndex].Pos;
|
|
var Page_EndPos = this.Pages[nPageIndex].EndPos;
|
|
for (var Index = Page_StartPos; Index <= Page_EndPos; Index++) {
|
|
this.Content[Index].Draw(nPageIndex, pGraphics);
|
|
}
|
|
this.DrawingObjects.drawBeforeObjects(nPageIndex, pGraphics);
|
|
if (section_borders_ZOrderFront === SectPr.Get_Borders_ZOrder()) {
|
|
this.Draw_Borders(pGraphics, SectPr);
|
|
}
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
pGraphics.put_GlobalAlpha(false, 1);
|
|
var SectIndex = this.SectionsInfo.Get_Index(Page_StartPos);
|
|
var SectCount = this.SectionsInfo.Get_Count();
|
|
var SectIndex = (1 === SectCount ? -1 : SectIndex);
|
|
var Header = this.HdrFtr.Pages[nPageIndex].Header;
|
|
var Footer = this.HdrFtr.Pages[nPageIndex].Footer;
|
|
var RepH = (null === Header || null !== SectPr.Get_HdrFtrInfo(Header) ? false : true);
|
|
var RepF = (null === Footer || null !== SectPr.Get_HdrFtrInfo(Footer) ? false : true);
|
|
var HeaderInfo = undefined;
|
|
if (null !== Header && undefined !== Header.RecalcInfo.NeedRecalc[nPageIndex]) {
|
|
var bFirst = Header.RecalcInfo.NeedRecalc[nPageIndex].bFirst;
|
|
var bEven = Header.RecalcInfo.NeedRecalc[nPageIndex].bEven;
|
|
var HeaderSectPr = Header.RecalcInfo.SectPr[nPageIndex];
|
|
if (undefined !== HeaderSectPr) {
|
|
bFirst = (true === bFirst && true === HeaderSectPr.Get_TitlePage() ? true : false);
|
|
}
|
|
HeaderInfo = {
|
|
bFirst: bFirst,
|
|
bEven: bEven
|
|
};
|
|
}
|
|
var FooterInfo = undefined;
|
|
if (null !== Footer && undefined !== Footer.RecalcInfo.NeedRecalc[nPageIndex]) {
|
|
var bFirst = Footer.RecalcInfo.NeedRecalc[nPageIndex].bFirst;
|
|
var bEven = Footer.RecalcInfo.NeedRecalc[nPageIndex].bEven;
|
|
var FooterSectPr = Footer.RecalcInfo.SectPr[nPageIndex];
|
|
if (undefined !== FooterSectPr) {
|
|
bFirst = (true === bFirst && true === FooterSectPr.Get_TitlePage() ? true : false);
|
|
}
|
|
FooterInfo = {
|
|
bFirst: bFirst,
|
|
bEven: bEven
|
|
};
|
|
}
|
|
pGraphics.DrawHeaderEdit(this.Pages[nPageIndex].Y, this.HdrFtr.Lock.Get_Type(), SectIndex, RepH, HeaderInfo);
|
|
pGraphics.DrawFooterEdit(this.Pages[nPageIndex].YLimit, this.HdrFtr.Lock.Get_Type(), SectIndex, RepF, FooterInfo);
|
|
}
|
|
},
|
|
Draw_Borders: function (Graphics, SectPr) {
|
|
var Orient = SectPr.Get_Orientation();
|
|
var Offset = SectPr.Get_Borders_OffsetFrom();
|
|
var LBorder = SectPr.Get_Borders_Left();
|
|
var TBorder = SectPr.Get_Borders_Top();
|
|
var RBorder = SectPr.Get_Borders_Right();
|
|
var BBorder = SectPr.Get_Borders_Bottom();
|
|
var W = SectPr.Get_PageWidth();
|
|
var H = SectPr.Get_PageHeight();
|
|
if (section_borders_OffsetFromPage === Offset) {
|
|
if (border_None !== LBorder.Value) {
|
|
var X = LBorder.Space + LBorder.Size / 2;
|
|
var Y0 = (border_None !== TBorder.Value ? TBorder.Space + TBorder.Size / 2 : 0);
|
|
var Y1 = (border_None !== BBorder.Value ? H - BBorder.Space - BBorder.Size / 2 : H);
|
|
Graphics.p_color(LBorder.Color.r, LBorder.Color.g, LBorder.Color.b, 255);
|
|
Graphics.drawVerLine(c_oAscLineDrawingRule.Center, X, Y0, Y1, LBorder.Size);
|
|
}
|
|
if (border_None !== RBorder.Value) {
|
|
var X = W - RBorder.Space - RBorder.Size / 2;
|
|
var Y0 = (border_None !== TBorder.Value ? TBorder.Space + TBorder.Size / 2 : 0);
|
|
var Y1 = (border_None !== BBorder.Value ? H - BBorder.Space - BBorder.Size / 2 : H);
|
|
Graphics.p_color(RBorder.Color.r, RBorder.Color.g, RBorder.Color.b, 255);
|
|
Graphics.drawVerLine(c_oAscLineDrawingRule.Center, X, Y0, Y1, RBorder.Size);
|
|
}
|
|
if (border_None !== TBorder.Value) {
|
|
var Y = TBorder.Space;
|
|
var X0 = (border_None !== LBorder.Value ? LBorder.Space + LBorder.Size / 2 : 0);
|
|
var X1 = (border_None !== RBorder.Value ? W - RBorder.Space - RBorder.Size / 2 : W);
|
|
Graphics.p_color(TBorder.Color.r, TBorder.Color.g, TBorder.Color.b, 255);
|
|
Graphics.drawHorLineExt(c_oAscLineDrawingRule.Top, Y, X0, X1, TBorder.Size, (border_None !== LBorder.Value ? -LBorder.Size / 2 : 0), (border_None !== RBorder.Value ? RBorder.Size / 2 : 0));
|
|
}
|
|
if (border_None !== BBorder.Value) {
|
|
var Y = H - BBorder.Space;
|
|
var X0 = (border_None !== LBorder.Value ? LBorder.Space + LBorder.Size / 2 : 0);
|
|
var X1 = (border_None !== RBorder.Value ? W - RBorder.Space - RBorder.Size / 2 : W);
|
|
Graphics.p_color(BBorder.Color.r, BBorder.Color.g, BBorder.Color.b, 255);
|
|
Graphics.drawHorLineExt(c_oAscLineDrawingRule.Bottom, Y, X0, X1, BBorder.Size, (border_None !== LBorder.Value ? -LBorder.Size / 2 : 0), (border_None !== RBorder.Value ? RBorder.Size / 2 : 0));
|
|
}
|
|
} else {
|
|
var _X0 = SectPr.Get_PageMargin_Left();
|
|
var _X1 = W - SectPr.Get_PageMargin_Right();
|
|
var _Y0 = SectPr.Get_PageMargin_Top();
|
|
var _Y1 = H - SectPr.Get_PageMargin_Bottom();
|
|
if (border_None !== LBorder.Value) {
|
|
var X = _X0 - LBorder.Space;
|
|
var Y0 = (border_None !== TBorder.Value ? _Y0 - TBorder.Space - TBorder.Size / 2 : _Y0);
|
|
var Y1 = (border_None !== BBorder.Value ? _Y1 + BBorder.Space + BBorder.Size / 2 : _Y1);
|
|
Graphics.p_color(LBorder.Color.r, LBorder.Color.g, LBorder.Color.b, 255);
|
|
Graphics.drawVerLine(c_oAscLineDrawingRule.Right, X, Y0, Y1, LBorder.Size);
|
|
}
|
|
if (border_None !== RBorder.Value) {
|
|
var X = _X1 + RBorder.Space;
|
|
var Y0 = (border_None !== TBorder.Value ? _Y0 - TBorder.Space - TBorder.Size / 2 : _Y0);
|
|
var Y1 = (border_None !== BBorder.Value ? _Y1 + BBorder.Space + BBorder.Size / 2 : _Y1);
|
|
Graphics.p_color(RBorder.Color.r, RBorder.Color.g, RBorder.Color.b, 255);
|
|
Graphics.drawVerLine(c_oAscLineDrawingRule.Left, X, Y0, Y1, RBorder.Size);
|
|
}
|
|
if (border_None !== TBorder.Value) {
|
|
var Y = _Y0 - TBorder.Space;
|
|
var X0 = (border_None !== LBorder.Value ? _X0 - LBorder.Space : _X0);
|
|
var X1 = (border_None !== RBorder.Value ? _X1 + RBorder.Space : _X1);
|
|
Graphics.p_color(TBorder.Color.r, TBorder.Color.g, TBorder.Color.b, 255);
|
|
Graphics.drawHorLineExt(c_oAscLineDrawingRule.Bottom, Y, X0, X1, TBorder.Size, (border_None !== LBorder.Value ? -LBorder.Size : 0), (border_None !== RBorder.Value ? RBorder.Size : 0));
|
|
}
|
|
if (border_None !== BBorder.Value) {
|
|
var Y = _Y1 + BBorder.Space;
|
|
var X0 = (border_None !== LBorder.Value ? _X0 - LBorder.Space : _X0);
|
|
var X1 = (border_None !== RBorder.Value ? _X1 + RBorder.Space : _X1);
|
|
Graphics.p_color(BBorder.Color.r, BBorder.Color.g, BBorder.Color.b, 255);
|
|
Graphics.drawHorLineExt(c_oAscLineDrawingRule.Top, Y, X0, X1, BBorder.Size, (border_None !== LBorder.Value ? -LBorder.Size : 0), (border_None !== RBorder.Value ? RBorder.Size : 0));
|
|
}
|
|
}
|
|
},
|
|
Add_NewParagraph: function (bRecalculate, bForceAdd) {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
return this.HdrFtr.Add_NewParagraph(bRecalculate);
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
return this.DrawingObjects.addNewParagraph(bRecalculate);
|
|
} else {
|
|
if (this.CurPos.ContentPos < 0) {
|
|
return false;
|
|
}
|
|
if (true === this.Selection.Use) {
|
|
this.Remove(1, true);
|
|
}
|
|
var Item = this.Content[this.CurPos.ContentPos];
|
|
if (type_Paragraph == Item.GetType()) {
|
|
if (true !== bForceAdd && undefined != Item.Numbering_Get() && true === Item.IsEmpty({
|
|
SkipNewLine: true
|
|
}) && true === Item.Cursor_IsStart()) {
|
|
Item.Numbering_Remove();
|
|
Item.Set_Ind({
|
|
FirstLine: undefined,
|
|
Left: undefined,
|
|
Right: Item.Pr.Ind.Right
|
|
},
|
|
true);
|
|
} else {
|
|
var NewParagraph = new Paragraph(this.DrawingDocument, this, 0, 0, 0, 0, 0);
|
|
if (true === Item.Cursor_IsEnd()) {
|
|
var StyleId = Item.Style_Get();
|
|
var NextId = undefined;
|
|
if (undefined != StyleId) {
|
|
NextId = this.Styles.Get_Next(StyleId);
|
|
if (null === NextId) {
|
|
NextId = StyleId;
|
|
}
|
|
}
|
|
if (StyleId === NextId) {
|
|
Item.Continue(NewParagraph);
|
|
} else {
|
|
if (NextId === this.Styles.Get_Default_Paragraph()) {
|
|
NewParagraph.Style_Remove();
|
|
} else {
|
|
NewParagraph.Style_Add_Open(NextId);
|
|
}
|
|
}
|
|
var SectPr = Item.Get_SectionPr();
|
|
if (undefined !== SectPr) {
|
|
Item.Set_SectionPr(undefined);
|
|
NewParagraph.Set_SectionPr(SectPr);
|
|
}
|
|
} else {
|
|
Item.Split(NewParagraph);
|
|
}
|
|
this.Internal_Content_Add(this.CurPos.ContentPos + 1, NewParagraph);
|
|
this.CurPos.ContentPos++;
|
|
this.ContentLastChangePos = this.CurPos.ContentPos - 1;
|
|
}
|
|
if (false != bRecalculate) {
|
|
this.Recalculate();
|
|
this.Document_UpdateInterfaceState();
|
|
this.Document_UpdateSelectionState();
|
|
}
|
|
} else {
|
|
if (type_Table == Item.GetType()) {
|
|
if (0 === this.CurPos.ContentPos && Item.Cursor_IsStart(true)) {
|
|
var NewParagraph = new Paragraph(this.DrawingDocument, this, 0, 0, 0, 0, 0);
|
|
this.Internal_Content_Add(0, NewParagraph);
|
|
this.ContentLastChangePos = 0;
|
|
this.CurPos.ContentPos = 0;
|
|
if (false != bRecalculate) {
|
|
this.Recalculate();
|
|
this.Document_UpdateInterfaceState();
|
|
this.Document_UpdateSelectionState();
|
|
}
|
|
} else {
|
|
Item.Add_NewParagraph(bRecalculate);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
Extend_ToPos: function (X, Y) {
|
|
var LastPara = this.Content[this.Content.length - 1];
|
|
var LastPara2 = LastPara;
|
|
this.Create_NewHistoryPoint(historydescription_Document_DocumentExtendToPos);
|
|
this.History.Set_Additional_ExtendDocumentToPos();
|
|
while (true) {
|
|
var NewParagraph = new Paragraph(this.DrawingDocument, this, 0, 0, 0, 0, 0);
|
|
var NewRun = new ParaRun(NewParagraph, false);
|
|
var StyleId = LastPara.Style_Get();
|
|
var NextId = undefined;
|
|
if (undefined != StyleId) {
|
|
NextId = this.Styles.Get_Next(StyleId);
|
|
if (null === NextId || undefined === NextId) {
|
|
NextId = StyleId;
|
|
}
|
|
}
|
|
if (NextId === this.Styles.Get_Default_Paragraph() || NextId === this.Styles.Get_Default_ParaList()) {
|
|
NewParagraph.Style_Remove();
|
|
} else {
|
|
NewParagraph.Style_Add_Open(NextId);
|
|
}
|
|
if (undefined != LastPara.TextPr.Value.FontSize || undefined !== LastPara.TextPr.Value.RFonts.Ascii) {
|
|
var TextPr = new CTextPr();
|
|
TextPr.FontSize = LastPara.TextPr.Value.FontSize;
|
|
TextPr.FontSizeCS = LastPara.TextPr.Value.FontSize;
|
|
TextPr.RFonts = LastPara.TextPr.Value.RFonts.Copy();
|
|
NewParagraph.Select_All();
|
|
NewParagraph.Apply_TextPr(TextPr);
|
|
}
|
|
LastPara.Set_DocumentNext(NewParagraph);
|
|
NewParagraph.Set_DocumentPrev(LastPara);
|
|
NewParagraph.Set_DocumentIndex(LastPara.Index + 1);
|
|
var CurPage = LastPara.Pages.length - 1;
|
|
var X0 = LastPara.Pages[CurPage].X;
|
|
var Y0 = LastPara.Pages[CurPage].Bounds.Bottom;
|
|
var XLimit = LastPara.Pages[CurPage].XLimit;
|
|
var YLimit = LastPara.Pages[CurPage].YLimit;
|
|
var PageNum = LastPara.PageNum;
|
|
NewParagraph.Reset(X0, Y0, XLimit, YLimit, PageNum);
|
|
var RecalcResult = NewParagraph.Recalculate_Page(PageNum);
|
|
if (recalcresult_NextElement != RecalcResult) {
|
|
LastPara.Next = null;
|
|
break;
|
|
}
|
|
this.Internal_Content_Add(this.Content.length, NewParagraph);
|
|
if (NewParagraph.Pages[0].Bounds.Bottom > Y) {
|
|
break;
|
|
}
|
|
LastPara = NewParagraph;
|
|
}
|
|
LastPara = this.Content[this.Content.length - 1];
|
|
if (LastPara != LastPara2 || false === this.Document_Is_SelectionLocked(changestype_None, {
|
|
Type: changestype_2_Element_and_Type,
|
|
Element: LastPara,
|
|
CheckType: changestype_Paragraph_Content
|
|
})) {
|
|
LastPara.Extend_ToPos(X);
|
|
}
|
|
LastPara.Cursor_MoveToEndPos();
|
|
LastPara.Document_SetThisElementCurrent(true);
|
|
this.Recalculate();
|
|
},
|
|
GroupGraphicObjects: function () {
|
|
if (this.CanGroup()) {
|
|
this.DrawingObjects.groupSelectedObjects();
|
|
}
|
|
},
|
|
UnGroupGraphicObjects: function () {
|
|
if (this.CanUnGroup()) {
|
|
this.DrawingObjects.unGroupSelectedObjects();
|
|
}
|
|
},
|
|
StartChangeWrapPolygon: function () {
|
|
this.DrawingObjects.startChangeWrapPolygon();
|
|
},
|
|
CanChangeWrapPolygon: function () {
|
|
return this.DrawingObjects.canChangeWrapPolygon();
|
|
},
|
|
CanGroup: function () {
|
|
return this.DrawingObjects.canGroup();
|
|
},
|
|
CanUnGroup: function () {
|
|
return this.DrawingObjects.canUnGroup();
|
|
},
|
|
Add_InlineImage: function (W, H, Img, Chart, bFlow) {
|
|
if (undefined === bFlow) {
|
|
bFlow = false;
|
|
}
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
return this.HdrFtr.Add_InlineImage(W, H, Img, Chart, bFlow);
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
return this.DrawingObjects.addInlineImage(W, H, Img, Chart, bFlow);
|
|
} else {
|
|
if (true == this.Selection.Use) {
|
|
this.Remove(1, true);
|
|
}
|
|
var Item = this.Content[this.CurPos.ContentPos];
|
|
if (type_Paragraph == Item.GetType()) {
|
|
var Drawing;
|
|
if (!isRealObject(Chart)) {
|
|
Drawing = new ParaDrawing(W, H, null, this.DrawingDocument, this, null);
|
|
var Image = this.DrawingObjects.createImage(Img, 0, 0, W, H);
|
|
Image.setParent(Drawing);
|
|
Drawing.Set_GraphicObject(Image);
|
|
} else {
|
|
Drawing = new ParaDrawing(W, H, null, this.DrawingDocument, this, null);
|
|
var Image = this.DrawingObjects.getChartSpace2(Chart, null);
|
|
Image.setParent(Drawing);
|
|
Drawing.Set_GraphicObject(Image);
|
|
Drawing.Update_Size(Image.spPr.xfrm.extX, Image.spPr.xfrm.extY);
|
|
}
|
|
if (true === bFlow) {
|
|
Drawing.Set_DrawingType(drawing_Anchor);
|
|
Drawing.Set_WrappingType(WRAPPING_TYPE_SQUARE);
|
|
Drawing.Set_BehindDoc(false);
|
|
Drawing.Set_Distance(3.2, 0, 3.2, 0);
|
|
Drawing.Set_PositionH(c_oAscRelativeFromH.Column, false, 0);
|
|
Drawing.Set_PositionV(c_oAscRelativeFromV.Paragraph, false, 0);
|
|
}
|
|
this.Paragraph_Add(Drawing);
|
|
this.Select_DrawingObject(Drawing.Get_Id());
|
|
} else {
|
|
if (type_Table == Item.GetType()) {
|
|
Item.Add_InlineImage(W, H, Img, Chart, bFlow);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
Edit_Chart: function (Chart) {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
return this.HdrFtr.Edit_Chart(Chart);
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
return this.DrawingObjects.editChart(Chart);
|
|
}
|
|
}
|
|
},
|
|
Get_ChartObject: function (type) {
|
|
return this.DrawingObjects.getChartObject(type);
|
|
},
|
|
Add_InlineTable: function (Cols, Rows) {
|
|
if (Cols <= 0 || Rows <= 0) {
|
|
return;
|
|
}
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
this.HdrFtr.Add_InlineTable(Cols, Rows);
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
this.DrawingObjects.addInlineTable(Cols, Rows);
|
|
} else {
|
|
if (this.CurPos.ContentPos < 0) {
|
|
return false;
|
|
}
|
|
if (true === this.Selection.Use) {
|
|
this.Remove(1, true);
|
|
}
|
|
var Item = this.Content[this.CurPos.ContentPos];
|
|
switch (Item.GetType()) {
|
|
case type_Paragraph:
|
|
var PageFields = this.Get_PageFields(this.CurPage);
|
|
var W = (PageFields.XLimit - PageFields.X + 2 * 1.9);
|
|
var Grid = [];
|
|
W = Math.max(W, Cols * 2 * 1.9);
|
|
for (var Index = 0; Index < Cols; Index++) {
|
|
Grid[Index] = W / Cols;
|
|
}
|
|
var NewTable = new CTable(this.DrawingDocument, this, true, 0, 0, 0, 0, 0, Rows, Cols, Grid);
|
|
NewTable.Set_ParagraphPrOnAdd(Item);
|
|
if (true === Item.Cursor_IsEnd() && undefined === Item.Get_SectionPr()) {
|
|
NewTable.Cursor_MoveToStartPos();
|
|
this.Internal_Content_Add(this.CurPos.ContentPos + 1, NewTable);
|
|
this.CurPos.ContentPos++;
|
|
this.ContentLastChangePos = this.CurPos.ContentPos - 1;
|
|
this.Recalculate();
|
|
this.Interface_Update_ParaPr();
|
|
this.Interface_Update_TextPr();
|
|
this.Interface_Update_TablePr();
|
|
} else {
|
|
var NewParagraph = new Paragraph(this.DrawingDocument, this, 0, 0, 0, 0, 0);
|
|
Item.Split(NewParagraph);
|
|
this.Internal_Content_Add(this.CurPos.ContentPos + 1, NewParagraph);
|
|
NewTable.Cursor_MoveToStartPos();
|
|
this.Internal_Content_Add(this.CurPos.ContentPos + 1, NewTable);
|
|
this.CurPos.ContentPos++;
|
|
this.ContentLastChangePos = this.CurPos.ContentPos - 1;
|
|
this.Recalculate();
|
|
this.Interface_Update_ParaPr();
|
|
this.Interface_Update_TextPr();
|
|
this.Interface_Update_TablePr();
|
|
}
|
|
break;
|
|
case type_Table:
|
|
Item.Add_InlineTable(Cols, Rows);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
this.Document_UpdateRulersState();
|
|
},
|
|
Add_DropCap: function (bInText) {
|
|
var Pos = -1;
|
|
if (false === this.Selection.Use && type_Paragraph === this.Content[this.CurPos.ContentPos].GetType()) {
|
|
Pos = this.CurPos.ContentPos;
|
|
} else {
|
|
if (true === this.Selection.Use && this.Selection.StartPos <= this.Selection.EndPos && type_Paragraph === this.Content[this.Selection.StartPos].GetType()) {
|
|
Pos = this.Selection.StartPos;
|
|
} else {
|
|
if (true === this.Selection.Use && this.Selection.StartPos > this.Selection.EndPos && type_Paragraph === this.Content[this.Selection.EndPos].GetType()) {
|
|
Pos = this.Selection.EndPos;
|
|
}
|
|
}
|
|
}
|
|
if (-1 === Pos) {
|
|
return;
|
|
}
|
|
var OldParagraph = this.Content[Pos];
|
|
if (OldParagraph.Lines.length <= 0) {
|
|
return;
|
|
}
|
|
if (false === this.Document_Is_SelectionLocked(changestype_None, {
|
|
Type: changestype_2_Element_and_Type,
|
|
Element: OldParagraph,
|
|
CheckType: changestype_Paragraph_Content
|
|
})) {
|
|
this.Create_NewHistoryPoint(historydescription_Document_AddDropCap);
|
|
var NewParagraph = new Paragraph(this.DrawingDocument, this, 0, 0, 0, 0, 0);
|
|
var TextPr = OldParagraph.Split_DropCap(NewParagraph);
|
|
var Before = OldParagraph.Get_CompiledPr().ParaPr.Spacing.Before;
|
|
var LineH = OldParagraph.Lines[0].Bottom - OldParagraph.Lines[0].Top - Before;
|
|
var LineTA = OldParagraph.Lines[0].Metrics.TextAscent2;
|
|
var LineTD = OldParagraph.Lines[0].Metrics.TextDescent + OldParagraph.Lines[0].Metrics.LineGap;
|
|
var FramePr = new CFramePr();
|
|
FramePr.Init_Default_DropCap(bInText);
|
|
NewParagraph.Set_FrameParaPr(OldParagraph);
|
|
NewParagraph.Set_FramePr2(FramePr);
|
|
NewParagraph.Update_DropCapByLines(TextPr, NewParagraph.Pr.FramePr.Lines, LineH, LineTA, LineTD, Before);
|
|
this.Internal_Content_Add(Pos, NewParagraph);
|
|
NewParagraph.Cursor_MoveToEndPos();
|
|
this.Selection_Remove();
|
|
this.CurPos.ContentPos = Pos;
|
|
this.CurPos.Type = docpostype_Content;
|
|
this.Recalculate();
|
|
this.Document_UpdateInterfaceState();
|
|
this.Document_UpdateRulersState();
|
|
}
|
|
},
|
|
Remove_DropCap: function (bDropCap) {
|
|
var Pos = -1;
|
|
if (false === this.Selection.Use && type_Paragraph === this.Content[this.CurPos.ContentPos].GetType()) {
|
|
Pos = this.CurPos.ContentPos;
|
|
} else {
|
|
if (true === this.Selection.Use && this.Selection.StartPos <= this.Selection.EndPos && type_Paragraph === this.Content[this.Selection.StartPos].GetType()) {
|
|
Pos = this.Selection.StartPos;
|
|
} else {
|
|
if (true === this.Selection.Use && this.Selection.StartPos > this.Selection.EndPos && type_Paragraph === this.Content[this.Selection.EndPos].GetType()) {
|
|
Pos = this.Selection.EndPos;
|
|
}
|
|
}
|
|
}
|
|
if (-1 === Pos) {
|
|
return;
|
|
}
|
|
var Para = this.Content[Pos];
|
|
var FramePr = Para.Get_FramePr();
|
|
if (undefined === FramePr && true === bDropCap) {
|
|
var Prev = Para.Get_DocumentPrev();
|
|
if (null != Prev && type_Paragraph === Prev.GetType()) {
|
|
var PrevFramePr = Prev.Get_FramePr();
|
|
if (undefined != PrevFramePr && undefined != PrevFramePr.DropCap) {
|
|
Para = Prev;
|
|
FramePr = PrevFramePr;
|
|
} else {
|
|
return;
|
|
}
|
|
} else {
|
|
return;
|
|
}
|
|
}
|
|
if (undefined === FramePr) {
|
|
return;
|
|
}
|
|
var FrameParas = Para.Internal_Get_FrameParagraphs();
|
|
if (false === bDropCap) {
|
|
if (false === this.Document_Is_SelectionLocked(changestype_None, {
|
|
Type: changestype_2_ElementsArray_and_Type,
|
|
Elements: FrameParas,
|
|
CheckType: changestype_Paragraph_Content
|
|
})) {
|
|
this.Create_NewHistoryPoint(historydescription_Document_RemoveDropCap);
|
|
var Count = FrameParas.length;
|
|
for (var Index = 0; Index < Count; Index++) {
|
|
FrameParas[Index].Set_FramePr(undefined, true);
|
|
}
|
|
this.Recalculate();
|
|
this.Document_UpdateInterfaceState();
|
|
this.Document_UpdateRulersState();
|
|
}
|
|
} else {
|
|
var Next = Para.Get_DocumentNext();
|
|
var Last = Para;
|
|
while (null != Next) {
|
|
if (type_Paragraph != Next.GetType() || undefined === Next.Get_FramePr() || true != FramePr.Compare(Next.Get_FramePr())) {
|
|
break;
|
|
}
|
|
Last = Next;
|
|
Next = Next.Get_DocumentNext();
|
|
}
|
|
if (null != Next && type_Paragraph === Next.GetType()) {
|
|
FrameParas.push(Next);
|
|
if (false === this.Document_Is_SelectionLocked(changestype_None, {
|
|
Type: changestype_2_ElementsArray_and_Type,
|
|
Elements: FrameParas,
|
|
CheckType: changestype_Paragraph_Content
|
|
})) {
|
|
this.Create_NewHistoryPoint(historydescription_Document_RemoveDropCap);
|
|
FrameParas.splice(FrameParas.length - 1, 1);
|
|
Next.Cursor_MoveToStartPos();
|
|
var Spacing = Next.Get_CompiledPr2(false).ParaPr.Spacing.Copy();
|
|
var TextPr = Next.Get_FirstRunPr();
|
|
var Count = FrameParas.length;
|
|
for (var Index = 0; Index < Count; Index++) {
|
|
var FramePara = FrameParas[Index];
|
|
FramePara.Set_FramePr(undefined, true);
|
|
FramePara.Set_Spacing(Spacing, true);
|
|
FramePara.Select_All();
|
|
FramePara.Clear_TextFormatting();
|
|
FramePara.Apply_TextPr(TextPr, undefined);
|
|
}
|
|
Next.CopyPr(Last);
|
|
Last.Concat(Next);
|
|
this.Internal_Content_Remove(Next.Index, 1);
|
|
Last.Cursor_MoveToStartPos();
|
|
Last.Document_SetThisElementCurrent(true);
|
|
this.Recalculate();
|
|
this.Document_UpdateInterfaceState();
|
|
this.Document_UpdateRulersState();
|
|
}
|
|
} else {
|
|
if (false === this.Document_Is_SelectionLocked(changestype_None, {
|
|
Type: changestype_2_ElementsArray_and_Type,
|
|
Elements: FrameParas,
|
|
CheckType: changestype_Paragraph_Content
|
|
})) {
|
|
this.Create_NewHistoryPoint(historydescription_Document_RemoveDropCap);
|
|
var Count = FrameParas.length;
|
|
for (var Index = 0; Index < Count; Index++) {
|
|
FrameParas[Index].Set_FramePr(undefined, true);
|
|
}
|
|
this.Recalculate();
|
|
this.Document_UpdateInterfaceState();
|
|
this.Document_UpdateRulersState();
|
|
}
|
|
}
|
|
}
|
|
},
|
|
Check_FramePrLastParagraph: function () {
|
|
var Count = this.Content.length;
|
|
if (Count <= 0) {
|
|
return;
|
|
}
|
|
var Element = this.Content[Count - 1];
|
|
if (type_Paragraph === Element.GetType() && undefined !== Element.Get_FramePr()) {
|
|
Element.Set_FramePr(undefined, true);
|
|
}
|
|
},
|
|
CheckRange: function (X0, Y0, X1, Y1, _Y0, _Y1, X_lf, X_rf, PageNum) {
|
|
var HdrFtrRanges = this.HdrFtr.CheckRange(X0, Y0, X1, Y1, _Y0, _Y1, X_lf, X_rf, PageNum);
|
|
return this.DrawingObjects.CheckRange(X0, Y0, X1, Y1, _Y0, _Y1, X_lf, X_rf, PageNum, HdrFtrRanges, null);
|
|
},
|
|
Paragraph_Add: function (ParaItem, bRecalculate) {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
if (para_NewLine === ParaItem.Type && break_Page === ParaItem.BreakType) {
|
|
return;
|
|
}
|
|
var bRetValue = this.HdrFtr.Paragraph_Add(ParaItem, bRecalculate);
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateUndoRedoState();
|
|
return bRetValue;
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
if (para_NewLine === ParaItem.Type && break_Page === ParaItem.BreakType) {
|
|
return;
|
|
}
|
|
var bRetValue = this.DrawingObjects.paragraphAdd(ParaItem, bRecalculate);
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateUndoRedoState();
|
|
this.Document_UpdateInterfaceState();
|
|
return bRetValue;
|
|
} else {
|
|
if (true === this.Selection.Use) {
|
|
var Type = ParaItem.Get_Type();
|
|
switch (Type) {
|
|
case para_Math:
|
|
case para_NewLine:
|
|
case para_Text:
|
|
case para_Space:
|
|
case para_Tab:
|
|
case para_PageNum:
|
|
this.Remove(1, true, false, true);
|
|
break;
|
|
case para_TextPr:
|
|
switch (this.Selection.Flag) {
|
|
case selectionflag_Common:
|
|
var StartPos = this.Selection.StartPos;
|
|
var EndPos = this.Selection.EndPos;
|
|
if (EndPos < StartPos) {
|
|
var Temp = StartPos;
|
|
StartPos = EndPos;
|
|
EndPos = Temp;
|
|
}
|
|
for (var Index = StartPos; Index <= EndPos; Index++) {
|
|
this.Content[Index].Add(ParaItem.Copy());
|
|
}
|
|
if (false != bRecalculate) {
|
|
if (true === ParaItem.Value.Check_NeedRecalc()) {
|
|
this.ContentLastChangePos = StartPos;
|
|
this.Recalculate();
|
|
} else {
|
|
var StartPage = this.Content[StartPos].Get_StartPage_Absolute();
|
|
var EndPage = this.Content[EndPos].Get_StartPage_Absolute() + this.Content[EndPos].Pages.length - 1;
|
|
this.ReDraw(StartPage, EndPage);
|
|
}
|
|
}
|
|
break;
|
|
case selectionflag_Numbering:
|
|
if (null == this.Selection.Data || this.Selection.Data.length <= 0) {
|
|
break;
|
|
}
|
|
if (undefined != ParaItem.Value.FontFamily) {
|
|
var FName = ParaItem.Value.FontFamily.Name;
|
|
var FIndex = ParaItem.Value.FontFamily.Index;
|
|
ParaItem.Value.RFonts = new CRFonts();
|
|
ParaItem.Value.RFonts.Ascii = {
|
|
Name: FName,
|
|
Index: FIndex
|
|
};
|
|
ParaItem.Value.RFonts.EastAsia = {
|
|
Name: FName,
|
|
Index: FIndex
|
|
};
|
|
ParaItem.Value.RFonts.HAnsi = {
|
|
Name: FName,
|
|
Index: FIndex
|
|
};
|
|
ParaItem.Value.RFonts.CS = {
|
|
Name: FName,
|
|
Index: FIndex
|
|
};
|
|
}
|
|
var NumPr = this.Content[this.Selection.Data[0]].Numbering_Get();
|
|
var AbstrNum = this.Numbering.Get_AbstractNum(NumPr.NumId);
|
|
AbstrNum.Apply_TextPr(NumPr.Lvl, ParaItem.Value);
|
|
if (false != bRecalculate) {
|
|
this.ContentLastChangePos = this.Selection.Data[0];
|
|
this.Recalculate();
|
|
}
|
|
break;
|
|
}
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateUndoRedoState();
|
|
return;
|
|
}
|
|
}
|
|
var Item = this.Content[this.CurPos.ContentPos];
|
|
var ItemType = Item.GetType();
|
|
if (para_NewLine === ParaItem.Type && break_Page === ParaItem.BreakType) {
|
|
if (type_Paragraph === ItemType) {
|
|
if (true === Item.Cursor_IsStart()) {
|
|
this.Add_NewParagraph(undefined, true);
|
|
this.Content[this.CurPos.ContentPos - 1].Cursor_MoveToStartPos();
|
|
this.Content[this.CurPos.ContentPos - 1].Add(ParaItem);
|
|
this.Content[this.CurPos.ContentPos - 1].Clear_Formatting();
|
|
this.ContentLastChangePos = this.CurPos.ContentPos - 1;
|
|
} else {
|
|
this.Add_NewParagraph(undefined, true);
|
|
this.Add_NewParagraph(undefined, true);
|
|
this.Content[this.CurPos.ContentPos - 1].Cursor_MoveToStartPos();
|
|
this.Content[this.CurPos.ContentPos - 1].Add(ParaItem);
|
|
this.Content[this.CurPos.ContentPos - 1].Clear_Formatting();
|
|
this.ContentLastChangePos = this.CurPos.ContentPos - 2;
|
|
}
|
|
if (false != bRecalculate) {
|
|
this.Recalculate();
|
|
Item.CurPos.RealX = Item.CurPos.X;
|
|
Item.CurPos.RealY = Item.CurPos.Y;
|
|
}
|
|
} else {
|
|
return;
|
|
}
|
|
} else {
|
|
Item.Add(ParaItem);
|
|
if (false != bRecalculate && type_Paragraph == Item.GetType()) {
|
|
if (para_TextPr === ParaItem.Type && false === ParaItem.Value.Check_NeedRecalc()) {
|
|
var StartPage = Item.Get_StartPage_Absolute();
|
|
var EndPage = StartPage + Item.Pages.length - 1;
|
|
this.ReDraw(StartPage, EndPage);
|
|
} else {
|
|
this.Recalculate(true);
|
|
}
|
|
if (false === this.TurnOffRecalcCurPos) {
|
|
Item.RecalculateCurPos();
|
|
Item.CurPos.RealX = Item.CurPos.X;
|
|
Item.CurPos.RealY = Item.CurPos.Y;
|
|
}
|
|
}
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
}
|
|
if (true != this.TurnOffRecalc) {
|
|
this.Document_UpdateUndoRedoState();
|
|
}
|
|
}
|
|
}
|
|
},
|
|
Paragraph_ClearFormatting: function () {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
return this.HdrFtr.Paragraph_ClearFormatting();
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
return this.DrawingObjects.paragraphClearFormatting();
|
|
} else {
|
|
if (true === this.Selection.Use) {
|
|
if (selectionflag_Common === this.Selection.Flag) {
|
|
var StartPos = this.Selection.StartPos;
|
|
var EndPos = this.Selection.EndPos;
|
|
if (StartPos > EndPos) {
|
|
var Temp = StartPos;
|
|
StartPos = EndPos;
|
|
EndPos = Temp;
|
|
}
|
|
for (var Index = StartPos; Index <= EndPos; Index++) {
|
|
var Item = this.Content[Index];
|
|
if (type_Table === Item.GetType()) {
|
|
Item.Paragraph_ClearFormatting();
|
|
} else {
|
|
if (type_Paragraph === Item.GetType()) {
|
|
Item.Clear_Formatting();
|
|
Item.Clear_TextFormatting();
|
|
}
|
|
}
|
|
}
|
|
this.ContentLastChangePos = StartPos;
|
|
this.Recalculate();
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
}
|
|
} else {
|
|
var Item = this.Content[this.CurPos.ContentPos];
|
|
if (type_Table === Item.GetType()) {
|
|
Item.Paragraph_ClearFormatting();
|
|
} else {
|
|
if (type_Paragraph === Item.GetType()) {
|
|
Item.Clear_Formatting();
|
|
Item.Clear_TextFormatting();
|
|
this.ContentLastChangePos = this.CurPos.ContentPos;
|
|
this.Recalculate();
|
|
}
|
|
}
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
}
|
|
}
|
|
}
|
|
},
|
|
Remove: function (Count, bOnlyText, bRemoveOnlySelection, bOnTextAdd) {
|
|
if (undefined === bRemoveOnlySelection) {
|
|
bRemoveOnlySelection = false;
|
|
}
|
|
if (undefined === bOnTextAdd) {
|
|
bOnTextAdd = false;
|
|
}
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
var Res = this.HdrFtr.Remove(Count, bOnlyText, bRemoveOnlySelection, bOnTextAdd);
|
|
if (null !== this.HdrFtr.CurHdtr && docpostype_DrawingObjects !== this.HdrFtr.CurHdrFtr.Content.CurPos.Type) {
|
|
this.Selection_Remove();
|
|
this.Selection.Use = false;
|
|
}
|
|
this.Document_UpdateInterfaceState();
|
|
this.Document_UpdateRulersState();
|
|
return Res;
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
var Res = this.DrawingObjects.remove(Count, bOnlyText, bRemoveOnlySelection, bOnTextAdd);
|
|
this.Document_UpdateInterfaceState();
|
|
this.Document_UpdateRulersState();
|
|
return Res;
|
|
} else {
|
|
if (this.CurPos.ContentPos < 0) {
|
|
return false;
|
|
}
|
|
if (true === this.Selection.Use && selectionflag_Numbering == this.Selection.Flag && Count > 0) {
|
|
Count = -Count;
|
|
}
|
|
this.Remove_NumberingSelection();
|
|
if (true === this.Selection.Use) {
|
|
var StartPos = this.Selection.StartPos;
|
|
var EndPos = this.Selection.EndPos;
|
|
if (EndPos < StartPos) {
|
|
var Temp = StartPos;
|
|
StartPos = EndPos;
|
|
EndPos = Temp;
|
|
}
|
|
if (StartPos !== EndPos && true === this.Content[EndPos].Selection_IsEmpty(true)) {
|
|
EndPos--;
|
|
}
|
|
this.Selection_Clear();
|
|
this.Selection.Use = false;
|
|
this.Selection.StartPos = 0;
|
|
this.Selection.EndPos = 0;
|
|
this.DrawingDocument.TargetStart();
|
|
if (StartPos != EndPos) {
|
|
var StartType = this.Content[StartPos].GetType();
|
|
var EndType = this.Content[EndPos].GetType();
|
|
var bStartEmpty, bEndEmpty;
|
|
if (true === bOnTextAdd && type_Table == EndType) {
|
|
this.CurPos.ContentPos = StartPos;
|
|
return this.Cursor_MoveLeft(false, false);
|
|
}
|
|
if (type_Paragraph == StartType) {
|
|
this.Content[StartPos].Remove(1, true);
|
|
bStartEmpty = this.Content[StartPos].IsEmpty();
|
|
} else {
|
|
if (type_Table == StartType) {
|
|
bStartEmpty = !(this.Content[StartPos].Row_Remove2());
|
|
}
|
|
}
|
|
if (type_Paragraph == EndType) {
|
|
this.Content[EndPos].Remove(1, true);
|
|
bEndEmpty = this.Content[EndPos].IsEmpty();
|
|
} else {
|
|
if (type_Table == EndType) {
|
|
bEndEmpty = !(this.Content[EndPos].Row_Remove2());
|
|
}
|
|
}
|
|
if (true != bStartEmpty && true != bEndEmpty) {
|
|
this.Internal_Content_Remove(StartPos + 1, EndPos - StartPos - 1);
|
|
this.CurPos.ContentPos = StartPos;
|
|
if (type_Paragraph == StartType && type_Paragraph == EndType && true === bOnTextAdd) {
|
|
this.Content[StartPos].Cursor_MoveToEndPos(false, false);
|
|
this.Remove(1, true);
|
|
} else {
|
|
this.CurPos.ContentPos = StartPos + 1;
|
|
this.Content[StartPos + 1].Cursor_MoveToStartPos();
|
|
}
|
|
} else {
|
|
if (true != bStartEmpty) {
|
|
if (true === bOnTextAdd && type_Table == StartType) {
|
|
this.Internal_Content_Remove(StartPos + 1, EndPos - StartPos - 1);
|
|
this.CurPos.ContentPos = StartPos + 1;
|
|
this.Content[StartPos + 1].Cursor_MoveToStartPos();
|
|
} else {
|
|
this.Internal_Content_Remove(StartPos + 1, EndPos - StartPos);
|
|
if (type_Paragraph == StartType) {
|
|
this.CurPos.ContentPos = StartPos;
|
|
this.Content[StartPos].Cursor_MoveToEndPos(false, false);
|
|
} else {
|
|
if (type_Table == StartType) {
|
|
this.CurPos.ContentPos = StartPos + 1;
|
|
this.Content[StartPos + 1].Cursor_MoveToStartPos();
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
if (true != bEndEmpty) {
|
|
this.Internal_Content_Remove(StartPos, EndPos - StartPos);
|
|
this.CurPos.ContentPos = StartPos;
|
|
this.Content[StartPos].Cursor_MoveToStartPos();
|
|
} else {
|
|
if (true === bOnTextAdd) {
|
|
this.Internal_Content_Remove(StartPos, EndPos - StartPos);
|
|
this.CurPos.ContentPos = StartPos;
|
|
this.Content[StartPos].Cursor_MoveToStartPos();
|
|
} else {
|
|
if (0 === StartPos && (EndPos - StartPos + 1) >= this.Content.length) {
|
|
var NewPara = new Paragraph(this.DrawingDocument, this, 0, 0, 0, 0, 0);
|
|
this.Internal_Content_Add(0, NewPara);
|
|
this.Internal_Content_Remove(1, this.Content.length - 1);
|
|
} else {
|
|
this.Internal_Content_Remove(StartPos, EndPos - StartPos + 1);
|
|
}
|
|
if (StartPos >= this.Content.length) {
|
|
this.CurPos.ContentPos = this.Content.length - 1;
|
|
this.Content[this.CurPos.ContentPos].Cursor_MoveToEndPos(false, false);
|
|
} else {
|
|
this.CurPos.ContentPos = StartPos;
|
|
this.Content[StartPos].Cursor_MoveToStartPos();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
this.CurPos.ContentPos = StartPos;
|
|
if (Count < 0 && type_Table === this.Content[StartPos].GetType() && table_Selection_Cell === this.Content[StartPos].Selection.Type && true != bOnTextAdd) {
|
|
return this.Table_RemoveRow();
|
|
} else {
|
|
if (false === this.Content[StartPos].Remove(Count, true, bRemoveOnlySelection, bOnTextAdd)) {
|
|
if (true != bOnTextAdd) {
|
|
if (true === this.Content[StartPos].IsEmpty() && this.Content.length > 1) {
|
|
this.Internal_Content_Remove(StartPos, 1);
|
|
if (StartPos >= this.Content.length) {
|
|
this.CurPos.ContentPos = this.Content.length - 1;
|
|
this.Content[this.CurPos.ContentPos].Cursor_MoveToEndPos(false, false);
|
|
} else {
|
|
this.CurPos.ContentPos = StartPos;
|
|
this.Content[StartPos].Cursor_MoveToStartPos();
|
|
}
|
|
this.ContentLastChangePos = this.CurPos.ContentPos;
|
|
this.Recalculate();
|
|
this.Document_UpdateInterfaceState();
|
|
this.Document_UpdateRulersState();
|
|
return;
|
|
} else {
|
|
if (this.CurPos.ContentPos < this.Content.length - 1 && type_Paragraph == this.Content[this.CurPos.ContentPos + 1].GetType()) {
|
|
this.Content[StartPos].Concat(this.Content[StartPos + 1]);
|
|
this.Internal_Content_Remove(StartPos + 1, 1);
|
|
this.Interface_Update_ParaPr();
|
|
} else {
|
|
if (this.Content.length === 1 && true === this.Content[0].IsEmpty() && Count > 0) {
|
|
var NewPara = new Paragraph(this.DrawingDocument, this, 0, 0, 0, 0, 0);
|
|
this.Internal_Content_Add(0, NewPara);
|
|
this.Internal_Content_Remove(1, this.Content.length - 1);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
this.ContentLastChangePos = this.CurPos.ContentPos;
|
|
this.Recalculate();
|
|
} else {
|
|
if (true === bRemoveOnlySelection || true === bOnTextAdd) {
|
|
return;
|
|
}
|
|
if (type_Paragraph == this.Content[this.CurPos.ContentPos].GetType()) {
|
|
var bNumbering = (undefined != this.Content[this.CurPos.ContentPos].Numbering_Get() ? true : false);
|
|
if (false === this.Content[this.CurPos.ContentPos].Remove(Count, bOnlyText)) {
|
|
if (Count < 0) {
|
|
if (this.CurPos.ContentPos > 0 && type_Paragraph == this.Content[this.CurPos.ContentPos - 1].GetType()) {
|
|
var CurrFramePr = this.Content[this.CurPos.ContentPos].Get_FramePr();
|
|
var PrevFramePr = this.Content[this.CurPos.ContentPos - 1].Get_FramePr();
|
|
if ((undefined === CurrFramePr && undefined === PrevFramePr) || (undefined !== CurrFramePr && undefined !== PrevFramePr && true === CurrFramePr.Compare(PrevFramePr))) {
|
|
if (true === this.Content[this.CurPos.ContentPos - 1].IsEmpty()) {
|
|
this.Internal_Content_Remove(this.CurPos.ContentPos - 1, 1);
|
|
this.CurPos.ContentPos--;
|
|
this.Content[this.CurPos.ContentPos].Cursor_MoveToStartPos();
|
|
} else {
|
|
var Prev = this.Content[this.CurPos.ContentPos - 1];
|
|
Prev.Cursor_MoveToEndPos();
|
|
Prev.Concat(this.Content[this.CurPos.ContentPos]);
|
|
this.Internal_Content_Remove(this.CurPos.ContentPos, 1);
|
|
this.CurPos.ContentPos--;
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
if (Count > 0) {
|
|
if (this.CurPos.ContentPos < this.Content.length - 1 && type_Paragraph == this.Content[this.CurPos.ContentPos + 1].GetType()) {
|
|
var CurrFramePr = this.Content[this.CurPos.ContentPos].Get_FramePr();
|
|
var NextFramePr = this.Content[this.CurPos.ContentPos + 1].Get_FramePr();
|
|
if ((undefined === CurrFramePr && undefined === NextFramePr) || (undefined !== CurrFramePr && undefined !== NextFramePr && true === CurrFramePr.Compare(NextFramePr))) {
|
|
if (true === this.Content[this.CurPos.ContentPos].IsEmpty()) {
|
|
this.Internal_Content_Remove(this.CurPos.ContentPos, 1);
|
|
this.Content[this.CurPos.ContentPos].Cursor_MoveToStartPos();
|
|
} else {
|
|
var Cur = this.Content[this.CurPos.ContentPos];
|
|
Cur.Concat(this.Content[this.CurPos.ContentPos + 1]);
|
|
this.Internal_Content_Remove(this.CurPos.ContentPos + 1, 1);
|
|
}
|
|
}
|
|
} else {
|
|
if (true == this.Content[this.CurPos.ContentPos].IsEmpty() && this.CurPos.ContentPos == this.Content.length - 1 && this.CurPos.ContentPos != 0 && type_Table != this.Content[this.CurPos.ContentPos - 1].GetType()) {
|
|
this.Internal_Content_Remove(this.CurPos.ContentPos, 1);
|
|
this.CurPos.ContentPos--;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
this.ContentLastChangePos = this.CurPos.ContentPos;
|
|
this.Recalculate();
|
|
} else {
|
|
if (true === bNumbering && undefined == this.Content[this.CurPos.ContentPos].Numbering_Get()) {
|
|
this.ContentLastChangePos = this.CurPos.ContentPos - 1;
|
|
this.Recalculate();
|
|
} else {
|
|
this.ContentLastChangePos = this.CurPos.ContentPos;
|
|
this.Recalculate(true);
|
|
}
|
|
}
|
|
var Item = this.Content[this.CurPos.ContentPos];
|
|
if (type_Paragraph == Item.GetType()) {
|
|
Item.CurPos.RealX = Item.CurPos.X;
|
|
Item.CurPos.RealY = Item.CurPos.Y;
|
|
}
|
|
} else {
|
|
if (type_Table == this.Content[this.CurPos.ContentPos].GetType()) {
|
|
this.Content[this.CurPos.ContentPos].Remove(Count, bOnlyText);
|
|
}
|
|
}
|
|
}
|
|
this.Document_UpdateInterfaceState();
|
|
this.Document_UpdateRulersState();
|
|
}
|
|
}
|
|
},
|
|
Cursor_GetPos: function () {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
return this.HdrFtr.Cursor_GetPos();
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
return this.DrawingObjects.cursorGetPos();
|
|
} else {
|
|
if (docpostype_Content === this.CurPos.Type) {
|
|
if (true === this.Selection.Use) {
|
|
if (selectionflag_Common === this.Selection.Flag) {
|
|
return this.Content[this.Selection.EndPos].Cursor_GetPos();
|
|
}
|
|
return {
|
|
X: 0,
|
|
Y: 0
|
|
};
|
|
} else {
|
|
return this.Content[this.CurPos.ContentPos].Cursor_GetPos();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
Cursor_MoveToStartPos: function (AddToSelect) {
|
|
if (true === AddToSelect) {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
this.HdrFtr.Cursor_MoveToStartPos(true);
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {} else {
|
|
if (docpostype_Content === this.CurPos.Type) {
|
|
var StartPos = (true === this.Selection.Use ? this.Selection.StartPos : this.CurPos.ContentPos);
|
|
var EndPos = 0;
|
|
this.Selection.Start = false;
|
|
this.Selection.Use = true;
|
|
this.Selection.StartPos = StartPos;
|
|
this.Selection.EndPos = EndPos;
|
|
this.Selection.Flag = selectionflag_Common;
|
|
this.CurPos.ContentPos = 0;
|
|
this.CurPos.Type = docpostype_Content;
|
|
for (var Index = StartPos - 1; Index >= EndPos; Index--) {
|
|
var Item = this.Content[Index];
|
|
Item.Selection.Use = true;
|
|
var ItemType = Item.GetType();
|
|
if (type_Paragraph === ItemType) {
|
|
Item.Select_All(-1);
|
|
} else {
|
|
var Row = Item.Content.length - 1;
|
|
var Cell = Item.Content[Row].Get_CellsCount() - 1;
|
|
var Pos0 = {
|
|
Row: 0,
|
|
Cell: 0
|
|
};
|
|
var Pos1 = {
|
|
Row: Row,
|
|
Cell: Cell
|
|
};
|
|
Item.Selection.EndPos.Pos = Pos0;
|
|
Item.Selection.StartPos.Pos = Pos1;
|
|
Item.Internal_Selection_UpdateCells();
|
|
}
|
|
}
|
|
this.Content[StartPos].Cursor_MoveToStartPos(true);
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
this.HdrFtr.Cursor_MoveToStartPos(false);
|
|
} else {
|
|
this.Selection_Remove();
|
|
this.Selection.Start = false;
|
|
this.Selection.Use = false;
|
|
this.Selection.StartPos = 0;
|
|
this.Selection.EndPos = 0;
|
|
this.Selection.Flag = selectionflag_Common;
|
|
this.CurPos.ContentPos = 0;
|
|
this.CurPos.Type = docpostype_Content;
|
|
this.Content[0].Cursor_MoveToStartPos(false);
|
|
}
|
|
}
|
|
this.private_UpdateCursorXY(true, true);
|
|
},
|
|
Cursor_MoveToEndPos: function (AddToSelect) {
|
|
if (true === AddToSelect) {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
this.HdrFtr.Cursor_MoveToEndPos(true);
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {} else {
|
|
if (docpostype_Content === this.CurPos.Type) {
|
|
var StartPos = (true === this.Selection.Use ? this.Selection.StartPos : this.CurPos.ContentPos);
|
|
var EndPos = this.Content.length - 1;
|
|
this.Selection.Start = false;
|
|
this.Selection.Use = true;
|
|
this.Selection.StartPos = StartPos;
|
|
this.Selection.EndPos = EndPos;
|
|
this.Selection.Flag = selectionflag_Common;
|
|
this.CurPos.ContentPos = this.Content.length - 1;
|
|
this.CurPos.Type = docpostype_Content;
|
|
for (var Index = StartPos + 1; Index <= EndPos; Index++) {
|
|
var Item = this.Content[Index];
|
|
Item.Selection.Use = true;
|
|
var ItemType = Item.GetType();
|
|
if (type_Paragraph === ItemType) {
|
|
Item.Select_All(1);
|
|
} else {
|
|
var Row = Item.Content.length - 1;
|
|
var Cell = Item.Content[Row].Get_CellsCount() - 1;
|
|
var Pos0 = {
|
|
Row: 0,
|
|
Cell: 0
|
|
};
|
|
var Pos1 = {
|
|
Row: Row,
|
|
Cell: Cell
|
|
};
|
|
Item.Selection.StartPos.Pos = Pos0;
|
|
Item.Selection.EndPos.Pos = Pos1;
|
|
Item.Internal_Selection_UpdateCells();
|
|
}
|
|
}
|
|
this.Content[StartPos].Cursor_MoveToEndPos(true, false);
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
this.HdrFtr.Cursor_MoveToEndPos(false);
|
|
} else {
|
|
this.Selection_Remove();
|
|
this.Selection.Start = false;
|
|
this.Selection.Use = false;
|
|
this.Selection.StartPos = 0;
|
|
this.Selection.EndPos = 0;
|
|
this.Selection.Flag = selectionflag_Common;
|
|
this.CurPos.ContentPos = this.Content.length - 1;
|
|
this.CurPos.Type = docpostype_Content;
|
|
this.Content[this.CurPos.ContentPos].Cursor_MoveToEndPos(false);
|
|
}
|
|
}
|
|
this.private_UpdateCursorXY(true, true);
|
|
},
|
|
Cursor_MoveLeft: function (AddToSelect, Word) {
|
|
if ("undefined" === typeof(Word) || null === Word) {
|
|
Word = false;
|
|
}
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
var RetValue = this.HdrFtr.Cursor_MoveLeft(AddToSelect, Word);
|
|
this.Document_UpdateInterfaceState();
|
|
this.Document_UpdateSelectionState();
|
|
this.private_UpdateCursorXY(true, true);
|
|
return RetValue;
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
var RetValue = this.DrawingObjects.cursorMoveLeft(AddToSelect, Word);
|
|
this.Document_UpdateInterfaceState();
|
|
this.Document_UpdateSelectionState();
|
|
this.private_UpdateCursorXY(true, true);
|
|
return RetValue;
|
|
} else {
|
|
if (this.CurPos.ContentPos < 0) {
|
|
return false;
|
|
}
|
|
this.Remove_NumberingSelection();
|
|
if (true === this.Selection.Use) {
|
|
if (true === AddToSelect) {
|
|
if (false === this.Content[this.Selection.EndPos].Cursor_MoveLeft(1, true, Word)) {
|
|
if (0 != this.Selection.EndPos) {
|
|
this.Selection.EndPos--;
|
|
this.CurPos.ContentPos = this.Selection.EndPos;
|
|
var Item = this.Content[this.Selection.EndPos];
|
|
if (type_Paragraph == Item.GetType()) {
|
|
Item.Cursor_MoveToEndPos(false, true);
|
|
Item.Cursor_MoveLeft(1, true, Word);
|
|
} else {
|
|
if (type_Table == Item.GetType()) {
|
|
if (false === Item.Is_SelectionUse()) {
|
|
var LastRow = Item.Content[Item.Content.length - 1];
|
|
Item.Selection.Use = true;
|
|
Item.Selection.Type = table_Selection_Cell;
|
|
Item.Selection.StartPos.Pos = {
|
|
Row: LastRow.Index,
|
|
Cell: LastRow.Get_CellsCount() - 1
|
|
};
|
|
Item.Selection.EndPos.Pos = {
|
|
Row: LastRow.Index,
|
|
Cell: 0
|
|
};
|
|
Item.CurCell = LastRow.Get_Cell(0);
|
|
Item.Selection.Data = [];
|
|
for (var CellIndex = 0; CellIndex < LastRow.Get_CellsCount(); CellIndex++) {
|
|
Item.Selection.Data.push({
|
|
Cell: CellIndex,
|
|
Row: LastRow.Index
|
|
});
|
|
}
|
|
} else {
|
|
Item.Cursor_MoveLeft(1, true, Word);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (this.Selection.EndPos != this.Selection.StartPos && false === this.Content[this.Selection.EndPos].Is_SelectionUse()) {
|
|
this.Selection.EndPos--;
|
|
this.CurPos.ContentPos = this.Selection.EndPos;
|
|
}
|
|
if (this.Selection.StartPos == this.Selection.EndPos && false === this.Content[this.Selection.StartPos].Is_SelectionUse()) {
|
|
this.Selection.Use = false;
|
|
this.CurPos.ContentPos = this.Selection.EndPos;
|
|
}
|
|
} else {
|
|
var Start = this.Selection.StartPos;
|
|
if (Start > this.Selection.EndPos) {
|
|
Start = this.Selection.EndPos;
|
|
}
|
|
this.CurPos.ContentPos = Start;
|
|
this.Content[this.CurPos.ContentPos].Cursor_MoveLeft(1, false, Word);
|
|
this.Selection_Remove();
|
|
}
|
|
} else {
|
|
if (true === AddToSelect) {
|
|
this.Selection.Use = true;
|
|
this.Selection.StartPos = this.CurPos.ContentPos;
|
|
this.Selection.EndPos = this.CurPos.ContentPos;
|
|
if (false === this.Content[this.CurPos.ContentPos].Cursor_MoveLeft(1, true, Word)) {
|
|
if (0 != this.CurPos.ContentPos) {
|
|
this.CurPos.ContentPos--;
|
|
var Item = this.Content[this.CurPos.ContentPos];
|
|
this.Selection.EndPos = this.CurPos.ContentPos;
|
|
if (type_Paragraph == Item.GetType()) {
|
|
Item.Cursor_MoveToEndPos(false, true);
|
|
Item.Cursor_MoveLeft(1, true, Word);
|
|
} else {
|
|
if (type_Table == Item.GetType()) {
|
|
if (false === Item.Is_SelectionUse()) {
|
|
var LastRow = Item.Content[Item.Content.length - 1];
|
|
Item.Selection.Use = true;
|
|
Item.Selection.Type = table_Selection_Cell;
|
|
Item.Selection.StartPos.Pos = {
|
|
Row: LastRow.Index,
|
|
Cell: LastRow.Get_CellsCount() - 1
|
|
};
|
|
Item.Selection.EndPos.Pos = {
|
|
Row: LastRow.Index,
|
|
Cell: 0
|
|
};
|
|
Item.CurCell = LastRow.Get_Cell(0);
|
|
Item.Selection.Data = [];
|
|
for (var CellIndex = 0; CellIndex < LastRow.Get_CellsCount(); CellIndex++) {
|
|
Item.Selection.Data.push({
|
|
Cell: CellIndex,
|
|
Row: LastRow.Index
|
|
});
|
|
}
|
|
} else {
|
|
Item.Cursor_MoveLeft(1, true, Word);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (this.Selection.StartPos == this.Selection.EndPos && false === this.Content[this.Selection.StartPos].Is_SelectionUse()) {
|
|
this.Selection.Use = false;
|
|
this.CurPos.ContentPos = this.Selection.EndPos;
|
|
}
|
|
} else {
|
|
if (false === this.Content[this.CurPos.ContentPos].Cursor_MoveLeft(1, false, Word)) {
|
|
if (0 != this.CurPos.ContentPos) {
|
|
this.CurPos.ContentPos--;
|
|
this.Content[this.CurPos.ContentPos].Cursor_MoveToEndPos();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
this.Document_UpdateInterfaceState();
|
|
this.Document_UpdateRulersState();
|
|
this.private_UpdateCursorXY(true, true);
|
|
}
|
|
}
|
|
},
|
|
Cursor_MoveRight: function (AddToSelect, Word, FromPaste) {
|
|
if ("undefined" === typeof(Word) || null === Word) {
|
|
Word = false;
|
|
}
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
var RetValue = this.HdrFtr.Cursor_MoveRight(AddToSelect, Word);
|
|
this.Document_UpdateInterfaceState();
|
|
this.Document_UpdateSelectionState();
|
|
this.private_UpdateCursorXY(true, true);
|
|
return RetValue;
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
var RetValue = this.DrawingObjects.cursorMoveRight(AddToSelect, Word);
|
|
this.Document_UpdateInterfaceState();
|
|
this.Document_UpdateSelectionState();
|
|
this.private_UpdateCursorXY(true, true);
|
|
return RetValue;
|
|
} else {
|
|
if (this.CurPos.ContentPos < 0) {
|
|
return false;
|
|
}
|
|
this.Remove_NumberingSelection();
|
|
if (true === this.Selection.Use) {
|
|
if (true === AddToSelect) {
|
|
if (false === this.Content[this.Selection.EndPos].Cursor_MoveRight(1, true, Word)) {
|
|
if (this.Content.length - 1 != this.Selection.EndPos) {
|
|
this.Selection.EndPos++;
|
|
this.CurPos.ContentPos = this.Selection.EndPos;
|
|
var Item = this.Content[this.Selection.EndPos];
|
|
if (type_Paragraph === Item.GetType()) {
|
|
if (false === Item.Is_SelectionUse()) {
|
|
var StartPos = Item.Internal_GetStartPos();
|
|
Item.CurPos.ContentPos = StartPos;
|
|
Item.Selection.Use = true;
|
|
Item.Selection.StartPos = StartPos;
|
|
Item.Selection.EndPos = StartPos;
|
|
}
|
|
Item.Cursor_MoveRight(1, true, Word);
|
|
} else {
|
|
if (type_Table === Item.GetType()) {
|
|
if (false === Item.Is_SelectionUse()) {
|
|
var FirstRow = Item.Content[0];
|
|
Item.Selection.Use = true;
|
|
Item.Selection.Type = table_Selection_Cell;
|
|
Item.Selection.StartPos.Pos = {
|
|
Row: 0,
|
|
Cell: 0
|
|
};
|
|
Item.Selection.EndPos.Pos = {
|
|
Row: 0,
|
|
Cell: FirstRow.Get_CellsCount() - 1
|
|
};
|
|
Item.CurCell = FirstRow.Get_Cell(FirstRow.Get_CellsCount() - 1);
|
|
Item.Selection.Data = [];
|
|
for (var CellIndex = 0; CellIndex < FirstRow.Get_CellsCount(); CellIndex++) {
|
|
Item.Selection.Data.push({
|
|
Cell: CellIndex,
|
|
Row: 0
|
|
});
|
|
}
|
|
} else {
|
|
Item.Cursor_MoveRight(1, true, Word);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (this.Selection.EndPos != this.Selection.StartPos && false === this.Content[this.Selection.EndPos].Is_SelectionUse()) {
|
|
this.Selection.EndPos++;
|
|
this.CurPos.ContentPos = this.Selection.EndPos;
|
|
}
|
|
if (this.Selection.StartPos == this.Selection.EndPos && false === this.Content[this.Selection.StartPos].Is_SelectionUse()) {
|
|
this.Selection.Use = false;
|
|
this.CurPos.ContentPos = this.Selection.EndPos;
|
|
}
|
|
} else {
|
|
var End = this.Selection.EndPos;
|
|
if (End < this.Selection.StartPos) {
|
|
End = this.Selection.StartPos;
|
|
}
|
|
this.CurPos.ContentPos = End;
|
|
if (true === FromPaste && type_Table === this.Content[this.CurPos.ContentPos].Get_Type() && true === this.Content[this.CurPos.ContentPos].Selection_IsToEnd() && this.Content.length - 1 !== this.CurPos.ContentPos) {
|
|
this.CurPos.ContentPos = End + 1;
|
|
this.Content[this.CurPos.ContentPos].Cursor_MoveToStartPos(false);
|
|
} else {
|
|
if (false === this.Content[this.CurPos.ContentPos].Cursor_MoveRight(1, false, Word, FromPaste)) {
|
|
if (this.Content.length - 1 === this.CurPos.ContentPos) {
|
|
var Item = this.Content[this.CurPos.ContentPos];
|
|
Item.Cursor_MoveToEndPos(false);
|
|
}
|
|
}
|
|
}
|
|
this.Selection_Remove();
|
|
}
|
|
} else {
|
|
if (true === AddToSelect) {
|
|
this.Selection.Use = true;
|
|
this.Selection.StartPos = this.CurPos.ContentPos;
|
|
this.Selection.EndPos = this.CurPos.ContentPos;
|
|
if (false === this.Content[this.CurPos.ContentPos].Cursor_MoveRight(1, true, Word)) {
|
|
if (this.Content.length - 1 != this.CurPos.ContentPos) {
|
|
this.CurPos.ContentPos++;
|
|
var Item = this.Content[this.CurPos.ContentPos];
|
|
this.Selection.EndPos = this.CurPos.ContentPos;
|
|
if (type_Paragraph === Item.GetType()) {
|
|
if (false === Item.Is_SelectionUse()) {
|
|
var StartPos = Item.Internal_GetStartPos();
|
|
Item.CurPos.ContentPos = StartPos;
|
|
Item.Selection.Use = true;
|
|
Item.Selection.StartPos = StartPos;
|
|
Item.Selection.EndPos = StartPos;
|
|
}
|
|
Item.Cursor_MoveRight(1, true, Word);
|
|
} else {
|
|
if (type_Table === Item.GetType()) {
|
|
if (false === Item.Is_SelectionUse()) {
|
|
var FirstRow = Item.Content[0];
|
|
Item.Selection.Use = true;
|
|
Item.Selection.Type = table_Selection_Cell;
|
|
Item.Selection.StartPos.Pos = {
|
|
Row: 0,
|
|
Cell: 0
|
|
};
|
|
Item.Selection.EndPos.Pos = {
|
|
Row: 0,
|
|
Cell: FirstRow.Get_CellsCount() - 1
|
|
};
|
|
Item.CurCell = FirstRow.Get_Cell(FirstRow.Get_CellsCount() - 1);
|
|
Item.Selection.Data = [];
|
|
for (var CellIndex = 0; CellIndex < FirstRow.Get_CellsCount(); CellIndex++) {
|
|
Item.Selection.Data.push({
|
|
Cell: CellIndex,
|
|
Row: 0
|
|
});
|
|
}
|
|
} else {
|
|
Item.Cursor_MoveRight(1, true, Word);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (this.Selection.StartPos == this.Selection.EndPos && false === this.Content[this.Selection.StartPos].Is_SelectionUse()) {
|
|
this.Selection.Use = false;
|
|
this.CurPos.ContentPos = this.Selection.EndPos;
|
|
}
|
|
} else {
|
|
if (false === this.Content[this.CurPos.ContentPos].Cursor_MoveRight(1, false, Word)) {
|
|
if (this.Content.length - 1 != this.CurPos.ContentPos) {
|
|
this.CurPos.ContentPos++;
|
|
this.Content[this.CurPos.ContentPos].Cursor_MoveToStartPos();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
this.Document_UpdateInterfaceState();
|
|
this.Document_UpdateRulersState();
|
|
this.private_UpdateCursorXY(true, true);
|
|
}
|
|
}
|
|
},
|
|
Cursor_MoveUp: function (AddToSelect) {
|
|
if (docpostype_HdrFtr === this.CurPos.Type && docpostype_DrawingObjects === this.HdrFtr.CurHdrFtr.Content.CurPos.Type) {
|
|
var RetValue = this.HdrFtr.Cursor_MoveUp(AddToSelect);
|
|
this.Document_UpdateInterfaceState();
|
|
this.Document_UpdateSelectionState();
|
|
return RetValue;
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
var RetValue = this.DrawingObjects.cursorMoveUp(AddToSelect);
|
|
this.Document_UpdateInterfaceState();
|
|
this.Document_UpdateSelectionState();
|
|
return RetValue;
|
|
}
|
|
}
|
|
if (true === this.Is_SelectionUse() && true !== AddToSelect) {
|
|
this.Cursor_MoveLeft(false, false);
|
|
}
|
|
var bStopSelection = false;
|
|
if (true !== this.Is_SelectionUse() && true === AddToSelect) {
|
|
bStopSelection = true;
|
|
this.private_StartSelectionFromCurPos();
|
|
}
|
|
this.private_UpdateCursorXY(false, true);
|
|
var Result = this.private_MoveCursorUp(this.CurPos.RealX, this.CurPos.RealY, AddToSelect);
|
|
if (true === AddToSelect && true !== Result) {
|
|
this.Cursor_MoveToStartPos(true);
|
|
}
|
|
if (bStopSelection) {
|
|
this.private_StopSelection();
|
|
}
|
|
},
|
|
Cursor_MoveDown: function (AddToSelect) {
|
|
if (docpostype_HdrFtr === this.CurPos.Type && docpostype_DrawingObjects === this.HdrFtr.CurHdrFtr.Content.CurPos.Type) {
|
|
var RetValue = this.HdrFtr.Cursor_MoveDown(AddToSelect);
|
|
this.Document_UpdateInterfaceState();
|
|
this.Document_UpdateSelectionState();
|
|
return RetValue;
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
var RetValue = this.DrawingObjects.cursorMoveDown(AddToSelect);
|
|
this.Document_UpdateInterfaceState();
|
|
this.Document_UpdateSelectionState();
|
|
return RetValue;
|
|
}
|
|
}
|
|
if (true === this.Is_SelectionUse() && true !== AddToSelect) {
|
|
this.Cursor_MoveRight(false, false);
|
|
}
|
|
var bStopSelection = false;
|
|
if (true !== this.Is_SelectionUse() && true === AddToSelect) {
|
|
bStopSelection = true;
|
|
this.private_StartSelectionFromCurPos();
|
|
}
|
|
this.private_UpdateCursorXY(false, true);
|
|
var Result = this.private_MoveCursorDown(this.CurPos.RealX, this.CurPos.RealY, AddToSelect);
|
|
if (true === AddToSelect && true !== Result) {
|
|
this.Cursor_MoveToEndPos(true);
|
|
}
|
|
if (bStopSelection) {
|
|
this.private_StopSelection();
|
|
}
|
|
},
|
|
Cursor_MoveEndOfLine: function (AddToSelect) {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
var RetValue = this.HdrFtr.Cursor_MoveEndOfLine(AddToSelect);
|
|
this.Document_UpdateInterfaceState();
|
|
this.private_UpdateCursorXY(true, true);
|
|
return RetValue;
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
var RetValue = this.DrawingObjects.cursorMoveEndOfLine(AddToSelect);
|
|
this.Document_UpdateInterfaceState();
|
|
this.private_UpdateCursorXY(true, true);
|
|
return RetValue;
|
|
} else {
|
|
if (this.CurPos.ContentPos < 0) {
|
|
return false;
|
|
}
|
|
this.Remove_NumberingSelection();
|
|
if (true === this.Selection.Use) {
|
|
if (true === AddToSelect) {
|
|
var Item = this.Content[this.Selection.EndPos];
|
|
Item.Cursor_MoveEndOfLine(AddToSelect);
|
|
if (this.Selection.StartPos == this.Selection.EndPos && false === this.Content[this.Selection.StartPos].Is_SelectionUse()) {
|
|
this.Selection.Use = false;
|
|
this.CurPos.ContentPos = this.Selection.EndPos;
|
|
}
|
|
} else {
|
|
var Pos = (this.Selection.EndPos >= this.Selection.StartPos ? this.Selection.EndPos : this.Selection.StartPos);
|
|
this.CurPos.ContentPos = Pos;
|
|
var Item = this.Content[Pos];
|
|
Item.Cursor_MoveEndOfLine(AddToSelect);
|
|
this.Selection_Remove();
|
|
}
|
|
} else {
|
|
if (true === AddToSelect) {
|
|
this.Selection.Use = true;
|
|
this.Selection.StartPos = this.CurPos.ContentPos;
|
|
this.Selection.EndPos = this.CurPos.ContentPos;
|
|
var Item = this.Content[this.CurPos.ContentPos];
|
|
Item.Cursor_MoveEndOfLine(AddToSelect);
|
|
if (this.Selection.StartPos == this.Selection.EndPos && false === this.Content[this.Selection.StartPos].Is_SelectionUse()) {
|
|
this.Selection.Use = false;
|
|
this.CurPos.ContentPos = this.Selection.EndPos;
|
|
}
|
|
} else {
|
|
var Item = this.Content[this.CurPos.ContentPos];
|
|
Item.Cursor_MoveEndOfLine(AddToSelect);
|
|
}
|
|
}
|
|
this.Document_UpdateInterfaceState();
|
|
this.private_UpdateCursorXY(true, true);
|
|
}
|
|
}
|
|
},
|
|
Cursor_MoveStartOfLine: function (AddToSelect) {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
var RetValue = this.HdrFtr.Cursor_MoveStartOfLine(AddToSelect);
|
|
this.Document_UpdateInterfaceState();
|
|
this.private_UpdateCursorXY(true, true);
|
|
return RetValue;
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
var RetValue = this.DrawingObjects.cursorMoveStartOfLine(AddToSelect);
|
|
this.Document_UpdateInterfaceState();
|
|
this.private_UpdateCursorXY(true, true);
|
|
return RetValue;
|
|
} else {
|
|
if (this.CurPos.ContentPos < 0) {
|
|
return false;
|
|
}
|
|
this.Remove_NumberingSelection();
|
|
if (true === this.Selection.Use) {
|
|
if (true === AddToSelect) {
|
|
var Item = this.Content[this.Selection.EndPos];
|
|
Item.Cursor_MoveStartOfLine(AddToSelect);
|
|
if (this.Selection.StartPos == this.Selection.EndPos && false === this.Content[this.Selection.StartPos].Selection.Use) {
|
|
this.Selection.Use = false;
|
|
this.CurPos.ContentPos = this.Selection.EndPos;
|
|
}
|
|
} else {
|
|
var Pos = (this.Selection.StartPos <= this.Selection.EndPos ? this.Selection.StartPos : this.Selection.EndPos);
|
|
this.CurPos.ContentPos = Pos;
|
|
var Item = this.Content[Pos];
|
|
Item.Cursor_MoveStartOfLine(AddToSelect);
|
|
this.Selection_Remove();
|
|
}
|
|
} else {
|
|
if (true === AddToSelect) {
|
|
this.Selection.Use = true;
|
|
this.Selection.StartPos = this.CurPos.ContentPos;
|
|
this.Selection.EndPos = this.CurPos.ContentPos;
|
|
var Item = this.Content[this.CurPos.ContentPos];
|
|
Item.Cursor_MoveStartOfLine(AddToSelect);
|
|
if (this.Selection.StartPos == this.Selection.EndPos && false === this.Content[this.Selection.StartPos].Selection.Use) {
|
|
this.Selection.Use = false;
|
|
this.CurPos.ContentPos = this.Selection.EndPos;
|
|
}
|
|
} else {
|
|
var Item = this.Content[this.CurPos.ContentPos];
|
|
Item.Cursor_MoveStartOfLine(AddToSelect);
|
|
}
|
|
}
|
|
this.Document_UpdateInterfaceState();
|
|
this.private_UpdateCursorXY(true, true);
|
|
}
|
|
}
|
|
},
|
|
Cursor_MoveAt: function (X, Y, AddToSelect) {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
return this.HdrFtr.Cursor_MoveAt(X, Y, this.CurPage, AddToSelect);
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
return this.DrawingObjects.cursorMoveAt(X, Y, AddToSelect);
|
|
} else {
|
|
this.Remove_NumberingSelection();
|
|
if (true === this.Selection.Use) {
|
|
if (true === AddToSelect) {
|
|
this.Selection_SetEnd(X, Y, true);
|
|
} else {
|
|
this.Selection_Remove();
|
|
var ContentPos = this.Internal_GetContentPosByXY(X, Y);
|
|
this.CurPos.ContentPos = ContentPos;
|
|
this.Content[ContentPos].Cursor_MoveAt(X, Y, false, false, this.CurPage);
|
|
this.Document_UpdateInterfaceState();
|
|
}
|
|
} else {
|
|
if (true === AddToSelect) {
|
|
this.Selection.Use = true;
|
|
this.Selection.StartPos = this.CurPos.ContentPos;
|
|
this.Content[this.CurPos.ContentPos].Selection.Use = true;
|
|
this.Content[this.CurPos.ContentPos].Selection.StartPos = this.Content[this.CurPos.ContentPos].CurPos.ContentPos;
|
|
this.Selection_SetEnd(X, Y, true);
|
|
} else {
|
|
var ContentPos = this.Internal_GetContentPosByXY(X, Y);
|
|
this.CurPos.ContentPos = ContentPos;
|
|
this.Content[ContentPos].Cursor_MoveAt(X, Y, false, false, this.CurPage);
|
|
this.Document_UpdateInterfaceState();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
Cursor_MoveToCell: function (bNext) {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
this.HdrFtr.Cursor_MoveToCell(bNext);
|
|
} else {
|
|
if (docpostype_DrawingObjects == this.CurPos.Type) {
|
|
this.DrawingObjects.cursorMoveToCell(bNext);
|
|
} else {
|
|
if (true === this.Selection.Use) {
|
|
if (this.Selection.StartPos === this.Selection.EndPos && type_Table === this.Content[this.Selection.StartPos].GetType()) {
|
|
this.Content[this.Selection.StartPos].Cursor_MoveToCell(bNext);
|
|
}
|
|
} else {
|
|
if (type_Table === this.Content[this.CurPos.ContentPos].GetType()) {
|
|
this.Content[this.CurPos.ContentPos].Cursor_MoveToCell(bNext);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
Set_ParagraphAlign: function (Align) {
|
|
var SelectedInfo = this.Get_SelectedElementsInfo();
|
|
var Math = SelectedInfo.Get_Math();
|
|
if (null !== Math && true !== Math.Is_Inline()) {
|
|
Math.Set_Align(Align);
|
|
} else {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
this.HdrFtr.Set_ParagraphAlign(Align);
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
if (true != this.DrawingObjects.isSelectedText()) {
|
|
var ParaDrawing = this.DrawingObjects.getMajorParaDrawing();
|
|
if (null != ParaDrawing) {
|
|
var Paragraph = ParaDrawing.Parent;
|
|
Paragraph.Set_Align(Align);
|
|
}
|
|
} else {
|
|
this.DrawingObjects.setParagraphAlign(Align);
|
|
}
|
|
} else {
|
|
if (this.CurPos.ContentPos < 0) {
|
|
return false;
|
|
}
|
|
if (true === this.Selection.Use) {
|
|
var StartPos = this.Selection.StartPos;
|
|
var EndPos = this.Selection.EndPos;
|
|
if (EndPos < StartPos) {
|
|
var Temp = StartPos;
|
|
StartPos = EndPos;
|
|
EndPos = Temp;
|
|
}
|
|
for (var Index = StartPos; Index <= EndPos; Index++) {
|
|
var Item = this.Content[Index];
|
|
if (type_Paragraph == Item.GetType()) {
|
|
Item.Set_Align(Align, true);
|
|
} else {
|
|
if (type_Table == Item.GetType()) {
|
|
Item.TurnOff_RecalcEvent();
|
|
Item.Set_ParagraphAlign(Align);
|
|
Item.TurnOn_RecalcEvent();
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
var Item = this.Content[this.CurPos.ContentPos];
|
|
if (type_Paragraph == Item.GetType()) {
|
|
Item.Set_Align(Align, true);
|
|
} else {
|
|
if (type_Table == Item.GetType()) {
|
|
Item.Set_ParagraphAlign(Align);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
this.Recalculate();
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
},
|
|
Set_ParagraphSpacing: function (Spacing) {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
var bRetValue = this.HdrFtr.Set_ParagraphSpacing(Spacing);
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
return bRetValue;
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
var bRetValue = this.DrawingObjects.setParagraphSpacing(Spacing);
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
return bRetValue;
|
|
} else {
|
|
if (this.CurPos.ContentPos < 0) {
|
|
return false;
|
|
}
|
|
if (true === this.Selection.Use) {
|
|
var StartPos = this.Selection.StartPos;
|
|
var EndPos = this.Selection.EndPos;
|
|
if (EndPos < StartPos) {
|
|
var Temp = StartPos;
|
|
StartPos = EndPos;
|
|
EndPos = Temp;
|
|
}
|
|
for (var Index = StartPos; Index <= EndPos; Index++) {
|
|
var Item = this.Content[Index];
|
|
if (type_Paragraph == Item.GetType()) {
|
|
Item.Set_Spacing(Spacing, false);
|
|
} else {
|
|
if (type_Table == Item.GetType()) {
|
|
Item.TurnOff_RecalcEvent();
|
|
Item.Set_ParagraphSpacing(Spacing);
|
|
Item.TurnOn_RecalcEvent();
|
|
}
|
|
}
|
|
}
|
|
this.ContentLastChangePos = StartPos - 1;
|
|
this.Recalculate();
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
return;
|
|
}
|
|
var Item = this.Content[this.CurPos.ContentPos];
|
|
if (type_Paragraph == Item.GetType()) {
|
|
Item.Set_Spacing(Spacing, false);
|
|
this.ContentLastChangePos = this.CurPos.ContentPos - 1;
|
|
this.Recalculate();
|
|
} else {
|
|
if (type_Table == Item.GetType()) {
|
|
Item.Set_ParagraphSpacing(Spacing);
|
|
}
|
|
}
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
}
|
|
}
|
|
},
|
|
Set_ParagraphTabs: function (Tabs) {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
var bRetValue = this.HdrFtr.Set_ParagraphTabs(Tabs);
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
editor.Update_ParaTab(Default_Tab_Stop, Tabs);
|
|
return bRetValue;
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
var bRetValue = this.DrawingObjects.setParagraphTabs(Tabs);
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
editor.Update_ParaTab(Default_Tab_Stop, Tabs);
|
|
return bRetValue;
|
|
} else {
|
|
if (this.CurPos.ContentPos < 0) {
|
|
return false;
|
|
}
|
|
if (true === this.Selection.Use) {
|
|
var StartPos = this.Selection.StartPos;
|
|
var EndPos = this.Selection.EndPos;
|
|
if (EndPos < StartPos) {
|
|
var Temp = StartPos;
|
|
StartPos = EndPos;
|
|
EndPos = Temp;
|
|
}
|
|
for (var Index = StartPos; Index <= EndPos; Index++) {
|
|
var Item = this.Content[Index];
|
|
if (type_Paragraph == Item.GetType()) {
|
|
Item.Set_Tabs(Tabs);
|
|
} else {
|
|
if (type_Table == Item.GetType()) {
|
|
Item.TurnOff_RecalcEvent();
|
|
Item.Set_ParagraphTabs(Tabs);
|
|
Item.TurnOn_RecalcEvent();
|
|
}
|
|
}
|
|
}
|
|
this.ContentLastChangePos = StartPos;
|
|
this.Recalculate();
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
editor.Update_ParaTab(Default_Tab_Stop, Tabs);
|
|
return;
|
|
}
|
|
var Item = this.Content[this.CurPos.ContentPos];
|
|
if (type_Paragraph == Item.GetType()) {
|
|
Item.Set_Tabs(Tabs);
|
|
this.ContentLastChangePos = this.CurPos.ContentPos;
|
|
this.Recalculate(true);
|
|
editor.Update_ParaTab(Default_Tab_Stop, Tabs);
|
|
} else {
|
|
if (type_Table == Item.GetType()) {
|
|
Item.Set_ParagraphTabs(Tabs);
|
|
editor.Update_ParaTab(Default_Tab_Stop, Tabs);
|
|
}
|
|
}
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
}
|
|
}
|
|
},
|
|
Set_ParagraphIndent: function (Ind) {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
var bRetValue = this.HdrFtr.Set_ParagraphIndent(Ind);
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
return bRetValue;
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
var bRetValue = this.DrawingObjects.setParagraphIndent(Ind);
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
return bRetValue;
|
|
} else {
|
|
if (this.CurPos.ContentPos < 0) {
|
|
return false;
|
|
}
|
|
if (true === this.Selection.Use) {
|
|
var StartPos = this.Selection.StartPos;
|
|
var EndPos = this.Selection.EndPos;
|
|
if (EndPos < StartPos) {
|
|
var Temp = StartPos;
|
|
StartPos = EndPos;
|
|
EndPos = Temp;
|
|
}
|
|
for (var Index = StartPos; Index <= EndPos; Index++) {
|
|
var Item = this.Content[Index];
|
|
if (type_Paragraph == Item.GetType()) {
|
|
var NumPr = null;
|
|
if ("number" == typeof(Ind.ChangeLevel) && 0 != Ind.ChangeLevel && undefined != (NumPr = Item.Numbering_Get())) {
|
|
if (Ind.ChangeLevel > 0) {
|
|
Item.Numbering_Add(NumPr.NumId, Math.min(8, NumPr.Lvl + 1));
|
|
} else {
|
|
Item.Numbering_Add(NumPr.NumId, Math.max(0, NumPr.Lvl - 1));
|
|
}
|
|
} else {
|
|
Item.Set_Ind(Ind, false);
|
|
}
|
|
} else {
|
|
if (type_Table == Item.GetType()) {
|
|
Item.TurnOff_RecalcEvent();
|
|
Item.Set_ParagraphIndent(Ind);
|
|
Item.TurnOn_RecalcEvent();
|
|
}
|
|
}
|
|
}
|
|
this.ContentLastChangePos = StartPos;
|
|
this.Recalculate();
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
return;
|
|
}
|
|
var Item = this.Content[this.CurPos.ContentPos];
|
|
if (type_Paragraph == Item.GetType()) {
|
|
var NumPr = null;
|
|
if ("number" == typeof(Ind.ChangeLevel) && 0 != Ind.ChangeLevel && undefined != (NumPr = Item.Numbering_Get())) {
|
|
if (Ind.ChangeLevel > 0) {
|
|
Item.Numbering_Add(NumPr.NumId, Math.min(8, NumPr.Lvl + 1));
|
|
} else {
|
|
Item.Numbering_Add(NumPr.NumId, Math.max(0, NumPr.Lvl - 1));
|
|
}
|
|
} else {
|
|
Item.Set_Ind(Ind, false);
|
|
}
|
|
this.ContentLastChangePos = this.CurPos.ContentPos;
|
|
this.Recalculate();
|
|
} else {
|
|
if (type_Table == Item.GetType()) {
|
|
Item.Set_ParagraphIndent(Ind);
|
|
}
|
|
}
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
}
|
|
}
|
|
},
|
|
Set_ParagraphNumbering: function (NumInfo) {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
var bRetValue = this.HdrFtr.Set_ParagraphNumbering(NumInfo);
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
return bRetValue;
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
var bRetValue = this.DrawingObjects.setParagraphNumbering(NumInfo);
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
return bRetValue;
|
|
} else {
|
|
if (this.CurPos.ContentPos < 0) {
|
|
return false;
|
|
}
|
|
if (true === this.Selection.Use && selectionflag_Numbering !== this.Selection.Flag) {
|
|
if (this.Selection.StartPos === this.Selection.EndPos && type_Table === this.Content[this.Selection.StartPos].GetType()) {
|
|
this.Content[this.Selection.StartPos].Set_ParagraphNumbering(NumInfo);
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
return true;
|
|
}
|
|
var StartPos = this.Selection.StartPos;
|
|
var EndPos = this.Selection.EndPos;
|
|
if (EndPos < StartPos) {
|
|
var Temp = StartPos;
|
|
StartPos = EndPos;
|
|
EndPos = Temp;
|
|
}
|
|
if (NumInfo.SubType < 0) {
|
|
for (var Index = StartPos; Index <= EndPos; Index++) {
|
|
if (type_Paragraph == this.Content[Index].GetType()) {
|
|
this.Content[Index].Numbering_Remove();
|
|
} else {
|
|
if (type_Table == this.Content[Index].GetType()) {
|
|
this.Content[Index].TurnOff_RecalcEvent();
|
|
this.Content[Index].Set_ParagraphNumbering(NumInfo);
|
|
this.Content[Index].TurnOn_RecalcEvent();
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
switch (NumInfo.Type) {
|
|
case 0:
|
|
if (0 === NumInfo.SubType) {
|
|
var Prev = this.Content[StartPos - 1];
|
|
var NumId = null;
|
|
var NumLvl = 0;
|
|
if ("undefined" != typeof(Prev) && null != Prev && type_Paragraph === Prev.GetType()) {
|
|
var PrevNumPr = Prev.Numbering_Get();
|
|
if (undefined != PrevNumPr && true === this.Numbering.Check_Format(PrevNumPr.NumId, PrevNumPr.Lvl, numbering_numfmt_Bullet)) {
|
|
NumId = PrevNumPr.NumId;
|
|
NumLvl = PrevNumPr.Lvl;
|
|
}
|
|
}
|
|
if (null === NumId) {
|
|
NumId = this.Numbering.Create_AbstractNum();
|
|
NumLvl = 0;
|
|
this.Numbering.Get_AbstractNum(NumId).Create_Default_Bullet();
|
|
}
|
|
for (var Index = StartPos; Index <= EndPos; Index++) {
|
|
var OldNumPr = null;
|
|
if (type_Paragraph === this.Content[Index].GetType()) {
|
|
if (undefined != (OldNumPr = this.Content[Index].Numbering_Get())) {
|
|
this.Content[Index].Numbering_Add(NumId, OldNumPr.Lvl);
|
|
} else {
|
|
this.Content[Index].Numbering_Add(NumId, NumLvl);
|
|
}
|
|
} else {
|
|
if (type_Table == this.Content[Index].GetType()) {
|
|
this.Content[Index].TurnOff_RecalcEvent();
|
|
this.Content[Index].Set_ParagraphNumbering(NumInfo);
|
|
this.Content[Index].TurnOn_RecalcEvent();
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
var bDiffLvl = false;
|
|
var bDiffId = false;
|
|
var PrevLvl = null;
|
|
var PrevId = null;
|
|
for (var Index = StartPos; Index <= EndPos; Index++) {
|
|
var NumPr = null;
|
|
if (type_Paragraph === this.Content[Index].GetType() && undefined != (NumPr = this.Content[Index].Numbering_Get())) {
|
|
if (null === PrevLvl) {
|
|
PrevLvl = NumPr.Lvl;
|
|
}
|
|
if (null === PrevId) {
|
|
PrevId = NumPr.NumId;
|
|
}
|
|
if (PrevId != NumPr.NumId) {
|
|
bDiffId = true;
|
|
}
|
|
if (PrevLvl != NumPr.Lvl) {
|
|
bDiffLvl = true;
|
|
break;
|
|
}
|
|
} else {
|
|
if ((type_Paragraph === this.Content[Index].GetType() && undefined === NumPr) || type_Table === this.Content[Index].GetType()) {
|
|
bDiffLvl = true;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
var LvlText = "";
|
|
var LvlTextPr = new CTextPr();
|
|
LvlTextPr.RFonts.Set_All("Times New Roman", -1);
|
|
switch (NumInfo.SubType) {
|
|
case 1:
|
|
LvlText = String.fromCharCode(183);
|
|
LvlTextPr.RFonts.Set_All("Symbol", -1);
|
|
break;
|
|
case 2:
|
|
LvlText = "o";
|
|
LvlTextPr.RFonts.Set_All("Courier New", -1);
|
|
break;
|
|
case 3:
|
|
LvlText = String.fromCharCode(167);
|
|
LvlTextPr.RFonts.Set_All("Wingdings", -1);
|
|
break;
|
|
case 4:
|
|
LvlText = String.fromCharCode(118);
|
|
LvlTextPr.RFonts.Set_All("Wingdings", -1);
|
|
break;
|
|
case 5:
|
|
LvlText = String.fromCharCode(216);
|
|
LvlTextPr.RFonts.Set_All("Wingdings", -1);
|
|
break;
|
|
case 6:
|
|
LvlText = String.fromCharCode(252);
|
|
LvlTextPr.RFonts.Set_All("Wingdings", -1);
|
|
break;
|
|
case 7:
|
|
LvlText = String.fromCharCode(168);
|
|
LvlTextPr.RFonts.Set_All("Symbol", -1);
|
|
break;
|
|
}
|
|
var NumId = null;
|
|
if (true === bDiffLvl) {
|
|
NumId = this.Numbering.Create_AbstractNum();
|
|
var AbstractNum = this.Numbering.Get_AbstractNum(NumId);
|
|
AbstractNum.Create_Default_Bullet();
|
|
AbstractNum.Set_Lvl_Bullet(0, LvlText, LvlTextPr);
|
|
} else {
|
|
if (true === bDiffId || true != this.Numbering.Check_Format(PrevId, PrevLvl, numbering_numfmt_Bullet)) {
|
|
NumId = this.Numbering.Create_AbstractNum();
|
|
var AbstractNum = this.Numbering.Get_AbstractNum(NumId);
|
|
AbstractNum.Create_Default_Bullet();
|
|
AbstractNum.Set_Lvl_Bullet(PrevLvl, LvlText, LvlTextPr);
|
|
} else {
|
|
NumId = this.Numbering.Create_AbstractNum();
|
|
var OldAbstractNum = this.Numbering.Get_AbstractNum(PrevId);
|
|
var NewAbstractNum = this.Numbering.Get_AbstractNum(NumId);
|
|
NewAbstractNum.Copy(OldAbstractNum);
|
|
NewAbstractNum.Set_Lvl_Bullet(PrevLvl, LvlText, LvlTextPr);
|
|
}
|
|
}
|
|
for (var Index = StartPos; Index <= EndPos; Index++) {
|
|
var OldNumPr = null;
|
|
if (type_Paragraph === this.Content[Index].GetType()) {
|
|
if (undefined != (OldNumPr = this.Content[Index].Numbering_Get())) {
|
|
this.Content[Index].Numbering_Add(NumId, OldNumPr.Lvl);
|
|
} else {
|
|
this.Content[Index].Numbering_Add(NumId, 0);
|
|
}
|
|
} else {
|
|
if (type_Table == this.Content[Index].GetType()) {
|
|
this.Content[Index].TurnOff_RecalcEvent();
|
|
this.Content[Index].Set_ParagraphNumbering(NumInfo);
|
|
this.Content[Index].TurnOn_RecalcEvent();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
case 1:
|
|
if (0 === NumInfo.SubType) {
|
|
var Prev = this.Content[StartPos - 1];
|
|
var NumId = null;
|
|
var NumLvl = 0;
|
|
if ("undefined" != typeof(Prev) && null != Prev && type_Paragraph === Prev.GetType()) {
|
|
var PrevNumPr = Prev.Numbering_Get();
|
|
if (undefined != PrevNumPr && true === this.Numbering.Check_Format(PrevNumPr.NumId, PrevNumPr.Lvl, numbering_numfmt_Decimal)) {
|
|
NumId = PrevNumPr.NumId;
|
|
NumLvl = PrevNumPr.Lvl;
|
|
}
|
|
}
|
|
if (null === NumId) {
|
|
var Next = this.Content[StartPos + 1];
|
|
if (StartPos === EndPos && undefined !== Next && null !== Next && type_Paragraph === Next.GetType()) {
|
|
var NextNumPr = Next.Numbering_Get();
|
|
if (undefined !== NextNumPr && true === this.Numbering.Check_Format(NextNumPr.NumId, NextNumPr.Lvl, numbering_numfmt_Decimal)) {
|
|
NumId = NextNumPr.NumId;
|
|
NumLvl = NextNumPr.Lvl;
|
|
}
|
|
}
|
|
if (null === NumId) {
|
|
NumId = this.Numbering.Create_AbstractNum();
|
|
NumLvl = 0;
|
|
this.Numbering.Get_AbstractNum(NumId).Create_Default_Numbered();
|
|
}
|
|
}
|
|
for (var Index = StartPos; Index <= EndPos; Index++) {
|
|
var OldNumPr = null;
|
|
if (type_Paragraph === this.Content[Index].GetType()) {
|
|
if (undefined != (OldNumPr = this.Content[Index].Numbering_Get())) {
|
|
this.Content[Index].Numbering_Add(NumId, OldNumPr.Lvl);
|
|
} else {
|
|
this.Content[Index].Numbering_Add(NumId, NumLvl);
|
|
}
|
|
} else {
|
|
if (type_Table === this.Content[Index].GetType()) {
|
|
this.Content[Index].TurnOff_RecalcEvent();
|
|
this.Content[Index].Set_ParagraphNumbering(NumInfo);
|
|
this.Content[Index].TurnOn_RecalcEvent();
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
var bDiffLvl = false;
|
|
var bDiffId = false;
|
|
var PrevLvl = null;
|
|
var PrevId = null;
|
|
for (var Index = StartPos; Index <= EndPos; Index++) {
|
|
var NumPr = undefined;
|
|
if (type_Paragraph === this.Content[Index].GetType() && undefined != (NumPr = this.Content[Index].Numbering_Get())) {
|
|
if (null === PrevLvl) {
|
|
PrevLvl = NumPr.Lvl;
|
|
}
|
|
if (null === PrevId) {
|
|
PrevId = NumPr.NumId;
|
|
}
|
|
if (PrevId != NumPr.NumId) {
|
|
bDiffId = true;
|
|
}
|
|
if (PrevLvl != NumPr.Lvl) {
|
|
bDiffLvl = true;
|
|
break;
|
|
}
|
|
} else {
|
|
if ((type_Paragraph === this.Content[Index].GetType() && undefined === NumPr) || type_Table === this.Content[Index].GetType()) {
|
|
bDiffLvl = true;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
var AbstractNum = null;
|
|
var ChangeLvl = 0;
|
|
var NumId = null;
|
|
if (true === bDiffLvl) {
|
|
NumId = this.Numbering.Create_AbstractNum();
|
|
AbstractNum = this.Numbering.Get_AbstractNum(NumId);
|
|
AbstractNum.Create_Default_Numbered();
|
|
ChangeLvl = 0;
|
|
} else {
|
|
if (true === bDiffId || true != this.Numbering.Check_Format(PrevId, PrevLvl, numbering_numfmt_Decimal)) {
|
|
NumId = this.Numbering.Create_AbstractNum();
|
|
AbstractNum = this.Numbering.Get_AbstractNum(NumId);
|
|
AbstractNum.Create_Default_Numbered();
|
|
ChangeLvl = PrevLvl;
|
|
} else {
|
|
NumId = this.Numbering.Create_AbstractNum();
|
|
var OldAbstractNum = this.Numbering.Get_AbstractNum(PrevId);
|
|
AbstractNum = this.Numbering.Get_AbstractNum(NumId);
|
|
AbstractNum.Copy(OldAbstractNum);
|
|
ChangeLvl = PrevLvl;
|
|
}
|
|
}
|
|
switch (NumInfo.SubType) {
|
|
case 1:
|
|
AbstractNum.Set_Lvl_Numbered_2(ChangeLvl);
|
|
break;
|
|
case 2:
|
|
AbstractNum.Set_Lvl_Numbered_1(ChangeLvl);
|
|
break;
|
|
case 3:
|
|
AbstractNum.Set_Lvl_Numbered_5(ChangeLvl);
|
|
break;
|
|
case 4:
|
|
AbstractNum.Set_Lvl_Numbered_6(ChangeLvl);
|
|
break;
|
|
case 5:
|
|
AbstractNum.Set_Lvl_Numbered_7(ChangeLvl);
|
|
break;
|
|
case 6:
|
|
AbstractNum.Set_Lvl_Numbered_8(ChangeLvl);
|
|
break;
|
|
case 7:
|
|
AbstractNum.Set_Lvl_Numbered_9(ChangeLvl);
|
|
break;
|
|
}
|
|
for (var Index = StartPos; Index <= EndPos; Index++) {
|
|
var OldNumPr = null;
|
|
if (type_Paragraph === this.Content[Index].GetType()) {
|
|
if (undefined != (OldNumPr = this.Content[Index].Numbering_Get())) {
|
|
this.Content[Index].Numbering_Add(NumId, OldNumPr.Lvl);
|
|
} else {
|
|
this.Content[Index].Numbering_Add(NumId, 0);
|
|
}
|
|
} else {
|
|
if (type_Table === this.Content[Index].GetType()) {
|
|
this.Content[Index].TurnOff_RecalcEvent();
|
|
this.Content[Index].Set_ParagraphNumbering(NumInfo);
|
|
this.Content[Index].TurnOn_RecalcEvent();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
case 2:
|
|
var NumId = this.Numbering.Create_AbstractNum();
|
|
var AbstractNum = this.Numbering.Get_AbstractNum(NumId);
|
|
switch (NumInfo.SubType) {
|
|
case 1:
|
|
AbstractNum.Create_Default_Multilevel_1();
|
|
break;
|
|
case 2:
|
|
AbstractNum.Create_Default_Multilevel_2();
|
|
break;
|
|
case 3:
|
|
AbstractNum.Create_Default_Multilevel_3();
|
|
break;
|
|
}
|
|
for (var Index = StartPos; Index <= EndPos; Index++) {
|
|
var OldNumPr = null;
|
|
if (type_Paragraph === this.Content[Index].GetType()) {
|
|
if (undefined != (OldNumPr = this.Content[Index].Numbering_Get())) {
|
|
this.Content[Index].Numbering_Add(NumId, OldNumPr.Lvl);
|
|
} else {
|
|
this.Content[Index].Numbering_Add(NumId, 0);
|
|
}
|
|
} else {
|
|
if (type_Table === this.Content[Index].GetType()) {
|
|
this.Content[Index].TurnOff_RecalcEvent();
|
|
this.Content[Index].Set_ParagraphNumbering(NumInfo);
|
|
this.Content[Index].TurnOn_RecalcEvent();
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
this.ContentLastChangePos = StartPos - 1;
|
|
this.Recalculate();
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
return;
|
|
}
|
|
var Item = this.Content[this.CurPos.ContentPos];
|
|
if (type_Paragraph == Item.GetType()) {
|
|
var FirstChange = 0;
|
|
if (NumInfo.SubType < 0) {
|
|
Item.Numbering_Remove();
|
|
if (selectionflag_Numbering === this.Selection.Flag) {
|
|
this.Selection_Remove();
|
|
Item.Document_SetThisElementCurrent(true);
|
|
}
|
|
} else {
|
|
if (selectionflag_Numbering === this.Selection.Flag && 0 === NumInfo.SubType) {
|
|
NumInfo.SubType = 1;
|
|
}
|
|
switch (NumInfo.Type) {
|
|
case 0:
|
|
if (0 === NumInfo.SubType) {
|
|
var NumPr = Item.Numbering_Get();
|
|
if (undefined != (NumPr = Item.Numbering_Get())) {
|
|
var AbstractNum = this.Numbering.Get_AbstractNum(NumPr.NumId);
|
|
if (false === this.Numbering.Check_Format(NumPr.NumId, NumPr.Lvl, numbering_numfmt_Bullet)) {
|
|
AbstractNum.Create_Default_Bullet();
|
|
FirstChange = 0;
|
|
var bFirstChange = false;
|
|
for (var Index = 0; Index < this.Content.length; Index++) {
|
|
if (true === this.Content[Index].Numbering_IsUse(NumPr.NumId, NumPr.Lvl)) {
|
|
if (false === bFirstChange) {
|
|
FirstChange = Index;
|
|
bFirstChange = true;
|
|
}
|
|
this.Content[Index].Recalc_CompileParaPr();
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
var Prev = this.Content[this.CurPos.ContentPos - 1];
|
|
var NumId = undefined;
|
|
var NumLvl = 0;
|
|
if ("undefined" != typeof(Prev) && null != Prev && type_Paragraph === Prev.GetType()) {
|
|
var PrevNumPr = Prev.Numbering_Get();
|
|
if (undefined != PrevNumPr && true === this.Numbering.Check_Format(PrevNumPr.NumId, PrevNumPr.Lvl, numbering_numfmt_Bullet)) {
|
|
NumId = PrevNumPr.NumId;
|
|
NumLvl = PrevNumPr.Lvl;
|
|
}
|
|
}
|
|
if (undefined === NumId) {
|
|
NumId = this.Numbering.Create_AbstractNum();
|
|
NumLvl = 0;
|
|
this.Numbering.Get_AbstractNum(NumId).Create_Default_Bullet();
|
|
}
|
|
if (type_Paragraph === Item.GetType()) {
|
|
var OldNumPr = Item.Numbering_Get();
|
|
if (undefined != OldNumPr) {
|
|
Item.Numbering_Add(NumId, OldNumPr.Lvl);
|
|
} else {
|
|
Item.Numbering_Add(NumId, NumLvl);
|
|
}
|
|
} else {
|
|
Item.Numbering_Add(NumId, NumLvl);
|
|
}
|
|
FirstChange = this.CurPos.ContentPos - 1;
|
|
}
|
|
} else {
|
|
var LvlText = "";
|
|
var LvlTextPr = new CTextPr();
|
|
LvlTextPr.RFonts.Set_All("Times New Roman", -1);
|
|
switch (NumInfo.SubType) {
|
|
case 1:
|
|
LvlText = String.fromCharCode(183);
|
|
LvlTextPr.RFonts.Set_All("Symbol", -1);
|
|
break;
|
|
case 2:
|
|
LvlText = "o";
|
|
LvlTextPr.RFonts.Set_All("Courier New", -1);
|
|
break;
|
|
case 3:
|
|
LvlText = String.fromCharCode(167);
|
|
LvlTextPr.RFonts.Set_All("Wingdings", -1);
|
|
break;
|
|
case 4:
|
|
LvlText = String.fromCharCode(118);
|
|
LvlTextPr.RFonts.Set_All("Wingdings", -1);
|
|
break;
|
|
case 5:
|
|
LvlText = String.fromCharCode(216);
|
|
LvlTextPr.RFonts.Set_All("Wingdings", -1);
|
|
break;
|
|
case 6:
|
|
LvlText = String.fromCharCode(252);
|
|
LvlTextPr.RFonts.Set_All("Wingdings", -1);
|
|
break;
|
|
case 7:
|
|
LvlText = String.fromCharCode(168);
|
|
LvlTextPr.RFonts.Set_All("Symbol", -1);
|
|
break;
|
|
}
|
|
var NumPr = null;
|
|
if (undefined != (NumPr = Item.Numbering_Get())) {
|
|
var AbstractNum = this.Numbering.Get_AbstractNum(NumPr.NumId);
|
|
AbstractNum.Set_Lvl_Bullet(NumPr.Lvl, LvlText, LvlTextPr);
|
|
FirstChange = 0;
|
|
var bFirstChange = false;
|
|
for (var Index = 0; Index < this.Content.length; Index++) {
|
|
if (true === this.Content[Index].Numbering_IsUse(NumPr.NumId, NumPr.Lvl)) {
|
|
if (false === bFirstChange) {
|
|
FirstChange = Index;
|
|
bFirstChange = true;
|
|
}
|
|
this.Content[Index].Recalc_CompileParaPr();
|
|
}
|
|
}
|
|
} else {
|
|
var NumId = this.Numbering.Create_AbstractNum();
|
|
var AbstractNum = this.Numbering.Get_AbstractNum(NumId);
|
|
AbstractNum.Create_Default_Bullet();
|
|
AbstractNum.Set_Lvl_Bullet(0, LvlText, LvlTextPr);
|
|
Item.Numbering_Add(NumId, 0);
|
|
FirstChange = this.CurPos.ContentPos - 1;
|
|
}
|
|
}
|
|
break;
|
|
case 1:
|
|
if (0 === NumInfo.SubType) {
|
|
var NumPr = Item.Numbering_Get();
|
|
if (undefined != (NumPr = Item.Numbering_Get())) {
|
|
var AbstractNum = this.Numbering.Get_AbstractNum(NumPr.NumId);
|
|
if (false === this.Numbering.Check_Format(NumPr.NumId, NumPr.Lvl, numbering_numfmt_Decimal)) {
|
|
AbstractNum.Create_Default_Numbered();
|
|
FirstChange = 0;
|
|
var bFirstChange = false;
|
|
for (var Index = 0; Index < this.Content.length; Index++) {
|
|
if (true === this.Content[Index].Numbering_IsUse(NumPr.NumId, NumPr.Lvl)) {
|
|
if (false === bFirstChange) {
|
|
FirstChange = Index;
|
|
bFirstChange = true;
|
|
}
|
|
this.Content[Index].Recalc_CompileParaPr();
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
var Prev = this.Content[this.CurPos.ContentPos - 1];
|
|
var NumId = null;
|
|
var NumLvl = 0;
|
|
if ("undefined" != typeof(Prev) && null != Prev && type_Paragraph === Prev.GetType()) {
|
|
var PrevNumPr = Prev.Numbering_Get();
|
|
if (undefined != PrevNumPr && true === this.Numbering.Check_Format(PrevNumPr.NumId, PrevNumPr.Lvl, numbering_numfmt_Decimal)) {
|
|
NumId = PrevNumPr.NumId;
|
|
NumLvl = PrevNumPr.Lvl;
|
|
}
|
|
}
|
|
if (null === NumId) {
|
|
var Next = this.Content[this.CurPos.ContentPos + 1];
|
|
if (undefined !== Next && null !== Next && type_Paragraph === Next.GetType()) {
|
|
var NextNumPr = Next.Numbering_Get();
|
|
if (undefined !== NextNumPr && true === this.Numbering.Check_Format(NextNumPr.NumId, NextNumPr.Lvl, numbering_numfmt_Decimal)) {
|
|
NumId = NextNumPr.NumId;
|
|
NumLvl = NextNumPr.Lvl;
|
|
}
|
|
}
|
|
if (null === NumId) {
|
|
NumId = this.Numbering.Create_AbstractNum();
|
|
NumLvl = 0;
|
|
this.Numbering.Get_AbstractNum(NumId).Create_Default_Numbered();
|
|
}
|
|
}
|
|
if (type_Paragraph === Item.GetType()) {
|
|
var OldNumPr = Item.Numbering_Get();
|
|
if (undefined != (OldNumPr)) {
|
|
Item.Numbering_Add(NumId, OldNumPr.Lvl);
|
|
} else {
|
|
Item.Numbering_Add(NumId, NumLvl);
|
|
}
|
|
} else {
|
|
Item.Numbering_Add(NumId, NumLvl);
|
|
}
|
|
FirstChange = this.CurPos.ContentPos - 1;
|
|
}
|
|
} else {
|
|
var NumPr = null;
|
|
var AbstractNum = null;
|
|
var ChangeLvl = 0;
|
|
if (undefined != (NumPr = Item.Numbering_Get())) {
|
|
AbstractNum = this.Numbering.Get_AbstractNum(NumPr.NumId);
|
|
ChangeLvl = NumPr.Lvl;
|
|
} else {
|
|
var NumId = this.Numbering.Create_AbstractNum();
|
|
AbstractNum = this.Numbering.Get_AbstractNum(NumId);
|
|
AbstractNum.Create_Default_Numbered();
|
|
ChangeLvl = 0;
|
|
}
|
|
switch (NumInfo.SubType) {
|
|
case 1:
|
|
AbstractNum.Set_Lvl_Numbered_2(ChangeLvl);
|
|
break;
|
|
case 2:
|
|
AbstractNum.Set_Lvl_Numbered_1(ChangeLvl);
|
|
break;
|
|
case 3:
|
|
AbstractNum.Set_Lvl_Numbered_5(ChangeLvl);
|
|
break;
|
|
case 4:
|
|
AbstractNum.Set_Lvl_Numbered_6(ChangeLvl);
|
|
break;
|
|
case 5:
|
|
AbstractNum.Set_Lvl_Numbered_7(ChangeLvl);
|
|
break;
|
|
case 6:
|
|
AbstractNum.Set_Lvl_Numbered_8(ChangeLvl);
|
|
break;
|
|
case 7:
|
|
AbstractNum.Set_Lvl_Numbered_9(ChangeLvl);
|
|
break;
|
|
}
|
|
if (null != NumPr) {
|
|
FirstChange = 0;
|
|
var bFirstChange = false;
|
|
for (var Index = 0; Index < this.Content.length; Index++) {
|
|
if (true === this.Content[Index].Numbering_IsUse(NumPr.NumId, NumPr.Lvl)) {
|
|
if (false === bFirstChange) {
|
|
FirstChange = Index;
|
|
bFirstChange = true;
|
|
}
|
|
this.Content[Index].Recalc_CompileParaPr();
|
|
}
|
|
}
|
|
} else {
|
|
Item.Numbering_Add(NumId, 0);
|
|
FirstChange = this.CurPos.ContentPos - 1;
|
|
}
|
|
}
|
|
break;
|
|
case 2:
|
|
var NumId = null;
|
|
var NumPr = Item.Numbering_Get();
|
|
var AbstractNum = null;
|
|
if (undefined != NumPr) {
|
|
AbstractNum = this.Numbering.Get_AbstractNum(NumPr.NumId);
|
|
} else {
|
|
NumId = this.Numbering.Create_AbstractNum();
|
|
AbstractNum = this.Numbering.Get_AbstractNum(NumId);
|
|
}
|
|
switch (NumInfo.SubType) {
|
|
case 1:
|
|
AbstractNum.Create_Default_Multilevel_1();
|
|
break;
|
|
case 2:
|
|
AbstractNum.Create_Default_Multilevel_2();
|
|
break;
|
|
case 3:
|
|
AbstractNum.Create_Default_Multilevel_3();
|
|
break;
|
|
}
|
|
if (null != NumPr) {
|
|
FirstChange = 0;
|
|
var bFirstChange = false;
|
|
for (var Index = 0; Index < this.Content.length; Index++) {
|
|
if (true === this.Content[Index].Numbering_IsUse(NumPr.NumId)) {
|
|
if (false === bFirstChange) {
|
|
FirstChange = Index;
|
|
bFirstChange = true;
|
|
}
|
|
this.Content[Index].Recalc_CompileParaPr();
|
|
}
|
|
}
|
|
} else {
|
|
Item.Numbering_Add(NumId, 0);
|
|
FirstChange = this.CurPos.ContentPos - 1;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
this.ContentLastChangePos = FirstChange;
|
|
this.Recalculate();
|
|
} else {
|
|
if (type_Table == Item.GetType()) {
|
|
Item.Set_ParagraphNumbering(NumInfo);
|
|
}
|
|
}
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
}
|
|
}
|
|
},
|
|
Set_ParagraphShd: function (Shd) {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
this.HdrFtr.Set_ParagraphShd(Shd);
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
return;
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
this.DrawingObjects.setParagraphShd(Shd);
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
return;
|
|
} else {
|
|
if (this.CurPos.ContentPos < 0) {
|
|
return false;
|
|
}
|
|
if (true === this.Selection.Use) {
|
|
var StartPos = this.Selection.StartPos;
|
|
var EndPos = this.Selection.EndPos;
|
|
if (true === this.UseTextShd && StartPos === EndPos && type_Paragraph === this.Content[StartPos].GetType() && false === this.Content[StartPos].Selection_CheckParaEnd() && selectionflag_Common === this.Selection.Flag) {
|
|
this.Paragraph_Add(new ParaTextPr({
|
|
Shd: Shd
|
|
}));
|
|
this.Recalculate();
|
|
} else {
|
|
if (EndPos < StartPos) {
|
|
var Temp = StartPos;
|
|
StartPos = EndPos;
|
|
EndPos = Temp;
|
|
}
|
|
for (var Index = StartPos; Index <= EndPos; Index++) {
|
|
var Item = this.Content[Index];
|
|
if (type_Paragraph == Item.GetType()) {
|
|
Item.Set_Shd(Shd);
|
|
} else {
|
|
if (type_Table == Item.GetType()) {
|
|
Item.TurnOff_RecalcEvent();
|
|
Item.Set_ParagraphShd(Shd);
|
|
Item.TurnOn_RecalcEvent();
|
|
}
|
|
}
|
|
}
|
|
var PageStart = -1;
|
|
var PageEnd = -1;
|
|
for (var Index = 0; Index < this.Pages.length - 1; Index++) {
|
|
if (PageStart == -1 && StartPos <= this.Pages[Index + 1].Pos) {
|
|
PageStart = Index;
|
|
}
|
|
if (PageEnd == -1 && EndPos < this.Pages[Index + 1].Pos) {
|
|
PageEnd = Index;
|
|
}
|
|
}
|
|
if (-1 === PageStart) {
|
|
PageStart = this.Pages.length - 1;
|
|
}
|
|
if (-1 === PageEnd) {
|
|
PageEnd = this.Pages.length - 1;
|
|
}
|
|
for (var Index = PageStart; Index <= PageEnd; Index++) {
|
|
this.DrawingDocument.OnRecalculatePage(Index, this.Pages[Index]);
|
|
}
|
|
this.DrawingDocument.OnEndRecalculate(false, true);
|
|
}
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
return;
|
|
}
|
|
var Item = this.Content[this.CurPos.ContentPos];
|
|
if (type_Paragraph == Item.GetType()) {
|
|
Item.Set_Shd(Shd);
|
|
var PageStart = -1;
|
|
var PageEnd = -1;
|
|
for (var Index = 0; Index < this.Pages.length - 1; Index++) {
|
|
if (PageStart == -1 && this.CurPos.ContentPos <= this.Pages[Index + 1].Pos) {
|
|
PageStart = Index;
|
|
}
|
|
if (PageEnd == -1 && this.CurPos.ContentPos < this.Pages[Index + 1].Pos) {
|
|
PageEnd = Index;
|
|
}
|
|
}
|
|
if (-1 === PageStart) {
|
|
PageStart = this.Pages.length - 1;
|
|
}
|
|
if (-1 === PageEnd) {
|
|
PageEnd = this.Pages.length - 1;
|
|
}
|
|
for (var Index = PageStart; Index <= PageEnd; Index++) {
|
|
this.DrawingDocument.OnRecalculatePage(Index, this.Pages[Index]);
|
|
}
|
|
this.DrawingDocument.OnEndRecalculate(false, true);
|
|
} else {
|
|
if (type_Table == Item.GetType()) {
|
|
Item.Set_ParagraphShd(Shd);
|
|
}
|
|
}
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
}
|
|
}
|
|
},
|
|
Set_ParagraphStyle: function (Name) {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
var bRetValue = this.HdrFtr.Set_ParagraphStyle(Name);
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
return bRetValue;
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
var bRetValue = this.DrawingObjects.setParagraphStyle(Name);
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
return bRetValue;
|
|
} else {
|
|
var StyleId = this.Styles.Get_StyleIdByName(Name);
|
|
if (this.CurPos.ContentPos < 0) {
|
|
return false;
|
|
}
|
|
if (true === this.Selection.Use) {
|
|
if (selectionflag_Numbering === this.Selection.Flag) {
|
|
this.Remove_NumberingSelection();
|
|
}
|
|
var StartPos = this.Selection.StartPos;
|
|
var EndPos = this.Selection.EndPos;
|
|
if (EndPos < StartPos) {
|
|
var Temp = StartPos;
|
|
StartPos = EndPos;
|
|
EndPos = Temp;
|
|
}
|
|
for (var Index = StartPos; Index <= EndPos; Index++) {
|
|
var Item = this.Content[Index];
|
|
if (type_Paragraph == Item.GetType()) {
|
|
Item.Style_Add(StyleId);
|
|
} else {
|
|
if (type_Table == Item.GetType()) {
|
|
Item.TurnOff_RecalcEvent();
|
|
Item.Set_ParagraphStyle(Name);
|
|
Item.TurnOn_RecalcEvent();
|
|
}
|
|
}
|
|
}
|
|
this.ContentLastChangePos = Math.max(StartPos - 1, 0);
|
|
this.Recalculate();
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
return;
|
|
}
|
|
var Item = this.Content[this.CurPos.ContentPos];
|
|
if (type_Paragraph == Item.GetType()) {
|
|
Item.Style_Add(StyleId);
|
|
this.ContentLastChangePos = Math.max(this.CurPos.ContentPos - 1, 0);
|
|
this.Recalculate();
|
|
} else {
|
|
if (type_Table == Item.GetType()) {
|
|
Item.TurnOff_RecalcEvent();
|
|
Item.Set_ParagraphStyle(Name);
|
|
Item.TurnOn_RecalcEvent();
|
|
this.ContentLastChangePos = Math.max(this.CurPos.ContentPos - 1, 0);
|
|
this.Recalculate();
|
|
}
|
|
}
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
}
|
|
}
|
|
},
|
|
Set_ParagraphContextualSpacing: function (Value) {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
var bRetValue = this.HdrFtr.Set_ParagraphContextualSpacing(Value);
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
return bRetValue;
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
var bRetValue = this.DrawingObjects.setParagraphContextualSpacing(Value);
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
return bRetValue;
|
|
} else {
|
|
if (this.CurPos.ContentPos < 0) {
|
|
return false;
|
|
}
|
|
if (true === this.Selection.Use) {
|
|
var StartPos = this.Selection.StartPos;
|
|
var EndPos = this.Selection.EndPos;
|
|
if (EndPos < StartPos) {
|
|
var Temp = StartPos;
|
|
StartPos = EndPos;
|
|
EndPos = Temp;
|
|
}
|
|
for (var Index = StartPos; Index <= EndPos; Index++) {
|
|
var Item = this.Content[Index];
|
|
if (type_Paragraph == Item.GetType()) {
|
|
Item.Set_ContextualSpacing(Value);
|
|
} else {
|
|
if (type_Table == Item.GetType()) {
|
|
Item.TurnOff_RecalcEvent();
|
|
Item.Set_ParagraphContextualSpacing(Value);
|
|
Item.TurnOn_RecalcEvent();
|
|
}
|
|
}
|
|
}
|
|
this.ContentLastChangePos = StartPos;
|
|
this.Recalculate();
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
return;
|
|
}
|
|
var Item = this.Content[this.CurPos.ContentPos];
|
|
if (type_Paragraph == Item.GetType()) {
|
|
Item.Set_ContextualSpacing(Value);
|
|
this.ContentLastChangePos = this.CurPos.ContentPos;
|
|
this.Recalculate(true);
|
|
} else {
|
|
if (type_Table == Item.GetType()) {
|
|
Item.Set_ParagraphContextualSpacing(Value);
|
|
}
|
|
}
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
}
|
|
}
|
|
},
|
|
Set_ParagraphPageBreakBefore: function (Value) {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
var bRetValue = this.HdrFtr.Set_ParagraphPageBreakBefore(Value);
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
return bRetValue;
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
var bRetValue = this.DrawingObjects.setParagraphPageBreakBefore(Value);
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
return bRetValue;
|
|
} else {
|
|
if (this.CurPos.ContentPos < 0) {
|
|
return false;
|
|
}
|
|
if (true === this.Selection.Use) {
|
|
var StartPos = this.Selection.StartPos;
|
|
var EndPos = this.Selection.EndPos;
|
|
if (EndPos < StartPos) {
|
|
var Temp = StartPos;
|
|
StartPos = EndPos;
|
|
EndPos = Temp;
|
|
}
|
|
for (var Index = StartPos; Index <= EndPos; Index++) {
|
|
var Item = this.Content[Index];
|
|
if (type_Paragraph == Item.GetType()) {
|
|
Item.Set_PageBreakBefore(Value);
|
|
} else {
|
|
if (type_Table == Item.GetType()) {
|
|
Item.TurnOff_RecalcEvent();
|
|
Item.Set_ParagraphPageBreakBefore(Value);
|
|
Item.TurnOn_RecalcEvent();
|
|
}
|
|
}
|
|
}
|
|
this.ContentLastChangePos = StartPos;
|
|
this.Recalculate();
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
return;
|
|
}
|
|
var Item = this.Content[this.CurPos.ContentPos];
|
|
if (type_Paragraph == Item.GetType()) {
|
|
Item.Set_PageBreakBefore(Value);
|
|
this.ContentLastChangePos = this.CurPos.ContentPos;
|
|
this.Recalculate(true);
|
|
} else {
|
|
if (type_Table == Item.GetType()) {
|
|
Item.Set_ParagraphPageBreakBefore(Value);
|
|
}
|
|
}
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
}
|
|
}
|
|
},
|
|
Set_ParagraphKeepLines: function (Value) {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
var bRetValue = this.HdrFtr.Set_ParagraphKeepLines(Value);
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
return bRetValue;
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
var bRetValue = this.DrawingObjects.setParagraphKeepLines(Value);
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
return bRetValue;
|
|
} else {
|
|
if (this.CurPos.ContentPos < 0) {
|
|
return false;
|
|
}
|
|
if (true === this.Selection.Use) {
|
|
var StartPos = this.Selection.StartPos;
|
|
var EndPos = this.Selection.EndPos;
|
|
if (EndPos < StartPos) {
|
|
var Temp = StartPos;
|
|
StartPos = EndPos;
|
|
EndPos = Temp;
|
|
}
|
|
for (var Index = StartPos; Index <= EndPos; Index++) {
|
|
var Item = this.Content[Index];
|
|
if (type_Paragraph == Item.GetType()) {
|
|
Item.Set_KeepLines(Value);
|
|
} else {
|
|
if (type_Table == Item.GetType()) {
|
|
Item.TurnOff_RecalcEvent();
|
|
Item.Set_ParagraphKeepLines(Value);
|
|
Item.TurnOn_RecalcEvent();
|
|
}
|
|
}
|
|
}
|
|
this.ContentLastChangePos = StartPos;
|
|
this.Recalculate();
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
return;
|
|
}
|
|
var Item = this.Content[this.CurPos.ContentPos];
|
|
if (type_Paragraph == Item.GetType()) {
|
|
Item.Set_KeepLines(Value);
|
|
this.ContentLastChangePos = this.CurPos.ContentPos;
|
|
this.Recalculate(true);
|
|
} else {
|
|
if (type_Table == Item.GetType()) {
|
|
Item.Set_ParagraphKeepLines(Value);
|
|
}
|
|
}
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
}
|
|
}
|
|
},
|
|
Set_ParagraphKeepNext: function (Value) {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
var bRetValue = this.HdrFtr.Set_ParagraphKeepNext(Value);
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
return bRetValue;
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
var bRetValue = this.DrawingObjects.setParagraphKeepNext(Value);
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
return bRetValue;
|
|
} else {
|
|
if (this.CurPos.ContentPos < 0) {
|
|
return false;
|
|
}
|
|
if (true === this.Selection.Use) {
|
|
var StartPos = this.Selection.StartPos;
|
|
var EndPos = this.Selection.EndPos;
|
|
if (EndPos < StartPos) {
|
|
var Temp = StartPos;
|
|
StartPos = EndPos;
|
|
EndPos = Temp;
|
|
}
|
|
for (var Index = StartPos; Index <= EndPos; Index++) {
|
|
var Item = this.Content[Index];
|
|
if (type_Paragraph == Item.GetType()) {
|
|
Item.Set_KeepNext(Value);
|
|
} else {
|
|
if (type_Table == Item.GetType()) {
|
|
Item.TurnOff_RecalcEvent();
|
|
Item.Set_ParagraphKeepNext(Value);
|
|
Item.TurnOn_RecalcEvent();
|
|
}
|
|
}
|
|
}
|
|
this.ContentLastChangePos = StartPos;
|
|
this.Recalculate();
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
return;
|
|
}
|
|
var Item = this.Content[this.CurPos.ContentPos];
|
|
if (type_Paragraph == Item.GetType()) {
|
|
Item.Set_KeepNext(Value);
|
|
this.ContentLastChangePos = this.CurPos.ContentPos;
|
|
this.Recalculate(true);
|
|
} else {
|
|
if (type_Table == Item.GetType()) {
|
|
Item.Set_ParagraphKeepNext(Value);
|
|
}
|
|
}
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
}
|
|
}
|
|
},
|
|
Set_ParagraphWidowControl: function (Value) {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
var bRetValue = this.HdrFtr.Set_ParagraphWidowControl(Value);
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
return bRetValue;
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
var bRetValue = this.DrawingObjects.setParagraphWidowControl(Value);
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
return bRetValue;
|
|
} else {
|
|
if (this.CurPos.ContentPos < 0) {
|
|
return false;
|
|
}
|
|
if (true === this.Selection.Use) {
|
|
var StartPos = this.Selection.StartPos;
|
|
var EndPos = this.Selection.EndPos;
|
|
if (EndPos < StartPos) {
|
|
var Temp = StartPos;
|
|
StartPos = EndPos;
|
|
EndPos = Temp;
|
|
}
|
|
for (var Index = StartPos; Index <= EndPos; Index++) {
|
|
var Item = this.Content[Index];
|
|
if (type_Paragraph == Item.GetType()) {
|
|
Item.Set_WidowControl(Value);
|
|
} else {
|
|
if (type_Table == Item.GetType()) {
|
|
Item.TurnOff_RecalcEvent();
|
|
Item.Set_ParagraphWidowControl(Value);
|
|
Item.TurnOn_RecalcEvent();
|
|
}
|
|
}
|
|
}
|
|
this.ContentLastChangePos = StartPos;
|
|
this.Recalculate();
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
return;
|
|
}
|
|
var Item = this.Content[this.CurPos.ContentPos];
|
|
if (type_Paragraph == Item.GetType()) {
|
|
Item.Set_WidowControl(Value);
|
|
this.ContentLastChangePos = this.CurPos.ContentPos;
|
|
this.Recalculate(true);
|
|
} else {
|
|
if (type_Table == Item.GetType()) {
|
|
Item.Set_ParagraphWidowControl(Value);
|
|
}
|
|
}
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
}
|
|
}
|
|
},
|
|
Set_ParagraphBorders: function (Borders) {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
var bRetValue = this.HdrFtr.Set_ParagraphBorders(Borders);
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
return bRetValue;
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
var bRetValue = this.DrawingObjects.setParagraphBorders(Borders);
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
return bRetValue;
|
|
} else {
|
|
if (this.CurPos.ContentPos < 0) {
|
|
return false;
|
|
}
|
|
if (true === this.Selection.Use) {
|
|
var StartPos = this.Selection.StartPos;
|
|
var EndPos = this.Selection.EndPos;
|
|
if (EndPos < StartPos) {
|
|
var Temp = StartPos;
|
|
StartPos = EndPos;
|
|
EndPos = Temp;
|
|
}
|
|
for (var Index = StartPos; Index <= EndPos; Index++) {
|
|
var Item = this.Content[Index];
|
|
if (type_Paragraph == Item.GetType()) {
|
|
Item.Set_Borders(Borders);
|
|
} else {
|
|
if (type_Table == Item.GetType()) {
|
|
Item.TurnOff_RecalcEvent();
|
|
Item.Set_ParagraphBorders(Borders);
|
|
Item.TurnOn_RecalcEvent();
|
|
}
|
|
}
|
|
}
|
|
this.ContentLastChangePos = StartPos;
|
|
this.Recalculate();
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
return;
|
|
}
|
|
var Item = this.Content[this.CurPos.ContentPos];
|
|
if (type_Paragraph == Item.GetType()) {
|
|
var StartPos = Item.Index;
|
|
var EndPos = Item.Index;
|
|
var CurBrd = Item.Get_CompiledPr().ParaPr.Brd;
|
|
while (true != CurBrd.First) {
|
|
StartPos--;
|
|
if (StartPos < 0) {
|
|
StartPos = 0;
|
|
break;
|
|
}
|
|
var TempItem = this.Content[StartPos];
|
|
if (type_Paragraph != TempItem.GetType()) {
|
|
StartPos++;
|
|
break;
|
|
}
|
|
CurBrd = TempItem.Get_CompiledPr().ParaPr.Brd;
|
|
}
|
|
CurBrd = Item.Get_CompiledPr().ParaPr.Brd;
|
|
while (true != CurBrd.Last) {
|
|
EndPos++;
|
|
if (EndPos >= this.Content.length) {
|
|
EndPos = this.Content.length - 1;
|
|
break;
|
|
}
|
|
var TempItem = this.Content[EndPos];
|
|
if (type_Paragraph != TempItem.GetType()) {
|
|
EndPos--;
|
|
break;
|
|
}
|
|
CurBrd = TempItem.Get_CompiledPr().ParaPr.Brd;
|
|
}
|
|
for (var Index = StartPos; Index <= EndPos; Index++) {
|
|
this.Content[Index].Set_Borders(Borders);
|
|
}
|
|
this.ContentLastChangePos = StartPos - 1;
|
|
this.Recalculate();
|
|
} else {
|
|
if (type_Table == Item.GetType()) {
|
|
Item.Set_ParagraphBorders(Borders);
|
|
}
|
|
}
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
}
|
|
}
|
|
},
|
|
Set_ParagraphFramePr: function (FramePr, bDelete) {
|
|
if (docpostype_HdrFtr === this.CurPos.Type || docpostype_DrawingObjects === this.CurPos.Type) {
|
|
return;
|
|
} else {
|
|
if (true === this.Selection.Use) {
|
|
var StartPos = this.Selection.StartPos;
|
|
var EndPos = this.Selection.EndPos;
|
|
if (StartPos > EndPos) {
|
|
StartPos = this.Selection.EndPos;
|
|
EndPos = this.Selection.StartPos;
|
|
}
|
|
var Element = this.Content[StartPos];
|
|
if (type_Paragraph != Element.GetType() || undefined === Element.Get_FramePr()) {
|
|
return;
|
|
}
|
|
var FramePr = Element.Get_FramePr();
|
|
for (var Pos = StartPos + 1; Pos < EndPos; Pos++) {
|
|
var TempElement = this.Content[Pos];
|
|
if (type_Paragraph != TempElement.GetType() || undefined === TempElement.Get_FramePr() || true != FramePr.Compare(TempElement.Get_FramePr())) {
|
|
return;
|
|
}
|
|
}
|
|
var FrameParas = this.Content[StartPos].Internal_Get_FrameParagraphs();
|
|
var FrameCount = FrameParas.length;
|
|
for (var Pos = 0; Pos < FrameCount; Pos++) {
|
|
FrameParas[Pos].Set_FramePr(FramePr, bDelete);
|
|
}
|
|
} else {
|
|
var Element = this.Content[this.CurPos.ContentPos];
|
|
if (type_Paragraph != Element.GetType()) {
|
|
return;
|
|
}
|
|
if (undefined === Element.Get_FramePr()) {
|
|
var PrevElement = Element.Get_DocumentPrev();
|
|
if (type_Paragraph != PrevElement.GetType() || undefined === PrevElement.Get_FramePr() || undefined === PrevElement.Get_FramePr().DropCap) {
|
|
return;
|
|
}
|
|
Element = PrevElement;
|
|
}
|
|
var FrameParas = Element.Internal_Get_FrameParagraphs();
|
|
var FrameCount = FrameParas.length;
|
|
for (var Pos = 0; Pos < FrameCount; Pos++) {
|
|
FrameParas[Pos].Set_FramePr(FramePr, bDelete);
|
|
}
|
|
}
|
|
}
|
|
this.Recalculate();
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateRulersState();
|
|
this.Document_UpdateInterfaceState();
|
|
},
|
|
Paragraph_IncDecFontSize: function (bIncrease) {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
var bRetValue = this.HdrFtr.Paragraph_IncDecFontSize(bIncrease);
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
return bRetValue;
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
var bRetValue = this.DrawingObjects.paragraphIncDecFontSize(bIncrease);
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
return bRetValue;
|
|
} else {
|
|
if (this.CurPos.ContentPos < 0) {
|
|
return false;
|
|
}
|
|
if (true === this.Selection.Use) {
|
|
switch (this.Selection.Flag) {
|
|
case selectionflag_Common:
|
|
var StartPos = this.Selection.StartPos;
|
|
var EndPos = this.Selection.EndPos;
|
|
if (EndPos < StartPos) {
|
|
var Temp = StartPos;
|
|
StartPos = EndPos;
|
|
EndPos = Temp;
|
|
}
|
|
for (var Index = StartPos; Index <= EndPos; Index++) {
|
|
var Item = this.Content[Index];
|
|
if (type_Paragraph == Item.GetType()) {
|
|
Item.IncDec_FontSize(bIncrease);
|
|
} else {
|
|
if (type_Table == Item.GetType()) {
|
|
Item.TurnOff_RecalcEvent();
|
|
Item.Paragraph_IncDecFontSize(bIncrease);
|
|
Item.TurnOn_RecalcEvent();
|
|
}
|
|
}
|
|
}
|
|
this.ContentLastChangePos = StartPos;
|
|
this.Recalculate();
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
return;
|
|
case selectionflag_Numbering:
|
|
break;
|
|
}
|
|
return;
|
|
}
|
|
var Item = this.Content[this.CurPos.ContentPos];
|
|
if (type_Paragraph == Item.GetType()) {
|
|
if (true === Item.IncDec_FontSize(bIncrease)) {
|
|
this.ContentLastChangePos = this.CurPos.ContentPos;
|
|
this.Recalculate();
|
|
}
|
|
} else {
|
|
if (type_Table == Item.GetType()) {
|
|
Item.Paragraph_IncDecFontSize(bIncrease);
|
|
}
|
|
}
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
}
|
|
}
|
|
},
|
|
Paragraph_IncDecIndent: function (bIncrease) {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
var bRetValue = this.HdrFtr.Paragraph_IncDecIndent(bIncrease);
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
return bRetValue;
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
if (true != this.DrawingObjects.isSelectedText()) {
|
|
var ParaDrawing = this.DrawingObjects.getMajorParaDrawing();
|
|
if (null != ParaDrawing) {
|
|
var Paragraph = ParaDrawing.Parent;
|
|
Paragraph.IncDec_Indent(bIncrease);
|
|
this.Recalculate();
|
|
}
|
|
} else {
|
|
this.DrawingObjects.paragraphIncDecIndent(bIncrease);
|
|
}
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
return;
|
|
} else {
|
|
if (this.CurPos.ContentPos < 0) {
|
|
return false;
|
|
}
|
|
if (true === this.Selection.Use) {
|
|
switch (this.Selection.Flag) {
|
|
case selectionflag_Common:
|
|
var StartPos = this.Selection.StartPos;
|
|
var EndPos = this.Selection.EndPos;
|
|
if (EndPos < StartPos) {
|
|
var Temp = StartPos;
|
|
StartPos = EndPos;
|
|
EndPos = Temp;
|
|
}
|
|
for (var Index = StartPos; Index <= EndPos; Index++) {
|
|
var Item = this.Content[Index];
|
|
if (type_Paragraph == Item.GetType()) {
|
|
Item.IncDec_Indent(bIncrease);
|
|
} else {
|
|
if (type_Table == Item.GetType()) {
|
|
Item.TurnOff_RecalcEvent();
|
|
Item.Paragraph_IncDecIndent(bIncrease);
|
|
Item.TurnOn_RecalcEvent();
|
|
}
|
|
}
|
|
}
|
|
this.ContentLastChangePos = StartPos;
|
|
this.Recalculate();
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
return;
|
|
case selectionflag_Numbering:
|
|
break;
|
|
}
|
|
return;
|
|
}
|
|
var Item = this.Content[this.CurPos.ContentPos];
|
|
if (type_Paragraph == Item.GetType()) {
|
|
Item.IncDec_Indent(bIncrease);
|
|
this.ContentLastChangePos = this.CurPos.ContentPos;
|
|
this.Recalculate();
|
|
} else {
|
|
if (type_Table == Item.GetType()) {
|
|
Item.Paragraph_IncDecIndent(bIncrease);
|
|
}
|
|
}
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
}
|
|
}
|
|
},
|
|
Paragraph_SetHighlight: function (IsColor, r, g, b) {
|
|
if (true === this.Is_TextSelectionUse()) {
|
|
if (false === this.Document_Is_SelectionLocked(changestype_Paragraph_Content)) {
|
|
this.Create_NewHistoryPoint(historydescription_Document_SetTextHighlight);
|
|
if (false === IsColor) {
|
|
this.Paragraph_Add(new ParaTextPr({
|
|
HighLight: highlight_None
|
|
}));
|
|
} else {
|
|
this.Paragraph_Add(new ParaTextPr({
|
|
HighLight: new CDocumentColor(r, g, b)
|
|
}));
|
|
}
|
|
editor.sync_MarkerFormatCallback(false);
|
|
}
|
|
} else {
|
|
if (false === IsColor) {
|
|
this.HighlightColor = highlight_None;
|
|
} else {
|
|
this.HighlightColor = new CDocumentColor(r, g, b);
|
|
}
|
|
}
|
|
},
|
|
Set_ImageProps: function (Props) {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
this.HdrFtr.Set_ImageProps(Props);
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
this.DrawingObjects.setProps(Props);
|
|
} else {
|
|
if (docpostype_Content == this.CurPos.Type && ((true === this.Selection.Use && this.Selection.StartPos == this.Selection.EndPos && type_Table == this.Content[this.Selection.StartPos].GetType()) || (false == this.Selection.Use && type_Table == this.Content[this.CurPos.ContentPos].GetType()))) {
|
|
this.Interface_Update_TablePr();
|
|
if (true == this.Selection.Use) {
|
|
this.Content[this.Selection.StartPos].Set_ImageProps(Props);
|
|
} else {
|
|
this.Content[this.CurPos.ContentPos].Set_ImageProps(Props);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
this.Recalculate();
|
|
this.Document_UpdateInterfaceState();
|
|
},
|
|
ShapeApply: function (shapeProps) {
|
|
this.DrawingObjects.shapeApply(shapeProps);
|
|
},
|
|
Select_Drawings: function (DrawingArray, TargetContent) {
|
|
if (DrawingArray.length === 1 && DrawingArray[0].Is_Inline()) {
|
|
return;
|
|
}
|
|
this.DrawingObjects.resetSelection();
|
|
var hdr_ftr = TargetContent.Is_HdrFtr(true);
|
|
if (hdr_ftr) {
|
|
hdr_ftr.Content.CurPos.Type = docpostype_DrawingObjects;
|
|
hdr_ftr.Set_CurrentElement(false);
|
|
} else {
|
|
this.CurPos.Type = docpostype_DrawingObjects;
|
|
}
|
|
for (var i = 0; i < DrawingArray.length; ++i) {
|
|
this.DrawingObjects.selectObject(DrawingArray[i].GraphicObj, 0);
|
|
}
|
|
},
|
|
Set_TableProps: function (Props) {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
this.HdrFtr.Set_TableProps(Props);
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
this.DrawingObjects.setTableProps(Props);
|
|
} else {
|
|
var Pos = -1;
|
|
if (true === this.Selection.Use && this.Selection.StartPos == this.Selection.EndPos && type_Table == this.Content[this.Selection.StartPos].GetType()) {
|
|
Pos = this.Selection.StartPos;
|
|
} else {
|
|
if (false === this.Selection.Use && type_Table === this.Content[this.CurPos.ContentPos].GetType()) {
|
|
Pos = this.CurPos.ContentPos;
|
|
}
|
|
}
|
|
if (-1 != Pos) {
|
|
var Table = this.Content[Pos];
|
|
Table.Set_Props(Props);
|
|
}
|
|
}
|
|
}
|
|
this.Recalculate();
|
|
this.Document_UpdateInterfaceState();
|
|
this.Document_UpdateRulersState();
|
|
this.Document_UpdateSelectionState();
|
|
},
|
|
Get_Paragraph_ParaPr: function () {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
return this.HdrFtr.Get_Paragraph_ParaPr();
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
return this.DrawingObjects.getParagraphParaPr();
|
|
} else {
|
|
var Result_ParaPr = new CParaPr();
|
|
if (true === this.Selection.Use && selectionflag_Common === this.Selection.Flag) {
|
|
var StartPos = this.Selection.StartPos;
|
|
var EndPos = this.Selection.EndPos;
|
|
if (EndPos < StartPos) {
|
|
var Temp = StartPos;
|
|
StartPos = EndPos;
|
|
EndPos = Temp;
|
|
}
|
|
var StartPr, Pr;
|
|
if (type_Paragraph == this.Content[StartPos].GetType()) {
|
|
StartPr = this.Content[StartPos].Get_CompiledPr2(false).ParaPr;
|
|
Pr = StartPr.Copy();
|
|
Pr.Locked = this.Content[StartPos].Lock.Is_Locked();
|
|
} else {
|
|
if (type_Table == this.Content[StartPos].GetType()) {
|
|
StartPr = this.Content[StartPos].Get_Paragraph_ParaPr();
|
|
Pr = StartPr.Copy();
|
|
Pr.Locked = StartPr.Locked;
|
|
}
|
|
}
|
|
for (var Index = StartPos + 1; Index <= EndPos; Index++) {
|
|
var Item = this.Content[Index];
|
|
var TempPr;
|
|
if (type_Paragraph == Item.GetType()) {
|
|
TempPr = Item.Get_CompiledPr2(false).ParaPr;
|
|
TempPr.Locked = Item.Lock.Is_Locked();
|
|
} else {
|
|
if (type_Table == Item.GetType()) {
|
|
TempPr = Item.Get_Paragraph_ParaPr();
|
|
}
|
|
}
|
|
Pr = Pr.Compare(TempPr);
|
|
}
|
|
if (undefined === Pr.Ind.Left) {
|
|
Pr.Ind.Left = StartPr.Ind.Left;
|
|
}
|
|
if (undefined === Pr.Ind.Right) {
|
|
Pr.Ind.Right = StartPr.Ind.Right;
|
|
}
|
|
if (undefined === Pr.Ind.FirstLine) {
|
|
Pr.Ind.FirstLine = StartPr.Ind.FirstLine;
|
|
}
|
|
Result_ParaPr = Pr;
|
|
Result_ParaPr.CanAddTable = (true === Pr.Locked ? false : true);
|
|
if (undefined != Result_ParaPr.FramePr && type_Paragraph === this.Content[StartPos].GetType()) {
|
|
this.Content[StartPos].Supplement_FramePr(Result_ParaPr.FramePr);
|
|
} else {
|
|
if (StartPos === EndPos && StartPos > 0 && type_Paragraph === this.Content[StartPos - 1].GetType()) {
|
|
var PrevFrame = this.Content[StartPos - 1].Get_FramePr();
|
|
if (undefined != PrevFrame && undefined != PrevFrame.DropCap) {
|
|
Result_ParaPr.FramePr = PrevFrame.Copy();
|
|
this.Content[StartPos - 1].Supplement_FramePr(Result_ParaPr.FramePr);
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
var Item = this.Content[this.CurPos.ContentPos];
|
|
if (type_Paragraph == Item.GetType()) {
|
|
var ParaPr = Item.Get_CompiledPr2(false).ParaPr;
|
|
var Locked = Item.Lock.Is_Locked();
|
|
Result_ParaPr = ParaPr.Copy();
|
|
Result_ParaPr.Locked = Locked;
|
|
Result_ParaPr.CanAddTable = ((true === Locked) ? ((true === Item.Cursor_IsEnd()) ? true : false) : true);
|
|
if (undefined != Result_ParaPr.FramePr) {
|
|
Item.Supplement_FramePr(Result_ParaPr.FramePr);
|
|
} else {
|
|
if (this.CurPos.ContentPos > 0 && type_Paragraph === this.Content[this.CurPos.ContentPos - 1].GetType()) {
|
|
var PrevFrame = this.Content[this.CurPos.ContentPos - 1].Get_FramePr();
|
|
if (undefined != PrevFrame && undefined != PrevFrame.DropCap) {
|
|
Result_ParaPr.FramePr = PrevFrame.Copy();
|
|
this.Content[this.CurPos.ContentPos - 1].Supplement_FramePr(Result_ParaPr.FramePr);
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
if (type_Table == Item.GetType()) {
|
|
Result_ParaPr = Item.Get_Paragraph_ParaPr();
|
|
}
|
|
}
|
|
}
|
|
if (Result_ParaPr.Shd && Result_ParaPr.Shd.Unifill) {
|
|
Result_ParaPr.Shd.Unifill.check(this.theme, this.Get_ColorMap());
|
|
}
|
|
return Result_ParaPr;
|
|
}
|
|
}
|
|
},
|
|
Get_Paragraph_TextPr: function () {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
return this.HdrFtr.Get_Paragraph_TextPr();
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
return this.DrawingObjects.getParagraphTextPr();
|
|
} else {
|
|
var Result_TextPr = null;
|
|
if (true === this.Selection.Use) {
|
|
var VisTextPr;
|
|
switch (this.Selection.Flag) {
|
|
case selectionflag_Common:
|
|
var StartPos = this.Selection.StartPos;
|
|
var EndPos = this.Selection.EndPos;
|
|
if (EndPos < StartPos) {
|
|
var Temp = StartPos;
|
|
StartPos = EndPos;
|
|
EndPos = Temp;
|
|
}
|
|
VisTextPr = this.Content[StartPos].Get_Paragraph_TextPr();
|
|
for (var Index = StartPos + 1; Index <= EndPos; Index++) {
|
|
var CurPr = this.Content[Index].Get_Paragraph_TextPr();
|
|
VisTextPr = VisTextPr.Compare(CurPr);
|
|
}
|
|
break;
|
|
case selectionflag_Numbering:
|
|
if (null == this.Selection.Data || this.Selection.Data.length <= 0) {
|
|
break;
|
|
}
|
|
var CurPara = this.Content[this.Selection.Data[0]];
|
|
for (var Index = 0; Index < this.Selection.Data.length; Index++) {
|
|
if (this.CurPos.ContentPos === this.Selection.Data[Index]) {
|
|
CurPara = this.Content[this.Selection.Data[Index]];
|
|
}
|
|
}
|
|
VisTextPr = CurPara.Internal_Get_NumberingTextPr();
|
|
break;
|
|
}
|
|
Result_TextPr = VisTextPr;
|
|
} else {
|
|
Result_TextPr = this.Content[this.CurPos.ContentPos].Get_Paragraph_TextPr();
|
|
}
|
|
return Result_TextPr;
|
|
}
|
|
}
|
|
},
|
|
Get_Paragraph_TextPr_Copy: function () {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
return this.HdrFtr.Get_Paragraph_TextPr_Copy();
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
return this.DrawingObjects.getParagraphTextPrCopy();
|
|
} else {
|
|
var Result_TextPr = null;
|
|
if (true === this.Selection.Use) {
|
|
var VisTextPr;
|
|
switch (this.Selection.Flag) {
|
|
case selectionflag_Common:
|
|
var StartPos = this.Selection.StartPos;
|
|
if (this.Selection.EndPos < StartPos) {
|
|
StartPos = this.Selection.EndPos;
|
|
}
|
|
var Item = this.Content[StartPos];
|
|
VisTextPr = Item.Get_Paragraph_TextPr_Copy();
|
|
break;
|
|
case selectionflag_Numbering:
|
|
if (null == this.Selection.Data || this.Selection.Data.length <= 0) {
|
|
break;
|
|
}
|
|
var NumPr = this.Content[this.Selection.Data[0]].Numbering_Get();
|
|
VisTextPr = this.Numbering.Get_AbstractNum(NumPr.NumId).Lvl[NumPr.Lvl].TextPr;
|
|
break;
|
|
}
|
|
Result_TextPr = VisTextPr;
|
|
} else {
|
|
var Item = this.Content[this.CurPos.ContentPos];
|
|
Result_TextPr = Item.Get_Paragraph_TextPr_Copy();
|
|
}
|
|
return Result_TextPr;
|
|
}
|
|
}
|
|
},
|
|
Get_Paragraph_ParaPr_Copy: function () {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
return this.HdrFtr.Get_Paragraph_ParaPr_Copy();
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
return this.DrawingObjects.getParagraphParaPrCopy();
|
|
} else {
|
|
var Result_ParaPr = null;
|
|
if (true === this.Selection.Use) {
|
|
switch (this.Selection.Flag) {
|
|
case selectionflag_Common:
|
|
var StartPos = this.Selection.StartPos;
|
|
if (this.Selection.EndPos < StartPos) {
|
|
StartPos = this.Selection.EndPos;
|
|
}
|
|
var Item = this.Content[StartPos];
|
|
Result_ParaPr = Item.Get_Paragraph_ParaPr_Copy();
|
|
break;
|
|
case selectionflag_Numbering:
|
|
if (null == this.Selection.Data || this.Selection.Data.length <= 0) {
|
|
break;
|
|
}
|
|
var NumPr = this.Content[this.Selection.Data[0]].Numbering_Get();
|
|
Result_ParaPr = this.Numbering.Get_AbstractNum(NumPr.NumId).Lvl[NumPr.Lvl].ParaPr;
|
|
break;
|
|
}
|
|
} else {
|
|
var Item = this.Content[this.CurPos.ContentPos];
|
|
Result_ParaPr = Item.Get_Paragraph_ParaPr_Copy();
|
|
}
|
|
return Result_ParaPr;
|
|
}
|
|
}
|
|
},
|
|
Get_AllParagraphs_ByNumbering: function (NumPr) {
|
|
var ParaArray = [];
|
|
this.SectionsInfo.Get_AllParagraphs_ByNumbering(NumPr, ParaArray);
|
|
var Count = this.Content.length;
|
|
for (var Index = 0; Index < Count; Index++) {
|
|
var Element = this.Content[Index];
|
|
Element.Get_AllParagraphs_ByNumbering(NumPr, ParaArray);
|
|
}
|
|
return ParaArray;
|
|
},
|
|
Get_PageSizesByDrawingObjects: function () {
|
|
return this.DrawingObjects.getPageSizesByDrawingObjects();
|
|
},
|
|
Set_DocumentMargin: function (MarPr) {
|
|
var CurPos = this.CurPos.ContentPos;
|
|
var SectPr = this.SectionsInfo.Get_SectPr(CurPos).SectPr;
|
|
var L = MarPr.Left;
|
|
var T = MarPr.Top;
|
|
var R = (undefined === MarPr.Right ? undefined : SectPr.Get_PageWidth() - MarPr.Right);
|
|
var B = (undefined === MarPr.Bottom ? undefined : SectPr.Get_PageHeight() - MarPr.Bottom);
|
|
SectPr.Set_PageMargins(L, T, R, B);
|
|
this.ContentLastChangePos = 0;
|
|
this.Recalculate();
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
this.Document_UpdateRulersState();
|
|
},
|
|
Set_DocumentPageSize: function (W, H, bNoRecalc) {
|
|
var CurPos = this.CurPos.ContentPos;
|
|
var SectPr = this.SectionsInfo.Get_SectPr(CurPos).SectPr;
|
|
SectPr.Set_PageSize(W, H);
|
|
if (true != bNoRecalc) {
|
|
this.ContentLastChangePos = 0;
|
|
this.Recalculate();
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
this.Document_UpdateRulersState();
|
|
}
|
|
},
|
|
Get_DocumentPageSize: function () {
|
|
var CurPos = this.CurPos.ContentPos;
|
|
var SectionInfoElement = this.SectionsInfo.Get_SectPr(CurPos);
|
|
if (undefined === SectionInfoElement) {
|
|
return true;
|
|
}
|
|
var SectPr = SectionInfoElement.SectPr;
|
|
return {
|
|
W: SectPr.Get_PageWidth(),
|
|
H: SectPr.Get_PageHeight()
|
|
};
|
|
},
|
|
Set_DocumentOrientation: function (Orientation, bNoRecalc) {
|
|
var CurPos = this.CurPos.ContentPos;
|
|
var SectPr = this.SectionsInfo.Get_SectPr(CurPos).SectPr;
|
|
SectPr.Set_Orientation(Orientation, true);
|
|
if (true != bNoRecalc) {
|
|
this.Recalculate();
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
this.Document_UpdateRulersState();
|
|
}
|
|
},
|
|
Get_DocumentOrientation: function () {
|
|
var CurPos = this.CurPos.ContentPos;
|
|
var SectionInfoElement = this.SectionsInfo.Get_SectPr(CurPos);
|
|
if (undefined === SectionInfoElement) {
|
|
return true;
|
|
}
|
|
var SectPr = SectionInfoElement.SectPr;
|
|
return (SectPr.Get_Orientation() === orientation_Portrait ? true : false);
|
|
},
|
|
Set_DocumentDefaultTab: function (DTab) {
|
|
this.History.Add(this, {
|
|
Type: historyitem_Document_DefaultTab,
|
|
Old: Default_Tab_Stop,
|
|
New: DTab
|
|
});
|
|
Default_Tab_Stop = DTab;
|
|
},
|
|
Set_DocumentEvenAndOddHeaders: function (Value) {
|
|
if (Value !== EvenAndOddHeaders) {
|
|
this.History.Add(this, {
|
|
Type: historyitem_Document_EvenAndOddHeaders,
|
|
Old: EvenAndOddHeaders,
|
|
New: Value
|
|
});
|
|
EvenAndOddHeaders = Value;
|
|
}
|
|
},
|
|
Interface_Update_ParaPr: function () {
|
|
var ParaPr = this.Get_Paragraph_ParaPr();
|
|
if (null != ParaPr) {
|
|
ParaPr.CanAddDropCap = false;
|
|
if (docpostype_Content === this.CurPos.Type) {
|
|
var Para = null;
|
|
if (false === this.Selection.Use && type_Paragraph === this.Content[this.CurPos.ContentPos].GetType()) {
|
|
Para = this.Content[this.CurPos.ContentPos];
|
|
} else {
|
|
if (true === this.Selection.Use && this.Selection.StartPos <= this.Selection.EndPos && type_Paragraph === this.Content[this.Selection.StartPos].GetType()) {
|
|
Para = this.Content[this.Selection.StartPos];
|
|
} else {
|
|
if (true === this.Selection.Use && this.Selection.StartPos > this.Selection.EndPos && type_Paragraph === this.Content[this.Selection.EndPos].GetType()) {
|
|
Para = this.Content[this.Selection.EndPos];
|
|
}
|
|
}
|
|
}
|
|
if (null != Para && undefined === Para.Get_FramePr()) {
|
|
var Prev = Para.Get_DocumentPrev();
|
|
if ((null === Prev || type_Paragraph != Prev.GetType() || undefined === Prev.Get_FramePr() || undefined === Prev.Get_FramePr().DropCap) && true === Para.Can_AddDropCap()) {
|
|
ParaPr.CanAddDropCap = true;
|
|
}
|
|
}
|
|
}
|
|
var oSelectedInfo = this.Get_SelectedElementsInfo();
|
|
var Math = oSelectedInfo.Get_Math();
|
|
if (null !== Math) {
|
|
ParaPr.CanAddImage = false;
|
|
} else {
|
|
ParaPr.CanAddImage = true;
|
|
}
|
|
if (undefined != ParaPr.Tabs) {
|
|
editor.Update_ParaTab(Default_Tab_Stop, ParaPr.Tabs);
|
|
}
|
|
if (ParaPr.Shd && ParaPr.Shd.Unifill) {
|
|
ParaPr.Shd.Unifill.check(this.theme, this.Get_ColorMap());
|
|
}
|
|
var SelectedInfo = this.Get_SelectedElementsInfo();
|
|
var Math = SelectedInfo.Get_Math();
|
|
if (null !== Math && true !== Math.Is_Inline()) {
|
|
ParaPr.Jc = Math.Get_Align();
|
|
}
|
|
editor.UpdateParagraphProp(ParaPr);
|
|
}
|
|
},
|
|
Interface_Update_TextPr: function () {
|
|
var TextPr = this.Get_Paragraph_TextPr();
|
|
if (null != TextPr) {
|
|
var theme = this.Get_Theme();
|
|
if (theme && theme.themeElements && theme.themeElements.fontScheme) {
|
|
if (TextPr.FontFamily) {
|
|
TextPr.FontFamily.Name = theme.themeElements.fontScheme.checkFont(TextPr.FontFamily.Name);
|
|
}
|
|
if (TextPr.RFonts) {
|
|
if (TextPr.RFonts.Ascii) {
|
|
TextPr.RFonts.Ascii.Name = theme.themeElements.fontScheme.checkFont(TextPr.RFonts.Ascii.Name);
|
|
}
|
|
if (TextPr.RFonts.EastAsia) {
|
|
TextPr.RFonts.EastAsia.Name = theme.themeElements.fontScheme.checkFont(TextPr.RFonts.EastAsia.Name);
|
|
}
|
|
if (TextPr.RFonts.HAnsi) {
|
|
TextPr.RFonts.HAnsi.Name = theme.themeElements.fontScheme.checkFont(TextPr.RFonts.HAnsi.Name);
|
|
}
|
|
if (TextPr.RFonts.CS) {
|
|
TextPr.RFonts.CS.Name = theme.themeElements.fontScheme.checkFont(TextPr.RFonts.CS.Name);
|
|
}
|
|
}
|
|
}
|
|
if (TextPr.Unifill) {
|
|
var RGBAColor = TextPr.Unifill.getRGBAColor();
|
|
TextPr.Color = new CDocumentColor(RGBAColor.R, RGBAColor.G, RGBAColor.B, false);
|
|
}
|
|
if (TextPr.Shd && TextPr.Shd.Unifill) {
|
|
TextPr.Shd.Unifill.check(this.theme, this.Get_ColorMap());
|
|
}
|
|
editor.UpdateTextPr(TextPr);
|
|
}
|
|
},
|
|
Interface_Update_DrawingPr: function (Flag) {
|
|
var DrawingPr = this.DrawingObjects.Get_Props();
|
|
if (true === Flag) {
|
|
return DrawingPr;
|
|
} else {
|
|
for (var i = 0; i < DrawingPr.length; ++i) {
|
|
editor.sync_ImgPropCallback(DrawingPr[i]);
|
|
}
|
|
}
|
|
if (Flag) {
|
|
return null;
|
|
}
|
|
},
|
|
Interface_Update_TablePr: function (Flag) {
|
|
var TablePr = null;
|
|
if (docpostype_Content == this.CurPos.Type && ((true === this.Selection.Use && this.Selection.StartPos == this.Selection.EndPos && type_Table == this.Content[this.Selection.StartPos].GetType()) || (false == this.Selection.Use && type_Table == this.Content[this.CurPos.ContentPos].GetType()))) {
|
|
if (true == this.Selection.Use) {
|
|
TablePr = this.Content[this.Selection.StartPos].Get_Props();
|
|
} else {
|
|
TablePr = this.Content[this.CurPos.ContentPos].Get_Props();
|
|
}
|
|
}
|
|
TablePr.CanBeFlow = true;
|
|
if (true === Flag) {
|
|
return TablePr;
|
|
} else {
|
|
if (null != TablePr) {
|
|
editor.sync_TblPropCallback(TablePr);
|
|
}
|
|
}
|
|
},
|
|
Interface_Update_HdrFtrPr: function () {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
editor.sync_HeadersAndFootersPropCallback(this.HdrFtr.Get_Props());
|
|
}
|
|
},
|
|
Internal_GetContentPosByXY: function (X, Y, PageNum) {
|
|
if ("undefined" === typeof(PageNum)) {
|
|
PageNum = this.CurPage;
|
|
}
|
|
var FlowTable = this.DrawingObjects.getTableByXY(X, Y, PageNum, this);
|
|
if (null != FlowTable) {
|
|
if (flowobject_Table === FlowTable.Get_Type()) {
|
|
return FlowTable.Table.Index;
|
|
} else {
|
|
var Frame = FlowTable;
|
|
var StartPos = Frame.StartIndex;
|
|
var FlowCount = Frame.FlowCount;
|
|
for (var Pos = StartPos; Pos < StartPos + FlowCount; Pos++) {
|
|
var Item = this.Content[Pos];
|
|
if (Y < Item.Pages[0].Bounds.Bottom) {
|
|
return Pos;
|
|
}
|
|
}
|
|
return StartPos + FlowCount - 1;
|
|
}
|
|
}
|
|
var SectCount = this.Pages[PageNum].EndSectionParas.length;
|
|
for (var Index = 0; Index < SectCount; Index++) {
|
|
var Item = this.Pages[PageNum].EndSectionParas[Index];
|
|
var Bounds = Item.Pages[0].Bounds;
|
|
if (Y < Bounds.Bottom && Y > Bounds.Top && X > Bounds.Left && X < Bounds.Right) {
|
|
return Item.Index;
|
|
}
|
|
}
|
|
var StartPos = this.Pages[PageNum].Pos;
|
|
var EndPos = Math.min(this.Pages[PageNum].EndPos, this.Content.length - 1);
|
|
var InlineElements = [];
|
|
for (var Index = StartPos; Index <= EndPos; Index++) {
|
|
var Item = this.Content[Index];
|
|
var PrevItem = Item.Get_DocumentPrev();
|
|
var bEmptySectPara = (type_Paragraph === Item.GetType() && undefined !== Item.Get_SectionPr() && true === Item.IsEmpty() && null !== PrevItem && (type_Table === PrevItem.GetType() || undefined === PrevItem.Get_SectionPr())) ? true : false;
|
|
if (false != Item.Is_Inline() && (type_Table === Item.GetType() || false === bEmptySectPara)) {
|
|
InlineElements.push(Index);
|
|
}
|
|
}
|
|
var Count = InlineElements.length;
|
|
if (Count <= 0) {
|
|
return StartPos;
|
|
}
|
|
for (var Pos = 0; Pos < Count - 1; Pos++) {
|
|
var Item = this.Content[InlineElements[Pos + 1]];
|
|
if (Y < Item.Pages[0].Bounds.Top) {
|
|
return InlineElements[Pos];
|
|
}
|
|
if (Item.Pages.length > 1) {
|
|
if ((type_Paragraph === Item.GetType() && Item.Pages[0].FirstLine != Item.Pages[1].FirstLine) || (type_Table === Item.GetType() && true === Item.RowsInfo[0].FirstPage)) {
|
|
return InlineElements[Pos + 1];
|
|
}
|
|
return InlineElements[Pos];
|
|
}
|
|
if (Pos === Count - 2) {
|
|
return InlineElements[Count - 1];
|
|
}
|
|
}
|
|
return InlineElements[0];
|
|
},
|
|
Selection_Remove: function () {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
return this.HdrFtr.Selection_Remove();
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
var ParaDrawing = this.DrawingObjects.getMajorParaDrawing();
|
|
if (ParaDrawing) {
|
|
ParaDrawing.GoTo_Text(undefined, false);
|
|
}
|
|
return this.DrawingObjects.resetSelection();
|
|
} else {
|
|
if (docpostype_Content === this.CurPos.Type) {
|
|
if (true === this.Selection.Use) {
|
|
switch (this.Selection.Flag) {
|
|
case selectionflag_Common:
|
|
var Start = this.Selection.StartPos;
|
|
var End = this.Selection.EndPos;
|
|
if (Start > End) {
|
|
var Temp = Start;
|
|
Start = End;
|
|
End = Temp;
|
|
}
|
|
Start = Math.max(0, Start);
|
|
End = Math.min(this.Content.length - 1, End);
|
|
for (var Index = Start; Index <= End; Index++) {
|
|
this.Content[Index].Selection_Remove();
|
|
}
|
|
this.Selection.Use = false;
|
|
this.Selection.Start = false;
|
|
this.Selection.StartPos = 0;
|
|
this.Selection.EndPos = 0;
|
|
this.DrawingDocument.SelectEnabled(false);
|
|
this.DrawingDocument.TargetStart();
|
|
this.DrawingDocument.TargetShow();
|
|
break;
|
|
case selectionflag_Numbering:
|
|
if (null == this.Selection.Data) {
|
|
break;
|
|
}
|
|
for (var Index = 0; Index < this.Selection.Data.length; Index++) {
|
|
this.Content[this.Selection.Data[Index]].Selection_Remove();
|
|
}
|
|
this.Selection.Use = false;
|
|
this.Selection.Start = false;
|
|
this.Selection.Flag = selectionflag_Common;
|
|
this.DrawingDocument.SelectEnabled(false);
|
|
this.DrawingDocument.TargetStart();
|
|
this.DrawingDocument.TargetShow();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
Selection_IsEmpty: function (bCheckHidden) {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
return this.HdrFtr.Selection_IsEmpty(bCheckHidden);
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
return false;
|
|
} else {
|
|
if (true === this.Selection.Use) {
|
|
if (selectionflag_Numbering == this.Selection.Flag) {
|
|
return false;
|
|
} else {
|
|
if (true === this.Selection_Is_TableBorderMove()) {
|
|
return false;
|
|
} else {
|
|
if (this.Selection.StartPos === this.Selection.EndPos) {
|
|
return this.Content[this.Selection.StartPos].Selection_IsEmpty(bCheckHidden);
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
}
|
|
},
|
|
Selection_Draw_Page: function (Page_abs) {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
this.HdrFtr.Selection_Draw_Page(Page_abs);
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
this.DrawingObjects.drawSelectionPage(Page_abs);
|
|
} else {
|
|
var Pos_start = this.Pages[Page_abs].Pos;
|
|
var Pos_end = this.Pages[Page_abs].EndPos;
|
|
if (true === this.Selection.Use) {
|
|
switch (this.Selection.Flag) {
|
|
case selectionflag_Common:
|
|
var Start = this.Selection.StartPos;
|
|
var End = this.Selection.EndPos;
|
|
if (Start > End) {
|
|
Start = this.Selection.EndPos;
|
|
End = this.Selection.StartPos;
|
|
}
|
|
var Start = Math.max(Start, Pos_start);
|
|
var End = Math.min(End, Pos_end);
|
|
for (var Index = Start; Index <= End; Index++) {
|
|
this.Content[Index].Selection_Draw_Page(Page_abs);
|
|
}
|
|
if (Page_abs >= 2 && End < this.Pages[Page_abs - 2].EndPos) {
|
|
this.Selection.UpdateOnRecalc = false;
|
|
this.DrawingDocument.OnSelectEnd();
|
|
}
|
|
break;
|
|
case selectionflag_Numbering:
|
|
if (null == this.Selection.Data) {
|
|
break;
|
|
}
|
|
var Count = this.Selection.Data.length;
|
|
for (var Index = 0; Index < Count; Index++) {
|
|
if (this.Selection.Data[Index] <= Pos_end && this.Selection.Data[Index] >= Pos_start) {
|
|
this.Content[this.Selection.Data[Index]].Selection_Draw_Page(Page_abs);
|
|
}
|
|
}
|
|
if (Page_abs >= 2 && this.Selection.Data[this.Selection.Data.length - 1] < this.Pages[Page_abs - 2].EndPos) {
|
|
this.Selection.UpdateOnRecalc = false;
|
|
this.DrawingDocument.OnSelectEnd();
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
Get_SelectionBounds: function () {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
return this.HdrFtr.CurHdrFtr.Content.Get_SelectionBounds();
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
return this.DrawingObjects.Get_SelectionBounds();
|
|
} else {
|
|
if (true === this.Selection.Use && selectionflag_Common === this.Selection.Flag) {
|
|
var Start = this.Selection.StartPos;
|
|
var End = this.Selection.EndPos;
|
|
if (Start > End) {
|
|
Start = this.Selection.EndPos;
|
|
End = this.Selection.StartPos;
|
|
}
|
|
if (Start === End) {
|
|
return this.Content[Start].Get_SelectionBounds();
|
|
} else {
|
|
var Result = {};
|
|
Result.Start = this.Content[Start].Get_SelectionBounds().Start;
|
|
Result.End = this.Content[End].Get_SelectionBounds().End;
|
|
Result.Direction = (this.Selection.StartPos > this.Selection.EndPos ? -1 : 1);
|
|
return Result;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return null;
|
|
},
|
|
Selection_Clear: function () {
|
|
if (true === this.Selection.Use) {
|
|
switch (this.Selection.Flag) {
|
|
case selectionflag_Common:
|
|
var Start = this.Selection.StartPos;
|
|
var End = this.Selection.EndPos;
|
|
if (Start > End) {
|
|
var Temp = Start;
|
|
Start = End;
|
|
End = Temp;
|
|
}
|
|
for (var Index = Start; Index <= End; Index++) {
|
|
this.Content[Index].Selection_Clear();
|
|
}
|
|
break;
|
|
case selectionflag_Numbering:
|
|
if (null == this.Selection.Data) {
|
|
break;
|
|
}
|
|
for (var Index = 0; Index < this.Selection.Data.length; Index++) {
|
|
this.Content[this.Selection.Data[Index]].Selection_Clear();
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
this.DrawingDocument.SelectClear();
|
|
},
|
|
Selection_SetStart: function (X, Y, MouseEvent) {
|
|
var bInText = (null === this.Is_InText(X, Y, this.CurPage) ? false : true);
|
|
var bTableBorder = (null === this.Is_TableBorder(X, Y, this.CurPage) ? false : true);
|
|
var nInDrawing = this.DrawingObjects.isPointInDrawingObjects(X, Y, this.CurPage, this);
|
|
var bFlowTable = (null === this.DrawingObjects.getTableByXY(X, Y, this.CurPage, this) ? false : true);
|
|
if (-1 !== this.Selection.DragDrop.Flag && MouseEvent.ClickCount <= 1 && false === bTableBorder && (nInDrawing < 0 || (nInDrawing === DRAWING_ARRAY_TYPE_BEHIND && true === bInText) || (nInDrawing > -1 && (docpostype_DrawingObjects === this.CurPos.Type || (docpostype_HdrFtr === this.CurPos.Type && docpostype_DrawingObjects === this.HdrFtr.CurHdrFtr.Content.CurPos.Type)) && true === this.DrawingObjects.isSelectedText() && null !== this.DrawingObjects.getMajorParaDrawing() && this.DrawingObjects.getGraphicInfoUnderCursor(this.CurPage, X, Y).cursorType === "text")) && true === this.Selection_Check(X, Y, this.CurPage, undefined)) {
|
|
this.Selection.DragDrop.Flag = 1;
|
|
this.Selection.DragDrop.Data = {
|
|
X: X,
|
|
Y: Y,
|
|
PageNum: this.CurPage
|
|
};
|
|
return;
|
|
}
|
|
var bCheckHdrFtr = true;
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
bCheckHdrFtr = false;
|
|
this.Selection.Start = true;
|
|
this.Selection.Use = true;
|
|
if (false != this.HdrFtr.Selection_SetStart(X, Y, this.CurPage, MouseEvent, false)) {
|
|
return;
|
|
}
|
|
this.Selection.Start = false;
|
|
this.Selection.Use = false;
|
|
this.DrawingDocument.ClearCachePages();
|
|
this.DrawingDocument.FirePaint();
|
|
this.DrawingDocument.EndTrackTable(null, true);
|
|
}
|
|
var PageMetrics = this.Get_PageContentStartPos(this.CurPage, this.Pages[this.CurPage].Pos);
|
|
if (true != bFlowTable && nInDrawing < 0 && true === bCheckHdrFtr && MouseEvent.ClickCount >= 2 && (Y <= PageMetrics.Y || Y > PageMetrics.YLimit)) {
|
|
if (true === this.Selection.Use) {
|
|
this.Selection_Remove();
|
|
}
|
|
this.CurPos.Type = docpostype_HdrFtr;
|
|
MouseEvent.ClickCount = 1;
|
|
this.HdrFtr.Selection_SetStart(X, Y, this.CurPage, MouseEvent, true);
|
|
this.Interface_Update_HdrFtrPr();
|
|
this.DrawingDocument.ClearCachePages();
|
|
this.DrawingDocument.FirePaint();
|
|
this.DrawingDocument.EndTrackTable(null, true);
|
|
} else {
|
|
if (nInDrawing === DRAWING_ARRAY_TYPE_BEFORE || nInDrawing === DRAWING_ARRAY_TYPE_INLINE || (false === bTableBorder && false === bInText && nInDrawing >= 0)) {
|
|
if (docpostype_DrawingObjects != this.CurPos.Type) {
|
|
this.Selection_Remove();
|
|
}
|
|
this.DrawingDocument.TargetEnd();
|
|
this.DrawingDocument.SetCurrentPage(this.CurPage);
|
|
this.Selection.Use = true;
|
|
this.Selection.Start = true;
|
|
this.Selection.Flag = selectionflag_Common;
|
|
this.CurPos.Type = docpostype_DrawingObjects;
|
|
this.DrawingObjects.OnMouseDown(MouseEvent, X, Y, this.CurPage);
|
|
} else {
|
|
var bOldSelectionIsCommon = true;
|
|
if (docpostype_DrawingObjects === this.CurPos.Type && true != this.Is_InDrawing(X, Y, this.CurPage)) {
|
|
this.DrawingObjects.resetSelection();
|
|
bOldSelectionIsCommon = false;
|
|
}
|
|
var ContentPos = this.Internal_GetContentPosByXY(X, Y);
|
|
if (docpostype_Content != this.CurPos.Type) {
|
|
this.CurPos.Type = docpostype_Content;
|
|
this.CurPos.ContentPos = ContentPos;
|
|
bOldSelectionIsCommon = false;
|
|
}
|
|
var SelectionUse_old = this.Selection.Use;
|
|
var Item = this.Content[ContentPos];
|
|
var bTableBorder = false;
|
|
if (type_Table == Item.GetType()) {
|
|
bTableBorder = (null === Item.Is_TableBorder(X, Y, this.CurPage) ? false : true);
|
|
}
|
|
if (! (true === SelectionUse_old && true === MouseEvent.ShiftKey && true === bOldSelectionIsCommon)) {
|
|
if ((selectionflag_Common != this.Selection.Flag) || (true === this.Selection.Use && MouseEvent.ClickCount <= 1 && true != bTableBorder)) {
|
|
this.Selection_Remove();
|
|
}
|
|
}
|
|
this.Selection.Use = true;
|
|
this.Selection.Start = true;
|
|
this.Selection.Flag = selectionflag_Common;
|
|
if (true === SelectionUse_old && true === MouseEvent.ShiftKey && true === bOldSelectionIsCommon) {
|
|
this.Selection_SetEnd(X, Y, {
|
|
Type: g_mouse_event_type_up,
|
|
ClickCount: 1
|
|
});
|
|
this.Selection.Use = true;
|
|
this.Selection.Start = true;
|
|
this.Selection.EndPos = ContentPos;
|
|
this.Selection.Data = null;
|
|
} else {
|
|
Item.Selection_SetStart(X, Y, this.CurPage, MouseEvent, bTableBorder);
|
|
Item.Selection_SetEnd(X, Y, this.CurPage, {
|
|
Type: g_mouse_event_type_move,
|
|
ClickCount: 1
|
|
},
|
|
bTableBorder);
|
|
if (! (type_Table == Item.GetType() && true == bTableBorder)) {
|
|
this.Selection.Use = true;
|
|
this.Selection.StartPos = ContentPos;
|
|
this.Selection.EndPos = ContentPos;
|
|
this.Selection.Data = null;
|
|
this.CurPos.ContentPos = ContentPos;
|
|
if (type_Paragraph === Item.GetType() && true === MouseEvent.CtrlKey) {
|
|
var Hyperlink = Item.Check_Hyperlink(X, Y, this.CurPage);
|
|
if (null != Hyperlink) {
|
|
this.Selection.Data = {
|
|
Hyperlink: true,
|
|
Value: Hyperlink
|
|
};
|
|
}
|
|
}
|
|
} else {
|
|
this.Selection.Data = {
|
|
TableBorder: true,
|
|
Pos: ContentPos,
|
|
Selection: SelectionUse_old
|
|
};
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
Selection_SetEnd: function (X, Y, MouseEvent) {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
this.HdrFtr.Selection_SetEnd(X, Y, this.CurPage, MouseEvent);
|
|
if (g_mouse_event_type_up == MouseEvent.Type) {
|
|
if (true != this.DrawingObjects.isPolylineAddition()) {
|
|
this.Selection.Start = false;
|
|
} else {
|
|
this.Selection.Start = true;
|
|
}
|
|
}
|
|
return;
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
if (g_mouse_event_type_up == MouseEvent.Type) {
|
|
this.DrawingObjects.OnMouseUp(MouseEvent, X, Y, this.CurPage);
|
|
if (true != this.DrawingObjects.isPolylineAddition()) {
|
|
this.Selection.Start = false;
|
|
this.Selection.Use = true;
|
|
} else {
|
|
this.Selection.Start = true;
|
|
this.Selection.Use = true;
|
|
}
|
|
} else {
|
|
this.DrawingObjects.OnMouseMove(MouseEvent, X, Y, this.CurPage);
|
|
}
|
|
return;
|
|
}
|
|
}
|
|
if (true === this.Selection_Is_TableBorderMove()) {
|
|
var Item = this.Content[this.Selection.Data.Pos];
|
|
Item.Selection_SetEnd(X, Y, this.CurPage, MouseEvent, true);
|
|
if (g_mouse_event_type_up == MouseEvent.Type) {
|
|
this.Selection.Start = false;
|
|
if (true != this.Selection.Data.Selection) {
|
|
this.Selection.Use = false;
|
|
}
|
|
this.Selection.Data = null;
|
|
}
|
|
return;
|
|
}
|
|
if (false === this.Selection.Use) {
|
|
return;
|
|
}
|
|
var ContentPos = this.Internal_GetContentPosByXY(X, Y);
|
|
var OldPos = this.CurPos.ContentPos;
|
|
var OldInnerPos = null;
|
|
if (type_Paragraph === this.Content[OldPos].GetType()) {
|
|
OldInnerPos = this.Content[OldPos].CurPos.ContentPos;
|
|
} else {
|
|
OldInnerPos = this.Content[OldPos].CurCell;
|
|
}
|
|
this.CurPos.ContentPos = ContentPos;
|
|
var OldEndPos = this.Selection.EndPos;
|
|
this.Selection.EndPos = ContentPos;
|
|
if (OldEndPos < this.Selection.StartPos && OldEndPos < this.Selection.EndPos) {
|
|
var TempLimit = Math.min(this.Selection.StartPos, this.Selection.EndPos);
|
|
for (var Index = OldEndPos; Index < TempLimit; Index++) {
|
|
this.Content[Index].Selection.Use = false;
|
|
this.Content[Index].Selection.Start = false;
|
|
}
|
|
} else {
|
|
if (OldEndPos > this.Selection.StartPos && OldEndPos > this.Selection.EndPos) {
|
|
var TempLimit = Math.max(this.Selection.StartPos, this.Selection.EndPos);
|
|
for (var Index = TempLimit + 1; Index <= OldEndPos; Index++) {
|
|
this.Content[Index].Selection.Use = false;
|
|
this.Content[Index].Selection.Start = false;
|
|
}
|
|
}
|
|
}
|
|
var Direction = (ContentPos > this.Selection.StartPos ? 1 : (ContentPos < this.Selection.StartPos ? -1 : 0));
|
|
if (g_mouse_event_type_up == MouseEvent.Type) {
|
|
this.Selection.Start = false;
|
|
if (0 != Direction) {
|
|
this.Content[this.Selection.StartPos].Selection_Stop(X, Y, this.CurPage, MouseEvent);
|
|
}
|
|
}
|
|
var Start, End;
|
|
if (0 == Direction) {
|
|
var Item = this.Content[this.Selection.StartPos];
|
|
var ItemType = Item.GetType();
|
|
Item.Selection_SetEnd(X, Y, this.CurPage, MouseEvent);
|
|
if (false === Item.Selection.Use) {
|
|
this.Selection.Use = false;
|
|
if (null != this.Selection.Data && true === this.Selection.Data.Hyperlink) {
|
|
editor.sync_HyperlinkClickCallback(this.Selection.Data.Value.Get_Value());
|
|
this.Selection.Data.Value.Set_Visited(true);
|
|
for (var PageIdx = Item.Get_StartPage_Absolute(); PageIdx < Item.Get_StartPage_Absolute() + Item.Pages.length; PageIdx++) {
|
|
this.DrawingDocument.OnRecalculatePage(PageIdx, this.Pages[PageIdx]);
|
|
}
|
|
this.DrawingDocument.OnEndRecalculate(false, true);
|
|
}
|
|
} else {
|
|
this.Selection.Use = true;
|
|
}
|
|
return;
|
|
} else {
|
|
if (Direction > 0) {
|
|
Start = this.Selection.StartPos;
|
|
End = this.Selection.EndPos;
|
|
} else {
|
|
End = this.Selection.StartPos;
|
|
Start = this.Selection.EndPos;
|
|
}
|
|
}
|
|
for (var Index = Start; Index <= End; Index++) {
|
|
var Item = this.Content[Index];
|
|
Item.Selection.Use = true;
|
|
var ItemType = Item.GetType();
|
|
switch (Index) {
|
|
case Start:
|
|
if (type_Paragraph === ItemType) {
|
|
Item.Selection_SetBegEnd((Direction > 0 ? false : true), false);
|
|
} else {
|
|
var Row = Item.Content.length - 1;
|
|
var Cell = Item.Content[Row].Get_CellsCount() - 1;
|
|
var Pos = {
|
|
Row: Row,
|
|
Cell: Cell
|
|
};
|
|
if (Direction > 0) {
|
|
Item.Selection.EndPos.Pos = Pos;
|
|
} else {
|
|
Item.Selection.StartPos.Pos = Pos;
|
|
}
|
|
Item.Internal_Selection_UpdateCells();
|
|
}
|
|
break;
|
|
case End:
|
|
if (type_Paragraph === ItemType) {
|
|
Item.Selection_SetBegEnd((Direction > 0 ? true : false), true);
|
|
} else {
|
|
var Pos = {
|
|
Row: 0,
|
|
Cell: 0
|
|
};
|
|
if (Direction > 0) {
|
|
Item.Selection.StartPos.Pos = Pos;
|
|
} else {
|
|
Item.Selection.EndPos.Pos = Pos;
|
|
}
|
|
Item.Internal_Selection_UpdateCells();
|
|
}
|
|
break;
|
|
default:
|
|
if (type_Paragraph === ItemType) {
|
|
Item.Select_All(Direction);
|
|
} else {
|
|
var Row = Item.Content.length - 1;
|
|
var Cell = Item.Content[Row].Get_CellsCount() - 1;
|
|
var Pos0 = {
|
|
Row: 0,
|
|
Cell: 0
|
|
};
|
|
var Pos1 = {
|
|
Row: Row,
|
|
Cell: Cell
|
|
};
|
|
if (Direction > 0) {
|
|
Item.Selection.StartPos.Pos = Pos0;
|
|
Item.Selection.EndPos.Pos = Pos1;
|
|
} else {
|
|
Item.Selection.EndPos.Pos = Pos0;
|
|
Item.Selection.StartPos.Pos = Pos1;
|
|
}
|
|
Item.Internal_Selection_UpdateCells();
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
this.Content[ContentPos].Selection_SetEnd(X, Y, this.CurPage, MouseEvent);
|
|
if (true === this.Content[End].Selection_IsEmpty() && true === this.CheckEmptyElementsOnSelection) {
|
|
this.Content[End].Selection_Remove();
|
|
End--;
|
|
}
|
|
if (Start != End && true === this.Content[Start].Selection_IsEmpty() && true === this.CheckEmptyElementsOnSelection) {
|
|
this.Content[Start].Selection_Remove();
|
|
Start++;
|
|
}
|
|
if (Direction > 0) {
|
|
this.Selection.StartPos = Start;
|
|
this.Selection.EndPos = End;
|
|
} else {
|
|
this.Selection.StartPos = End;
|
|
this.Selection.EndPos = Start;
|
|
}
|
|
},
|
|
Selection_Is_OneElement: function () {
|
|
if (true === this.Selection.Use && this.CurPos.Type === docpostype_Content && this.Selection.Flag === selectionflag_Common && this.Selection.StartPos === this.Selection.EndPos) {
|
|
return 0;
|
|
}
|
|
return (this.Selection.StartPos < this.Selection.EndPos ? 1 : -1);
|
|
},
|
|
Selection_Is_TableBorderMove: function () {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
return this.HdrFtr.Selection_Is_TableBorderMove();
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
return this.DrawingObjects.selectionIsTableBorder();
|
|
} else {
|
|
if (null != this.Selection.Data && true === this.Selection.Data.TableBorder && type_Table == this.Content[this.Selection.Data.Pos].GetType()) {
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
return false;
|
|
},
|
|
Selection_Check: function (X, Y, Page_Abs, NearPos) {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
return this.HdrFtr.Selection_Check(X, Y, Page_Abs, NearPos);
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
return this.DrawingObjects.selectionCheck(X, Y, Page_Abs, NearPos);
|
|
} else {
|
|
if (true === this.Selection.Use) {
|
|
switch (this.Selection.Flag) {
|
|
case selectionflag_Common:
|
|
var Start = this.Selection.StartPos;
|
|
var End = this.Selection.EndPos;
|
|
if (Start > End) {
|
|
Start = this.Selection.EndPos;
|
|
End = this.Selection.StartPos;
|
|
}
|
|
if (undefined !== NearPos) {
|
|
for (var Index = Start; Index <= End; Index++) {
|
|
if (true === this.Content[Index].Selection_Check(0, 0, 0, NearPos)) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
} else {
|
|
var ContentPos = this.Internal_GetContentPosByXY(X, Y, Page_Abs, NearPos);
|
|
if (ContentPos > Start && ContentPos < End) {
|
|
return true;
|
|
} else {
|
|
if (ContentPos < Start || ContentPos > End) {
|
|
return false;
|
|
} else {
|
|
return this.Content[ContentPos].Selection_Check(X, Y, Page_Abs, undefined);
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
case selectionflag_Numbering:
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
}
|
|
},
|
|
Select_All: function () {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
this.HdrFtr.Select_All();
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type && true === this.DrawingObjects.isSelectedText()) {
|
|
this.DrawingObjects.selectAll();
|
|
} else {
|
|
if (true === this.Selection.Use) {
|
|
this.Selection_Remove();
|
|
}
|
|
this.DrawingDocument.SelectEnabled(true);
|
|
this.DrawingDocument.TargetEnd();
|
|
this.CurPos.Type = docpostype_Content;
|
|
this.Selection.Use = true;
|
|
this.Selection.Start = false;
|
|
this.Selection.Flag = selectionflag_Common;
|
|
this.Selection.StartPos = 0;
|
|
this.Selection.EndPos = this.Content.length - 1;
|
|
for (var Index = 0; Index < this.Content.length; Index++) {
|
|
this.Content[Index].Select_All();
|
|
}
|
|
}
|
|
}
|
|
this.Selection.Start = true;
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
this.Document_UpdateRulersState();
|
|
this.Selection.Start = false;
|
|
this.Document_UpdateCopyCutState();
|
|
},
|
|
On_DragTextEnd: function (NearPos, bCopy) {
|
|
if (true === this.Comments.Is_Use()) {
|
|
this.Select_Comment(null, false);
|
|
editor.sync_HideComment();
|
|
}
|
|
if (true === this.Selection_Check(0, 0, 0, NearPos)) {
|
|
this.Selection_Remove();
|
|
var Paragraph = NearPos.Paragraph;
|
|
Paragraph.Cursor_MoveToNearPos(NearPos);
|
|
Paragraph.Document_SetThisElementCurrent(false);
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
this.Document_UpdateRulersState();
|
|
} else {
|
|
History.Create_NewPoint(historydescription_Document_DragText);
|
|
NearPos.Paragraph.Check_NearestPos(NearPos);
|
|
var DocContent = this.Get_SelectedContent(true);
|
|
if (false === this.Can_InsertContent(DocContent, NearPos)) {
|
|
History.Remove_LastPoint();
|
|
return;
|
|
}
|
|
var Para = NearPos.Paragraph;
|
|
var CheckChangesType = (true !== bCopy ? changestype_Document_Content : changestype_None);
|
|
if (false === this.Document_Is_SelectionLocked(CheckChangesType, {
|
|
Type: changestype_2_ElementsArray_and_Type,
|
|
Elements: [Para],
|
|
CheckType: changestype_Paragraph_Content
|
|
})) {
|
|
if (true !== bCopy) {
|
|
this.TurnOff_Recalculate();
|
|
this.TurnOff_InterfaceEvents();
|
|
this.Remove(1, false, false, false);
|
|
this.TurnOn_Recalculate(false);
|
|
this.TurnOn_InterfaceEvents(false);
|
|
if (false === Para.Is_UseInDocument()) {
|
|
this.Document_Undo();
|
|
History.Clear_Redo();
|
|
return;
|
|
}
|
|
}
|
|
this.Selection_Remove();
|
|
Para.Parent.Insert_Content(DocContent, NearPos);
|
|
this.Recalculate();
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
this.Document_UpdateRulersState();
|
|
} else {
|
|
History.Remove_LastPoint();
|
|
}
|
|
}
|
|
},
|
|
Get_SelectedContent: function (bUseHistory) {
|
|
var bNeedTurnOffHistory = (History.Is_On() && true !== bUseHistory);
|
|
var bNeedTurnOffTableId = g_oTableId.m_bTurnOff === false && true !== bUseHistory;
|
|
if (bNeedTurnOffHistory) {
|
|
History.TurnOff();
|
|
}
|
|
if (bNeedTurnOffTableId) {
|
|
g_oTableId.m_bTurnOff = true;
|
|
}
|
|
var SelectedContent = new CSelectedContent();
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
this.HdrFtr.Get_SelectedContent(SelectedContent);
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
this.DrawingObjects.Get_SelectedContent(SelectedContent);
|
|
} else {
|
|
if (true !== this.Selection.Use || this.Selection.Flag !== selectionflag_Common) {
|
|
if (bNeedTurnOffHistory) {
|
|
History.TurnOn();
|
|
}
|
|
if (bNeedTurnOffTableId) {
|
|
g_oTableId.m_bTurnOff = false;
|
|
}
|
|
return null;
|
|
}
|
|
var StartPos = this.Selection.StartPos;
|
|
var EndPos = this.Selection.EndPos;
|
|
if (StartPos > EndPos) {
|
|
StartPos = this.Selection.EndPos;
|
|
EndPos = this.Selection.StartPos;
|
|
}
|
|
for (var Index = StartPos; Index <= EndPos; Index++) {
|
|
this.Content[Index].Get_SelectedContent(SelectedContent);
|
|
}
|
|
}
|
|
}
|
|
SelectedContent.On_EndCollectElements(this, bNeedTurnOffHistory);
|
|
if (bNeedTurnOffHistory) {
|
|
History.TurnOn();
|
|
}
|
|
if (bNeedTurnOffTableId) {
|
|
g_oTableId.m_bTurnOff = false;
|
|
}
|
|
return SelectedContent;
|
|
},
|
|
Can_InsertContent: function (SelectedContent, NearPos) {
|
|
if (SelectedContent.Elements.length <= 0) {
|
|
return false;
|
|
}
|
|
var Para = NearPos.Paragraph;
|
|
if (true === Para.Parent.Is_DrawingShape() && true === SelectedContent.HaveShape) {
|
|
return false;
|
|
}
|
|
if (Para.bFromDocument === false && (SelectedContent.DrawingObjects.length > 0 || SelectedContent.HaveMath)) {
|
|
return false;
|
|
}
|
|
var ParaNearPos = NearPos.Paragraph.Get_ParaNearestPos(NearPos);
|
|
if (null === ParaNearPos || ParaNearPos.Classes.length < 2) {
|
|
return false;
|
|
}
|
|
var LastClass = ParaNearPos.Classes[ParaNearPos.Classes.length - 1];
|
|
if (para_Math_Run === LastClass.Type) {
|
|
var Element = SelectedContent.Elements[0].Element;
|
|
if (1 !== SelectedContent.Elements.length || type_Paragraph !== Element.Get_Type() || null === LastClass.Parent) {
|
|
return false;
|
|
}
|
|
var Math = null;
|
|
var Count = Element.Content.length;
|
|
for (var Index = 0; Index < Count; Index++) {
|
|
var Item = Element.Content[Index];
|
|
if (para_Math === Item.Type && null === Math) {
|
|
Math = Element.Content[Index];
|
|
} else {
|
|
if (true !== Item.Is_Empty({
|
|
SkipEnd: true
|
|
})) {
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
if (para_Run !== LastClass.Type) {
|
|
return false;
|
|
}
|
|
}
|
|
if (null === Para.Parent || undefined === Para.Parent) {
|
|
return false;
|
|
}
|
|
return true;
|
|
},
|
|
Insert_Content: function (SelectedContent, NearPos) {
|
|
var Para = NearPos.Paragraph;
|
|
var ParaNearPos = Para.Get_ParaNearestPos(NearPos);
|
|
var LastClass = ParaNearPos.Classes[ParaNearPos.Classes.length - 1];
|
|
if (para_Math_Run === LastClass.Type) {
|
|
var MathRun = LastClass;
|
|
var NewMathRun = MathRun.Split(ParaNearPos.NearPos.ContentPos, ParaNearPos.Classes.length - 1);
|
|
var MathContent = ParaNearPos.Classes[ParaNearPos.Classes.length - 2];
|
|
var MathContentPos = ParaNearPos.NearPos.ContentPos.Data[ParaNearPos.Classes.length - 2];
|
|
var Element = SelectedContent.Elements[0].Element;
|
|
var InsertMathContent = null;
|
|
for (var nPos = 0, nParaLen = Element.Content.length; nPos < nParaLen; nPos++) {
|
|
if (para_Math === Element.Content[nPos].Type) {
|
|
InsertMathContent = Element.Content[nPos];
|
|
break;
|
|
}
|
|
}
|
|
if (null !== InsertMathContent) {
|
|
MathContent.Add_ToContent(MathContentPos + 1, NewMathRun);
|
|
MathContent.Insert_MathContent(InsertMathContent.Root, MathContentPos + 1, true);
|
|
}
|
|
} else {
|
|
if (para_Run === LastClass.Type) {
|
|
var NearContentPos = NearPos.ContentPos;
|
|
var DstIndex = -1;
|
|
var Count = this.Content.length;
|
|
for (var Index = 0; Index < Count; Index++) {
|
|
if (this.Content[Index] === Para) {
|
|
DstIndex = Index;
|
|
break;
|
|
}
|
|
}
|
|
if (-1 === DstIndex) {
|
|
return false;
|
|
}
|
|
var Elements = SelectedContent.Elements;
|
|
var ElementsCount = Elements.length;
|
|
var FirstElement = SelectedContent.Elements[0];
|
|
if (1 === ElementsCount && true !== FirstElement.SelectedAll && type_Paragraph === FirstElement.Element.GetType() && true !== FirstElement.Element.Is_Empty()) {
|
|
var NewPara = FirstElement.Element;
|
|
var NewElementsCount = NewPara.Content.length - 1;
|
|
var LastClass = ParaNearPos.Classes[ParaNearPos.Classes.length - 1];
|
|
var NewElement = LastClass.Split(ParaNearPos.NearPos.ContentPos, ParaNearPos.Classes.length - 1);
|
|
var PrevClass = ParaNearPos.Classes[ParaNearPos.Classes.length - 2];
|
|
var PrevPos = ParaNearPos.NearPos.ContentPos.Data[ParaNearPos.Classes.length - 2];
|
|
PrevClass.Add_ToContent(PrevPos + 1, NewElement);
|
|
var bNeedSelect = (true === SelectedContent.MoveDrawing ? false : true);
|
|
for (var Index = 0; Index < NewElementsCount; Index++) {
|
|
var Item = NewPara.Content[Index];
|
|
PrevClass.Add_ToContent(PrevPos + 1 + Index, Item);
|
|
if (true === bNeedSelect) {
|
|
Item.Select_All();
|
|
}
|
|
}
|
|
if (true === bNeedSelect) {
|
|
PrevClass.Selection.Use = true;
|
|
PrevClass.Selection.StartPos = PrevPos + 1;
|
|
PrevClass.Selection.EndPos = PrevPos + 1 + NewElementsCount - 1;
|
|
for (var Index = 0; Index < ParaNearPos.Classes.length - 2; Index++) {
|
|
var Class = ParaNearPos.Classes[Index];
|
|
var ClassPos = ParaNearPos.NearPos.ContentPos.Data[Index];
|
|
Class.Selection.Use = true;
|
|
Class.Selection.StartPos = ClassPos;
|
|
Class.Selection.EndPos = ClassPos;
|
|
}
|
|
this.Selection.Use = true;
|
|
this.Selection.StartPos = DstIndex;
|
|
this.Selection.EndPos = DstIndex;
|
|
}
|
|
if (PrevClass.Correct_Content) {
|
|
PrevClass.Correct_Content();
|
|
}
|
|
} else {
|
|
var bConcatS = (type_Table === Elements[0].Element.GetType() ? false : true);
|
|
var bConcatE = (type_Table === Elements[ElementsCount - 1].Element.GetType() || true === Elements[ElementsCount - 1].SelectedAll ? false : true);
|
|
var ParaS = Para;
|
|
var ParaE = Para;
|
|
var ParaEIndex = DstIndex;
|
|
Para.Cursor_MoveToNearPos(NearPos);
|
|
Para.Selection_Remove();
|
|
var bAddEmptyPara = false;
|
|
if (true === Para.Cursor_IsEnd()) {
|
|
bConcatE = false;
|
|
if (1 === ElementsCount && type_Paragraph === FirstElement.Element.GetType() && (true === FirstElement.Element.Is_Empty() || true == FirstElement.SelectedAll)) {
|
|
bConcatS = false;
|
|
if (type_Paragraph !== this.Content[DstIndex].Get_Type() || true !== this.Content[DstIndex].Is_Empty()) {
|
|
DstIndex++;
|
|
}
|
|
} else {
|
|
if (true === Elements[ElementsCount - 1].SelectedAll && true === bConcatS) {
|
|
bAddEmptyPara = true;
|
|
}
|
|
}
|
|
} else {
|
|
if (true === Para.Cursor_IsStart()) {
|
|
bConcatS = false;
|
|
} else {
|
|
var NewParagraph = new Paragraph(this.DrawingDocument, this, 0, 0, 0, 0, 0);
|
|
Para.Split(NewParagraph);
|
|
this.Internal_Content_Add(DstIndex + 1, NewParagraph);
|
|
ParaE = NewParagraph;
|
|
ParaEIndex = DstIndex + 1;
|
|
}
|
|
}
|
|
if (true === bAddEmptyPara) {
|
|
var NewParagraph = new Paragraph(this.DrawingDocument, this, 0, 0, 0, 0, 0);
|
|
NewParagraph.Set_Pr(ParaS.Pr);
|
|
NewParagraph.TextPr.Apply_TextPr(ParaS.TextPr.Value);
|
|
this.Internal_Content_Add(DstIndex + 1, NewParagraph);
|
|
}
|
|
var StartIndex = 0;
|
|
if (true === bConcatS) {
|
|
var _ParaS = Elements[0].Element;
|
|
_ParaS.Select_All();
|
|
var _ParaSContentLen = _ParaS.Content.length;
|
|
ParaS.Concat(Elements[0].Element);
|
|
ParaS.Set_Pr(Elements[0].Element.Pr);
|
|
ParaS.TextPr.Clear_Style();
|
|
ParaS.TextPr.Apply_TextPr(Elements[0].Element.TextPr.Value);
|
|
StartIndex++;
|
|
ParaS.Selection.Use = true;
|
|
ParaS.Selection.StartPos = ParaS.Content.length - _ParaSContentLen;
|
|
ParaS.Selection.EndPos = ParaS.Content.length - 1;
|
|
}
|
|
var EndIndex = ElementsCount - 1;
|
|
if (true === bConcatE && StartIndex < EndIndex) {
|
|
var _ParaE = Elements[ElementsCount - 1].Element;
|
|
var TempCount = _ParaE.Content.length - 1;
|
|
_ParaE.Select_All();
|
|
_ParaE.Concat(ParaE);
|
|
_ParaE.Set_Pr(ParaE.Pr);
|
|
this.Internal_Content_Add(ParaEIndex, _ParaE);
|
|
this.Internal_Content_Remove(ParaEIndex + 1, 1);
|
|
_ParaE.Selection.Use = true;
|
|
_ParaE.Selection.StartPos = 0;
|
|
_ParaE.Selection.EndPos = TempCount;
|
|
EndIndex--;
|
|
}
|
|
for (var Index = StartIndex; Index <= EndIndex; Index++) {
|
|
this.Internal_Content_Add(DstIndex + Index, Elements[Index].Element);
|
|
this.Content[DstIndex + Index].Select_All();
|
|
}
|
|
this.Selection.Use = true;
|
|
this.Selection.StartPos = DstIndex;
|
|
this.Selection.EndPos = DstIndex + ElementsCount - 1;
|
|
}
|
|
if (docpostype_DrawingObjects !== this.CurPos.Type) {
|
|
this.CurPos.Type = docpostype_Content;
|
|
}
|
|
}
|
|
}
|
|
},
|
|
Document_SelectNumbering: function (NumPr, Index) {
|
|
this.Selection_Remove();
|
|
this.Selection.Use = true;
|
|
this.Selection.Flag = selectionflag_Numbering;
|
|
this.Selection.Data = [];
|
|
this.Selection.StartPos = Index;
|
|
this.Selection.EndPos = Index;
|
|
for (var Index = 0; Index < this.Content.length; Index++) {
|
|
var Item = this.Content[Index];
|
|
var ItemNumPr = null;
|
|
if (type_Paragraph == Item.GetType() && undefined != (ItemNumPr = Item.Numbering_Get()) && ItemNumPr.NumId == NumPr.NumId && ItemNumPr.Lvl == NumPr.Lvl) {
|
|
this.Selection.Data.push(Index);
|
|
Item.Selection_SelectNumbering();
|
|
}
|
|
}
|
|
this.Interface_Update_ParaPr();
|
|
this.Interface_Update_TextPr();
|
|
this.Document_UpdateSelectionState();
|
|
},
|
|
Remove_NumberingSelection: function () {
|
|
if (true === this.Selection.Use && selectionflag_Numbering == this.Selection.Flag) {
|
|
this.Selection_Remove();
|
|
}
|
|
},
|
|
Update_CursorType: function (X, Y, PageIndex, MouseEvent) {
|
|
editor.sync_MouseMoveStartCallback();
|
|
if (true === this.DrawingDocument.IsCursorInTableCur(X, Y, PageIndex)) {
|
|
this.DrawingDocument.SetCursorType("default", new CMouseMoveData());
|
|
editor.sync_MouseMoveEndCallback();
|
|
return;
|
|
}
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
this.HdrFtr.Update_CursorType(X, Y, PageIndex);
|
|
} else {
|
|
var bInText = (null === this.Is_InText(X, Y, this.CurPage) ? false : true);
|
|
var bTableBorder = (null === this.Is_TableBorder(X, Y, this.CurPage) ? false : true);
|
|
if (true === this.DrawingObjects.updateCursorType(PageIndex, X, Y, MouseEvent, (true === bInText || true === bTableBorder ? true : false))) {
|
|
editor.sync_MouseMoveEndCallback();
|
|
return;
|
|
}
|
|
var ContentPos = this.Internal_GetContentPosByXY(X, Y, PageIndex);
|
|
var Item = this.Content[ContentPos];
|
|
Item.Update_CursorType(X, Y, PageIndex);
|
|
}
|
|
editor.sync_MouseMoveEndCallback();
|
|
},
|
|
Is_TableBorder: function (X, Y, PageIndex) {
|
|
if (PageIndex >= this.Pages.length || PageIndex < 0) {
|
|
return null;
|
|
}
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
return this.HdrFtr.Is_TableBorder(X, Y, PageIndex);
|
|
} else {
|
|
if (-1 != this.DrawingObjects.isPointInDrawingObjects(X, Y, PageIndex, this)) {
|
|
return null;
|
|
} else {
|
|
var ContentPos = this.Internal_GetContentPosByXY(X, Y, PageIndex);
|
|
var Item = this.Content[ContentPos];
|
|
if (type_Table == Item.GetType()) {
|
|
return Item.Is_TableBorder(X, Y, PageIndex);
|
|
} else {
|
|
return null;
|
|
}
|
|
}
|
|
}
|
|
return null;
|
|
},
|
|
Is_InText: function (X, Y, PageIndex) {
|
|
if (PageIndex >= this.Pages.length || PageIndex < 0) {
|
|
return null;
|
|
}
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
return this.HdrFtr.Is_InText(X, Y, PageIndex);
|
|
} else {
|
|
var ContentPos = this.Internal_GetContentPosByXY(X, Y, PageIndex);
|
|
var Item = this.Content[ContentPos];
|
|
return Item.Is_InText(X, Y, PageIndex);
|
|
}
|
|
},
|
|
Is_InDrawing: function (X, Y, PageIndex) {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
return this.HdrFtr.Is_InDrawing(X, Y, PageIndex);
|
|
} else {
|
|
if (-1 != this.DrawingObjects.isPointInDrawingObjects(X, Y, this.CurPage, this)) {
|
|
return true;
|
|
} else {
|
|
var ContentPos = this.Internal_GetContentPosByXY(X, Y, PageIndex);
|
|
var Item = this.Content[ContentPos];
|
|
if (type_Table == Item.GetType()) {
|
|
return Item.Is_InDrawing(X, Y, PageIndex);
|
|
}
|
|
return false;
|
|
}
|
|
}
|
|
},
|
|
Is_UseInDocument: function (Id) {
|
|
var Count = this.Content.length;
|
|
for (var Index = 0; Index < Count; Index++) {
|
|
if (Id === this.Content[Index].Get_Id()) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
},
|
|
OnKeyDown: function (e) {
|
|
if (true === this.History.Is_ExtendDocumentToPos()) {
|
|
this.History.Clear_Additional();
|
|
}
|
|
if (this.SearchEngine.Count > 0) {
|
|
this.SearchEngine.Reset_Current();
|
|
}
|
|
var bUpdateSelection = true;
|
|
var bRetValue = false;
|
|
if (e.KeyCode == 8 && false === editor.isViewMode) {
|
|
if (false === this.Document_Is_SelectionLocked(changestype_Remove)) {
|
|
this.Create_NewHistoryPoint(historydescription_Document_BackSpaceButton);
|
|
this.Remove(-1, true);
|
|
}
|
|
bRetValue = true;
|
|
} else {
|
|
if (e.KeyCode == 9 && false === editor.isViewMode) {
|
|
var SelectedInfo = this.Get_SelectedElementsInfo();
|
|
if (true === SelectedInfo.Is_InTable() && true != e.CtrlKey) {
|
|
this.Cursor_MoveToCell(true === e.ShiftKey ? false : true);
|
|
} else {
|
|
if (true === SelectedInfo.Is_DrawingObjSelected() && true != e.CtrlKey) {
|
|
this.DrawingObjects.selectNextObject((e.ShiftKey === true ? -1 : 1));
|
|
} else {
|
|
if (true === SelectedInfo.Is_MixedSelection()) {
|
|
if (true === e.ShiftKey) {
|
|
editor.DecreaseIndent();
|
|
} else {
|
|
editor.IncreaseIndent();
|
|
}
|
|
} else {
|
|
var Paragraph = SelectedInfo.Get_Paragraph();
|
|
var ParaPr = Paragraph.Get_CompiledPr2(false).ParaPr;
|
|
if (null != Paragraph && (true === Paragraph.Cursor_IsStart() || true === Paragraph.Selection_IsFromStart()) && (undefined != Paragraph.Numbering_Get() || (true != Paragraph.IsEmpty() && ParaPr.Tabs.Tabs.length <= 0))) {
|
|
if (false === this.Document_Is_SelectionLocked(changestype_None, {
|
|
Type: changestype_2_Element_and_Type,
|
|
Element: Paragraph,
|
|
CheckType: changestype_Paragraph_Properties
|
|
})) {
|
|
this.Create_NewHistoryPoint(historydescription_Document_MoveParagraphByTab);
|
|
Paragraph.Add_Tab(e.ShiftKey);
|
|
this.Recalculate();
|
|
this.Document_UpdateInterfaceState();
|
|
this.Document_UpdateSelectionState();
|
|
}
|
|
} else {
|
|
if (false === this.Document_Is_SelectionLocked(changestype_Paragraph_Content)) {
|
|
this.Create_NewHistoryPoint(historydescription_Document_AddTab);
|
|
this.Paragraph_Add(new ParaTab());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
bRetValue = true;
|
|
} else {
|
|
if (e.KeyCode == 13) {
|
|
var Hyperlink = this.Hyperlink_Check(false);
|
|
if (null != Hyperlink && false === e.ShiftKey) {
|
|
editor.sync_HyperlinkClickCallback(Hyperlink.Get_Value());
|
|
Hyperlink.Set_Visited(true);
|
|
this.DrawingDocument.ClearCachePages();
|
|
this.DrawingDocument.FirePaint();
|
|
} else {
|
|
if (false === editor.isViewMode) {
|
|
var CheckType = (e.ShiftKey || e.CtrlKey ? changestype_Paragraph_Content : changestype_Document_Content_Add);
|
|
if (false === this.Document_Is_SelectionLocked(CheckType)) {
|
|
this.Create_NewHistoryPoint(historydescription_Document_EnterButton);
|
|
var oSelectedInfo = this.Get_SelectedElementsInfo();
|
|
var oMath = oSelectedInfo.Get_Math();
|
|
if (null !== oMath && oMath.Is_InInnerContent()) {
|
|
if (oMath.Handle_AddNewLine()) {
|
|
this.Recalculate();
|
|
}
|
|
} else {
|
|
if (e.ShiftKey) {
|
|
this.Paragraph_Add(new ParaNewLine(break_Line));
|
|
} else {
|
|
if (e.CtrlKey) {
|
|
this.Paragraph_Add(new ParaNewLine(break_Page));
|
|
} else {
|
|
this.Add_NewParagraph();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
bRetValue = true;
|
|
} else {
|
|
if (e.KeyCode == 27) {
|
|
if (true === editor.isMarkerFormat) {
|
|
editor.sync_MarkerFormatCallback(false);
|
|
this.Update_CursorType(this.CurPos.RealX, this.CurPos.RealY, this.CurPage, new CMouseEventHandler());
|
|
} else {
|
|
if (c_oAscFormatPainterState.kOff !== editor.isPaintFormat) {
|
|
editor.sync_PaintFormatCallback(c_oAscFormatPainterState.kOff);
|
|
this.Update_CursorType(this.CurPos.RealX, this.CurPos.RealY, this.CurPage, new CMouseEventHandler());
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type || (docpostype_HdrFtr === this.CurPos.Type && null != this.HdrFtr.CurHdrFtr && docpostype_DrawingObjects === this.HdrFtr.CurHdrFtr.Content.CurPos.Type)) {
|
|
this.DrawingObjects.resetSelection2();
|
|
this.Document_UpdateInterfaceState();
|
|
this.Document_UpdateSelectionState();
|
|
this.private_UpdateCursorXY(true, true);
|
|
} else {
|
|
if (docpostype_HdrFtr == this.CurPos.Type) {
|
|
this.Document_End_HdrFtrEditing();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
bRetValue = true;
|
|
} else {
|
|
if (e.KeyCode == 32 && false === editor.isViewMode) {
|
|
if (false === this.Document_Is_SelectionLocked(changestype_Paragraph_Content)) {
|
|
this.Create_NewHistoryPoint(historydescription_Document_SpaceButton);
|
|
var oSelectedInfo = this.Get_SelectedElementsInfo();
|
|
var oMath = oSelectedInfo.Get_Math();
|
|
if (null !== oMath && true === oMath.Make_AutoCorrect()) {} else {
|
|
if (true === e.ShiftKey && true === e.CtrlKey) {
|
|
this.DrawingDocument.TargetStart();
|
|
this.DrawingDocument.TargetShow();
|
|
this.Paragraph_Add(new ParaText(String.fromCharCode(160)));
|
|
} else {
|
|
if (true === e.CtrlKey) {
|
|
this.Paragraph_ClearFormatting();
|
|
} else {
|
|
this.DrawingDocument.TargetStart();
|
|
this.DrawingDocument.TargetShow();
|
|
this.Paragraph_Add(new ParaSpace());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
bRetValue = true;
|
|
} else {
|
|
if (e.KeyCode == 33) {
|
|
if (true === e.AltKey) {
|
|
var MouseEvent = new CMouseEventHandler();
|
|
MouseEvent.ClickCount = 1;
|
|
MouseEvent.Type = g_mouse_event_type_down;
|
|
this.CurPage--;
|
|
if (this.CurPage < 0) {
|
|
this.CurPage = 0;
|
|
}
|
|
this.Selection_SetStart(0, 0, MouseEvent);
|
|
MouseEvent.Type = g_mouse_event_type_up;
|
|
this.Selection_SetEnd(0, 0, MouseEvent);
|
|
} else {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
if (true === this.HdrFtr.GoTo_PrevHdrFtr()) {
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
}
|
|
} else {
|
|
var TempXY = this.Cursor_GetPos();
|
|
var X = TempXY.X;
|
|
var Y = TempXY.Y;
|
|
var Dy = this.DrawingDocument.GetVisibleMMHeight();
|
|
if (Y - Dy < 0) {
|
|
this.CurPage--;
|
|
var PageH = this.Get_PageLimits(this.CurPage).YLimit;
|
|
Dy -= Y;
|
|
Y = PageH;
|
|
while (Dy > PageH) {
|
|
Dy -= PageH;
|
|
this.CurPage--;
|
|
}
|
|
if (this.CurPage < 0) {
|
|
this.CurPage = 0;
|
|
Dy = PageH - this.Content[0].Pages[this.Content[0].Pages.length - 1].Bounds.Top;
|
|
}
|
|
}
|
|
if (this.CurPage >= this.DrawingDocument.m_lPagesCount) {
|
|
this.CurPage = this.DrawingDocument.m_lPagesCount;
|
|
}
|
|
var StartX = X;
|
|
var StartY = Y;
|
|
var CurY = Y;
|
|
while (Math.abs(StartY - Y) < 0.001) {
|
|
var bBreak = false;
|
|
CurY -= Dy;
|
|
if (CurY < 0) {
|
|
this.CurPage--;
|
|
var PageH = this.Get_PageLimits(this.CurPage).YLimit;
|
|
CurY = PageH;
|
|
if (this.CurPage < 0) {
|
|
this.CurPage = this.DrawingDocument.m_lPagesCount - 1;
|
|
CurY = 0;
|
|
}
|
|
bBreak = true;
|
|
}
|
|
this.Cursor_MoveAt(StartX, CurY, false);
|
|
this.CurPos.RealX = StartX;
|
|
this.CurPos.RealY = CurY;
|
|
TempXY = this.Cursor_GetPos();
|
|
X = TempXY.X;
|
|
Y = TempXY.Y;
|
|
if (true === bBreak) {
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
bRetValue = true;
|
|
} else {
|
|
if (e.KeyCode == 34) {
|
|
if (true === e.AltKey) {
|
|
var MouseEvent = new CMouseEventHandler();
|
|
MouseEvent.ClickCount = 1;
|
|
MouseEvent.Type = g_mouse_event_type_down;
|
|
this.CurPage++;
|
|
if (this.CurPage >= this.DrawingDocument.m_lPagesCount) {
|
|
this.CurPage = this.DrawingDocument.m_lPagesCount - 1;
|
|
}
|
|
this.Selection_SetStart(0, 0, MouseEvent);
|
|
MouseEvent.Type = g_mouse_event_type_up;
|
|
this.Selection_SetEnd(0, 0, MouseEvent);
|
|
} else {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
if (true === this.HdrFtr.GoTo_NextHdrFtr()) {
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
}
|
|
} else {
|
|
if (this.Pages.length > 0) {
|
|
var TempXY = this.Cursor_GetPos();
|
|
var X = TempXY.X;
|
|
var Y = TempXY.Y;
|
|
var Dy = this.DrawingDocument.GetVisibleMMHeight();
|
|
if (Y + Dy > this.Get_PageLimits(this.CurPage).YLimit) {
|
|
this.CurPage++;
|
|
var PageH = this.Get_PageLimits(this.CurPage).YLimit;
|
|
Dy -= PageH - Y;
|
|
Y = 0;
|
|
while (Dy > PageH) {
|
|
Dy -= PageH;
|
|
this.CurPage++;
|
|
}
|
|
if (this.CurPage >= this.Pages.length) {
|
|
this.CurPage = this.Pages.length - 1;
|
|
var LastElement = this.Content[this.Pages[this.CurPage].EndPos];
|
|
Dy = LastElement.Pages[LastElement.Pages.length - 1].Bounds.Bottom;
|
|
}
|
|
}
|
|
if (this.CurPage >= this.Pages.length) {
|
|
this.CurPage = this.Pages.length - 1;
|
|
}
|
|
var StartX = X;
|
|
var StartY = Y;
|
|
var CurY = Y;
|
|
while (Math.abs(StartY - Y) < 0.001) {
|
|
var bBreak = false;
|
|
CurY += Dy;
|
|
var PageH = this.Get_PageLimits(this.CurPage).YLimit;
|
|
if (CurY > PageH) {
|
|
this.CurPage++;
|
|
CurY = 0;
|
|
if (this.CurPage >= this.Pages.length) {
|
|
this.CurPage = this.Pages.length - 1;
|
|
var LastElement = this.Content[this.Pages[this.CurPage].EndPos];
|
|
CurY = LastElement.Pages[LastElement.Pages.length - 1].Bounds.Bottom;
|
|
}
|
|
bBreak = true;
|
|
}
|
|
this.Cursor_MoveAt(StartX, CurY, false);
|
|
this.CurPos.RealX = StartX;
|
|
this.CurPos.RealY = CurY;
|
|
TempXY = this.Cursor_GetPos();
|
|
X = TempXY.X;
|
|
Y = TempXY.Y;
|
|
if (true === bBreak) {
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
bRetValue = true;
|
|
} else {
|
|
if (e.KeyCode == 35) {
|
|
if (true === e.CtrlKey) {
|
|
this.Cursor_MoveToEndPos(true === e.ShiftKey);
|
|
} else {
|
|
this.Cursor_MoveEndOfLine(true === e.ShiftKey);
|
|
}
|
|
bRetValue = true;
|
|
} else {
|
|
if (e.KeyCode == 36) {
|
|
if (true === e.CtrlKey) {
|
|
this.Cursor_MoveToStartPos(true === e.ShiftKey);
|
|
} else {
|
|
this.Cursor_MoveStartOfLine(true === e.ShiftKey);
|
|
}
|
|
bRetValue = true;
|
|
} else {
|
|
if (e.KeyCode == 37) {
|
|
if (true != e.ShiftKey) {
|
|
this.DrawingDocument.TargetStart();
|
|
}
|
|
this.Cursor_MoveLeft(true === e.ShiftKey, true === e.CtrlKey);
|
|
bRetValue = true;
|
|
} else {
|
|
if (e.KeyCode == 38) {
|
|
if (true != e.ShiftKey) {
|
|
this.DrawingDocument.TargetStart();
|
|
}
|
|
this.Cursor_MoveUp(true === e.ShiftKey);
|
|
bRetValue = true;
|
|
} else {
|
|
if (e.KeyCode == 39) {
|
|
if (true != e.ShiftKey) {
|
|
this.DrawingDocument.TargetStart();
|
|
}
|
|
this.Cursor_MoveRight(true === e.ShiftKey, true === e.CtrlKey);
|
|
bRetValue = true;
|
|
} else {
|
|
if (e.KeyCode == 40) {
|
|
if (true != e.ShiftKey) {
|
|
this.DrawingDocument.TargetStart();
|
|
}
|
|
this.Cursor_MoveDown(true === e.ShiftKey);
|
|
bRetValue = true;
|
|
} else {
|
|
if (e.KeyCode == 45) {
|
|
if (true === e.CtrlKey) {
|
|
Editor_Copy(this.DrawingDocument.m_oWordControl.m_oApi);
|
|
} else {
|
|
if (true === e.ShiftKey && false === editor.isViewMode) {
|
|
if (false === this.Document_Is_SelectionLocked(changestype_Paragraph_Content)) {
|
|
if (!window.GlobalPasteFlag) {
|
|
if (!window.USER_AGENT_SAFARI_MACOS) {
|
|
this.Create_NewHistoryPoint(historydescription_Document_ShiftInsert);
|
|
window.GlobalPasteFlag = true;
|
|
editor.waitSave = true;
|
|
Editor_Paste(this.DrawingDocument.m_oWordControl.m_oApi, true);
|
|
} else {
|
|
if (0 === window.GlobalPasteFlagCounter) {
|
|
this.Create_NewHistoryPoint(historydescription_Document_ShiftInsertSafari);
|
|
SafariIntervalFocus();
|
|
window.GlobalPasteFlag = true;
|
|
editor.waitSave = true;
|
|
Editor_Paste(this.DrawingDocument.m_oWordControl.m_oApi, true);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
if (e.KeyCode == 46 && false === editor.isViewMode) {
|
|
if (true != e.ShiftKey) {
|
|
if (false === this.Document_Is_SelectionLocked(changestype_Delete)) {
|
|
this.Create_NewHistoryPoint(historydescription_Document_DeleteButton);
|
|
this.Remove(1, true);
|
|
}
|
|
bRetValue = true;
|
|
} else {
|
|
if (false === this.Document_Is_SelectionLocked(changestype_Paragraph_Content)) {
|
|
this.Create_NewHistoryPoint(historydescription_Document_ShiftDeleteButton);
|
|
Editor_Copy(this.DrawingDocument.m_oWordControl.m_oApi, true);
|
|
}
|
|
}
|
|
} else {
|
|
if (e.KeyCode == 49 && false === editor.isViewMode && true === e.CtrlKey && true === e.AltKey) {
|
|
if (false === this.Document_Is_SelectionLocked(changestype_Paragraph_Properties)) {
|
|
this.Create_NewHistoryPoint(historydescription_Document_SetStyleHeading1);
|
|
this.Set_ParagraphStyle("Heading 1");
|
|
this.Document_UpdateInterfaceState();
|
|
}
|
|
bRetValue = true;
|
|
} else {
|
|
if (e.KeyCode == 50 && false === editor.isViewMode && true === e.CtrlKey && true === e.AltKey) {
|
|
if (false === this.Document_Is_SelectionLocked(changestype_Paragraph_Properties)) {
|
|
this.Create_NewHistoryPoint(historydescription_Document_SetStyleHeading2);
|
|
this.Set_ParagraphStyle("Heading 2");
|
|
this.Document_UpdateInterfaceState();
|
|
}
|
|
bRetValue = true;
|
|
} else {
|
|
if (e.KeyCode == 51 && false === editor.isViewMode && true === e.CtrlKey && true === e.AltKey) {
|
|
if (false === this.Document_Is_SelectionLocked(changestype_Paragraph_Properties)) {
|
|
this.Create_NewHistoryPoint(historydescription_Document_SetStyleHeading3);
|
|
this.Set_ParagraphStyle("Heading 3");
|
|
this.Document_UpdateInterfaceState();
|
|
}
|
|
bRetValue = true;
|
|
} else {
|
|
if (e.KeyCode === 53 && false === editor.isViewMode && true === e.CtrlKey) {
|
|
var TextPr = this.Get_Paragraph_TextPr();
|
|
if (null != TextPr) {
|
|
if (false === this.Document_Is_SelectionLocked(changestype_Paragraph_Content)) {
|
|
this.Create_NewHistoryPoint(historydescription_Document_SetTextStrikeoutHotKey);
|
|
this.Paragraph_Add(new ParaTextPr({
|
|
Strikeout: TextPr.Strikeout === true ? false : true
|
|
}));
|
|
this.Document_UpdateInterfaceState();
|
|
}
|
|
bRetValue = true;
|
|
}
|
|
} else {
|
|
if (e.KeyCode == 65 && true === e.CtrlKey) {
|
|
this.Select_All();
|
|
bUpdateSelection = false;
|
|
bRetValue = true;
|
|
} else {
|
|
if (e.KeyCode == 66 && false === editor.isViewMode && true === e.CtrlKey) {
|
|
var TextPr = this.Get_Paragraph_TextPr();
|
|
if (null != TextPr) {
|
|
if (false === this.Document_Is_SelectionLocked(changestype_Paragraph_Content)) {
|
|
this.Create_NewHistoryPoint(historydescription_Document_SetTextBoldHotKey);
|
|
this.Paragraph_Add(new ParaTextPr({
|
|
Bold: TextPr.Bold === true ? false : true
|
|
}));
|
|
this.Document_UpdateInterfaceState();
|
|
}
|
|
bRetValue = true;
|
|
}
|
|
} else {
|
|
if (e.KeyCode == 67 && true === e.CtrlKey) {
|
|
if (true === e.ShiftKey) {
|
|
this.Document_Format_Copy();
|
|
bRetValue = true;
|
|
} else {
|
|
Editor_Copy(this.DrawingDocument.m_oWordControl.m_oApi);
|
|
}
|
|
} else {
|
|
if (e.KeyCode == 69 && false === editor.isViewMode && true === e.CtrlKey) {
|
|
if (true !== e.AltKey) {
|
|
var ParaPr = this.Get_Paragraph_ParaPr();
|
|
if (null != ParaPr) {
|
|
if (false === this.Document_Is_SelectionLocked(changestype_Paragraph_Properties)) {
|
|
this.Create_NewHistoryPoint(historydescription_Document_SetParagraphAlignHotKey);
|
|
this.Set_ParagraphAlign(ParaPr.Jc === align_Center ? align_Left : align_Center);
|
|
this.Document_UpdateInterfaceState();
|
|
}
|
|
bRetValue = true;
|
|
}
|
|
} else {
|
|
if (false === this.Document_Is_SelectionLocked(changestype_Paragraph_Content)) {
|
|
this.Create_NewHistoryPoint(historydescription_Document_AddEuroLetter);
|
|
this.DrawingDocument.TargetStart();
|
|
this.DrawingDocument.TargetShow();
|
|
this.Paragraph_Add(new ParaText("€"));
|
|
}
|
|
bRetValue = true;
|
|
}
|
|
} else {
|
|
if (e.KeyCode == 73 && false === editor.isViewMode && true === e.CtrlKey) {
|
|
var TextPr = this.Get_Paragraph_TextPr();
|
|
if (null != TextPr) {
|
|
if (false === this.Document_Is_SelectionLocked(changestype_Paragraph_Content)) {
|
|
this.Create_NewHistoryPoint(historydescription_Document_SetTextItalicHotKey);
|
|
this.Paragraph_Add(new ParaTextPr({
|
|
Italic: TextPr.Italic === true ? false : true
|
|
}));
|
|
this.Document_UpdateInterfaceState();
|
|
}
|
|
bRetValue = true;
|
|
}
|
|
} else {
|
|
if (e.KeyCode == 74 && false === editor.isViewMode && true === e.CtrlKey) {
|
|
var ParaPr = this.Get_Paragraph_ParaPr();
|
|
if (null != ParaPr) {
|
|
if (false === this.Document_Is_SelectionLocked(changestype_Paragraph_Properties)) {
|
|
this.Create_NewHistoryPoint(historydescription_Document_SetParagraphAlignHotKey2);
|
|
this.Set_ParagraphAlign(ParaPr.Jc === align_Justify ? align_Left : align_Justify);
|
|
this.Document_UpdateInterfaceState();
|
|
}
|
|
bRetValue = true;
|
|
}
|
|
} else {
|
|
if (e.KeyCode == 75 && false === editor.isViewMode && true === e.CtrlKey && false === e.ShiftKey) {
|
|
if (true === this.Hyperlink_CanAdd(false)) {
|
|
editor.sync_DialogAddHyperlink();
|
|
}
|
|
bRetValue = true;
|
|
} else {
|
|
if (e.KeyCode == 76 && false === editor.isViewMode && true === e.CtrlKey) {
|
|
if (true === e.ShiftKey) {
|
|
if (false === this.Document_Is_SelectionLocked(changestype_Paragraph_Content)) {
|
|
this.Create_NewHistoryPoint(historydescription_Document_SetParagraphNumberingHotKey);
|
|
this.Set_ParagraphNumbering({
|
|
Type: 0,
|
|
SubType: 1
|
|
});
|
|
this.Document_UpdateInterfaceState();
|
|
}
|
|
bRetValue = true;
|
|
} else {
|
|
var ParaPr = this.Get_Paragraph_ParaPr();
|
|
if (null != ParaPr) {
|
|
if (false === this.Document_Is_SelectionLocked(changestype_Paragraph_Properties)) {
|
|
this.Create_NewHistoryPoint(historydescription_Document_SetParagraphAlignHotKey3);
|
|
this.Set_ParagraphAlign(ParaPr.Jc === align_Left ? align_Justify : align_Left);
|
|
this.Document_UpdateInterfaceState();
|
|
}
|
|
bRetValue = true;
|
|
}
|
|
}
|
|
} else {
|
|
if (e.KeyCode == 77 && false === editor.isViewMode && true === e.CtrlKey) {
|
|
if (true === e.ShiftKey) {
|
|
editor.DecreaseIndent();
|
|
} else {
|
|
editor.IncreaseIndent();
|
|
}
|
|
bRetValue = true;
|
|
} else {
|
|
if (e.KeyCode == 80 && true === e.CtrlKey) {
|
|
if (true === e.ShiftKey && false === editor.isViewMode) {
|
|
if (false === this.Document_Is_SelectionLocked(changestype_Paragraph_Content)) {
|
|
this.Create_NewHistoryPoint(historydescription_Document_AddPageNumHotKey);
|
|
this.Paragraph_Add(new ParaPageNum());
|
|
}
|
|
bRetValue = true;
|
|
} else {
|
|
this.DrawingDocument.m_oWordControl.m_oApi.asc_Print();
|
|
bRetValue = true;
|
|
}
|
|
} else {
|
|
if (e.KeyCode == 82 && false === editor.isViewMode && true === e.CtrlKey) {
|
|
var ParaPr = this.Get_Paragraph_ParaPr();
|
|
if (null != ParaPr) {
|
|
if (false === this.Document_Is_SelectionLocked(changestype_Paragraph_Properties)) {
|
|
this.Create_NewHistoryPoint(historydescription_Document_SetParagraphAlignHotKey4);
|
|
this.Set_ParagraphAlign(ParaPr.Jc === align_Right ? align_Left : align_Right);
|
|
this.Document_UpdateInterfaceState();
|
|
}
|
|
bRetValue = true;
|
|
}
|
|
} else {
|
|
if (e.KeyCode == 83 && false === editor.isViewMode && true === e.CtrlKey) {
|
|
if (true === this.History.Have_Changes() || CollaborativeEditing.m_aChanges.length > 0) {
|
|
this.DrawingDocument.m_oWordControl.m_oApi.asc_Save();
|
|
}
|
|
bRetValue = true;
|
|
} else {
|
|
if (e.KeyCode == 85 && false === editor.isViewMode && true === e.CtrlKey) {
|
|
var TextPr = this.Get_Paragraph_TextPr();
|
|
if (null != TextPr) {
|
|
if (false === this.Document_Is_SelectionLocked(changestype_Paragraph_Content)) {
|
|
this.Create_NewHistoryPoint(historydescription_Document_SetTextUnderlineHotKey);
|
|
this.Paragraph_Add(new ParaTextPr({
|
|
Underline: TextPr.Underline === true ? false : true
|
|
}));
|
|
this.Document_UpdateInterfaceState();
|
|
}
|
|
bRetValue = true;
|
|
}
|
|
} else {
|
|
if (e.KeyCode == 86 && false === editor.isViewMode && true === e.CtrlKey) {
|
|
if (false === this.Document_Is_SelectionLocked(changestype_Paragraph_Content)) {
|
|
if (true === e.ShiftKey) {
|
|
this.Create_NewHistoryPoint(historydescription_Document_FormatPasteHotKey);
|
|
this.Document_Format_Paste();
|
|
bRetValue = true;
|
|
} else {
|
|
if (!window.GlobalPasteFlag) {
|
|
if (!window.USER_AGENT_SAFARI_MACOS) {
|
|
this.Create_NewHistoryPoint(historydescription_Document_PasteHotKey);
|
|
window.GlobalPasteFlag = true;
|
|
editor.waitSave = true;
|
|
Editor_Paste(this.DrawingDocument.m_oWordControl.m_oApi, true);
|
|
} else {
|
|
if (0 === window.GlobalPasteFlagCounter) {
|
|
this.Create_NewHistoryPoint(historydescription_Document_PasteSafariHotKey);
|
|
SafariIntervalFocus();
|
|
window.GlobalPasteFlag = true;
|
|
editor.waitSave = true;
|
|
Editor_Paste(this.DrawingDocument.m_oWordControl.m_oApi, true);
|
|
}
|
|
}
|
|
} else {
|
|
if (!window.USER_AGENT_SAFARI_MACOS) {
|
|
bRetValue = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
if (e.KeyCode == 88 && false === editor.isViewMode && true === e.CtrlKey) {
|
|
if (false === this.Document_Is_SelectionLocked(changestype_Paragraph_Content)) {
|
|
this.Create_NewHistoryPoint(historydescription_Document_CurHotKey);
|
|
Editor_Copy(this.DrawingDocument.m_oWordControl.m_oApi, true);
|
|
}
|
|
} else {
|
|
if (e.KeyCode == 89 && false === editor.isViewMode && true === e.CtrlKey) {
|
|
this.Document_Redo();
|
|
bRetValue = true;
|
|
} else {
|
|
if (e.KeyCode == 90 && false === editor.isViewMode && true === e.CtrlKey) {
|
|
this.Document_Undo();
|
|
bRetValue = true;
|
|
} else {
|
|
if (e.KeyCode == 93 || 57351 == e.KeyCode) {
|
|
var ConvertedPos = this.DrawingDocument.ConvertCoordsToCursorWR(this.TargetPos.X, this.TargetPos.Y, this.TargetPos.PageNum);
|
|
var X_abs = ConvertedPos.X;
|
|
var Y_abs = ConvertedPos.Y;
|
|
editor.sync_ContextMenuCallback({
|
|
Type: c_oAscContextMenuTypes.Common,
|
|
X_abs: X_abs,
|
|
Y_abs: Y_abs
|
|
});
|
|
bUpdateSelection = false;
|
|
bRetValue = true;
|
|
} else {
|
|
if (e.KeyCode == 121 && true === e.ShiftKey) {
|
|
var ConvertedPos = this.DrawingDocument.ConvertCoordsToCursorWR(this.TargetPos.X, this.TargetPos.Y, this.TargetPos.PageNum);
|
|
var X_abs = ConvertedPos.X;
|
|
var Y_abs = ConvertedPos.Y;
|
|
editor.sync_ContextMenuCallback({
|
|
Type: c_oAscContextMenuTypes.Common,
|
|
X_abs: X_abs,
|
|
Y_abs: Y_abs
|
|
});
|
|
bUpdateSelection = false;
|
|
bRetValue = true;
|
|
} else {
|
|
if (e.KeyCode == 144) {
|
|
bUpdateSelection = false;
|
|
bRetValue = true;
|
|
} else {
|
|
if (e.KeyCode == 145) {
|
|
bUpdateSelection = false;
|
|
bRetValue = true;
|
|
} else {
|
|
if (e.KeyCode == 187 && false === editor.isViewMode) {
|
|
if (true === e.CtrlKey) {
|
|
var TextPr = this.Get_Paragraph_TextPr();
|
|
if (null != TextPr) {
|
|
if (false === this.Document_Is_SelectionLocked(changestype_Paragraph_Content)) {
|
|
this.Create_NewHistoryPoint(historydescription_Document_SetTextVertAlignHotKey);
|
|
if (true === e.ShiftKey) {
|
|
this.Paragraph_Add(new ParaTextPr({
|
|
VertAlign: TextPr.VertAlign === vertalign_SuperScript ? vertalign_Baseline : vertalign_SuperScript
|
|
}));
|
|
} else {
|
|
this.Paragraph_Add(new ParaTextPr({
|
|
VertAlign: TextPr.VertAlign === vertalign_SubScript ? vertalign_Baseline : vertalign_SubScript
|
|
}));
|
|
}
|
|
this.Document_UpdateInterfaceState();
|
|
}
|
|
bRetValue = true;
|
|
}
|
|
} else {
|
|
if (true === e.AltKey) {
|
|
var oSelectedInfo = this.Get_SelectedElementsInfo();
|
|
var oMath = oSelectedInfo.Get_Math();
|
|
if (null === oMath) {
|
|
if (false === this.Document_Is_SelectionLocked(changestype_Paragraph_Content)) {
|
|
this.Create_NewHistoryPoint(historydescription_Document_AddMathHotKey);
|
|
this.Paragraph_Add(new MathMenu(-1));
|
|
bRetValue = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
if (e.KeyCode == 188 && true === e.CtrlKey) {
|
|
var TextPr = this.Get_Paragraph_TextPr();
|
|
if (null != TextPr) {
|
|
if (false === this.Document_Is_SelectionLocked(changestype_Paragraph_Content)) {
|
|
this.Create_NewHistoryPoint(historydescription_Document_SetTextVertAlignHotKey2);
|
|
this.Paragraph_Add(new ParaTextPr({
|
|
VertAlign: TextPr.VertAlign === vertalign_SuperScript ? vertalign_Baseline : vertalign_SuperScript
|
|
}));
|
|
this.Document_UpdateInterfaceState();
|
|
}
|
|
bRetValue = true;
|
|
}
|
|
} else {
|
|
if (e.KeyCode == 189 && false === editor.isViewMode) {
|
|
if (false === this.Document_Is_SelectionLocked(changestype_Paragraph_Content)) {
|
|
this.Create_NewHistoryPoint(historydescription_Document_MinusButton);
|
|
this.DrawingDocument.TargetStart();
|
|
this.DrawingDocument.TargetShow();
|
|
var Item = null;
|
|
if (true === e.CtrlKey && true === e.ShiftKey) {
|
|
Item = new ParaText(String.fromCharCode(8211));
|
|
Item.Set_SpaceAfter(false);
|
|
} else {
|
|
if (true === e.ShiftKey) {
|
|
Item = new ParaText("_");
|
|
} else {
|
|
Item = new ParaText("-");
|
|
}
|
|
}
|
|
this.Paragraph_Add(Item);
|
|
}
|
|
bRetValue = true;
|
|
} else {
|
|
if (e.KeyCode == 190 && true === e.CtrlKey) {
|
|
var TextPr = this.Get_Paragraph_TextPr();
|
|
if (null != TextPr) {
|
|
if (false === this.Document_Is_SelectionLocked(changestype_Paragraph_Content)) {
|
|
this.Create_NewHistoryPoint(historydescription_Document_SetTextVertAlignHotKey3);
|
|
this.Paragraph_Add(new ParaTextPr({
|
|
VertAlign: TextPr.VertAlign === vertalign_SubScript ? vertalign_Baseline : vertalign_SubScript
|
|
}));
|
|
this.Document_UpdateInterfaceState();
|
|
}
|
|
bRetValue = true;
|
|
}
|
|
} else {
|
|
if (e.KeyCode == 219 && false === editor.isViewMode && true === e.CtrlKey) {
|
|
editor.FontSizeOut();
|
|
this.Document_UpdateInterfaceState();
|
|
} else {
|
|
if (e.KeyCode == 221 && false === editor.isViewMode && true === e.CtrlKey) {
|
|
editor.FontSizeIn();
|
|
this.Document_UpdateInterfaceState();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (true == bRetValue && true === bUpdateSelection) {
|
|
this.Document_UpdateSelectionState();
|
|
}
|
|
return bRetValue;
|
|
},
|
|
OnKeyPress: function (e) {
|
|
if (true === editor.isViewMode) {
|
|
return false;
|
|
}
|
|
if (e.CtrlKey || (e.AltKey && !AscBrowser.isMacOs)) {
|
|
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) {
|
|
if (false === this.Document_Is_SelectionLocked(changestype_Paragraph_Content)) {
|
|
this.Create_NewHistoryPoint(historydescription_Document_AddLetter);
|
|
this.DrawingDocument.TargetStart();
|
|
this.DrawingDocument.TargetShow();
|
|
this.Paragraph_Add(new ParaText(String.fromCharCode(Code)));
|
|
}
|
|
bRetValue = true;
|
|
}
|
|
if (true == bRetValue) {
|
|
this.Document_UpdateSelectionState();
|
|
}
|
|
return bRetValue;
|
|
},
|
|
OnMouseDown: function (e, X, Y, PageIndex) {
|
|
if (PageIndex < 0) {
|
|
return;
|
|
}
|
|
this.Selection.DragDrop.Flag = 0;
|
|
this.Selection.DragDrop.Data = null;
|
|
if (this.SearchEngine.Count > 0) {
|
|
this.SearchEngine.Reset_Current();
|
|
}
|
|
if (g_mouse_button_right === e.Button) {
|
|
return;
|
|
}
|
|
if (true === this.History.Is_ExtendDocumentToPos()) {
|
|
this.Document_Undo();
|
|
}
|
|
var OldCurPage = this.CurPage;
|
|
this.CurPage = PageIndex;
|
|
if (true === editor.isStartAddShape && (docpostype_HdrFtr !== this.CurPos.Type || null !== this.HdrFtr.CurHdrFtr)) {
|
|
if (docpostype_HdrFtr !== this.CurPos.Type) {
|
|
this.CurPos.Type = docpostype_DrawingObjects;
|
|
this.Selection.Use = true;
|
|
this.Selection.Start = true;
|
|
} else {
|
|
this.Selection.Use = true;
|
|
this.Selection.Start = true;
|
|
var CurHdrFtr = this.HdrFtr.CurHdrFtr;
|
|
var DocContent = CurHdrFtr.Content;
|
|
DocContent.CurPos.Type = docpostype_DrawingObjects;
|
|
DocContent.Selection.Use = true;
|
|
DocContent.Selection.Start = true;
|
|
}
|
|
if (true != this.DrawingObjects.isPolylineAddition()) {
|
|
this.DrawingObjects.startAddShape(editor.addShapePreset);
|
|
}
|
|
this.DrawingObjects.OnMouseDown(e, X, Y, this.CurPage);
|
|
} else {
|
|
if (true === e.ShiftKey && ((docpostype_DrawingObjects !== this.CurPos.Type && !(docpostype_HdrFtr === this.CurPos.Type && this.HdrFtr.CurHdrFtr && this.HdrFtr.CurHdrFtr.Content.CurPos.Type === docpostype_DrawingObjects)) || true === this.DrawingObjects.checkTextObject(X, Y, PageIndex))) {
|
|
if (true === this.Is_SelectionUse()) {
|
|
this.Selection.Start = false;
|
|
this.Selection_SetEnd(X, Y, e);
|
|
this.Document_UpdateSelectionState();
|
|
return;
|
|
} else {
|
|
var CurPara = this.Get_CurrentParagraph();
|
|
if (null !== CurPara) {
|
|
var MouseEvent = new CMouseEventHandler();
|
|
MouseEvent.ClickCount = 1;
|
|
MouseEvent.Type = g_mouse_event_type_down;
|
|
var OldX = CurPara.CurPos.X;
|
|
var OldY = CurPara.CurPos.Y;
|
|
var DrawMatrix = CurPara.Get_ParentTextTransform();
|
|
if (DrawMatrix) {
|
|
var _OldX = DrawMatrix.TransformPointX(OldX, OldY);
|
|
var _OldY = DrawMatrix.TransformPointY(OldX, OldY);
|
|
OldX = _OldX;
|
|
OldY = _OldY;
|
|
}
|
|
this.CurPage = CurPara.Get_StartPage_Absolute() + CurPara.CurPos.PagesPos;
|
|
this.Selection_SetStart(OldX, OldY, MouseEvent);
|
|
this.CurPage = PageIndex;
|
|
this.Selection_SetEnd(X, Y, e);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
this.Selection_SetStart(X, Y, e);
|
|
if (e.ClickCount <= 1 && 1 !== this.Selection.DragDrop.Flag) {
|
|
this.RecalculateCurPos();
|
|
this.Document_UpdateSelectionState();
|
|
}
|
|
}
|
|
},
|
|
OnMouseUp: function (e, X, Y, PageIndex) {
|
|
if (PageIndex < 0) {
|
|
return;
|
|
}
|
|
if (1 === this.Selection.DragDrop.Flag) {
|
|
this.Selection.DragDrop.Flag = -1;
|
|
var OldCurPage = this.CurPage;
|
|
this.CurPage = this.Selection.DragDrop.Data.PageNum;
|
|
this.Selection_SetStart(this.Selection.DragDrop.Data.X, this.Selection.DragDrop.Data.Y, e);
|
|
this.Selection.DragDrop.Flag = 0;
|
|
this.Selection.DragDrop.Data = null;
|
|
}
|
|
if (g_mouse_button_right === e.Button) {
|
|
if (true === this.Selection.Start) {
|
|
return;
|
|
}
|
|
var ConvertedPos = this.DrawingDocument.ConvertCoordsToCursorWR(X, Y, PageIndex);
|
|
var X_abs = ConvertedPos.X;
|
|
var Y_abs = ConvertedPos.Y;
|
|
if (true === this.DrawingDocument.IsCursorInTableCur(X, Y, PageIndex)) {
|
|
var Table = this.DrawingDocument.TableOutlineDr.TableOutline.Table;
|
|
Table.Select_All();
|
|
Table.Document_SetThisElementCurrent(false);
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
editor.sync_ContextMenuCallback({
|
|
Type: c_oAscContextMenuTypes.Common,
|
|
X_abs: X_abs,
|
|
Y_abs: Y_abs
|
|
});
|
|
return;
|
|
}
|
|
var pFlowTable = this.DrawingObjects.getTableByXY(X, Y, PageIndex, this);
|
|
var nInDrawing = this.DrawingObjects.isPointInDrawingObjects(X, Y, PageIndex, this);
|
|
if (docpostype_HdrFtr != this.CurPos.Type && -1 === nInDrawing && null === pFlowTable) {
|
|
var PageMetrics = this.Get_PageContentStartPos(this.CurPage, this.Pages[this.CurPage].Pos);
|
|
if (Y <= PageMetrics.Y) {
|
|
editor.sync_ContextMenuCallback({
|
|
Type: c_oAscContextMenuTypes.ChangeHdrFtr,
|
|
X_abs: X_abs,
|
|
Y_abs: Y_abs,
|
|
Header: true,
|
|
PageNum: PageIndex
|
|
});
|
|
return;
|
|
} else {
|
|
if (Y > PageMetrics.YLimit) {
|
|
editor.sync_ContextMenuCallback({
|
|
Type: c_oAscContextMenuTypes.ChangeHdrFtr,
|
|
X_abs: X_abs,
|
|
Y_abs: Y_abs,
|
|
Header: false,
|
|
PageNum: PageIndex
|
|
});
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
if (false === this.Selection_Check(X, Y, PageIndex, undefined)) {
|
|
this.CurPage = PageIndex;
|
|
var MouseEvent_new = {
|
|
ClickCount: 1,
|
|
Type: g_mouse_event_type_down,
|
|
CtrlKey: false,
|
|
Button: g_mouse_button_right
|
|
};
|
|
this.Selection_SetStart(X, Y, MouseEvent_new);
|
|
MouseEvent_new.Type = g_mouse_event_type_up;
|
|
this.Selection_SetEnd(X, Y, MouseEvent_new);
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateRulersState();
|
|
this.Document_UpdateInterfaceState();
|
|
}
|
|
editor.sync_ContextMenuCallback({
|
|
Type: c_oAscContextMenuTypes.Common,
|
|
X_abs: X_abs,
|
|
Y_abs: Y_abs
|
|
});
|
|
this.private_UpdateCursorXY(true, true);
|
|
return;
|
|
} else {
|
|
if (g_mouse_button_left === e.Button) {
|
|
if (true === this.Comments.Is_Use()) {
|
|
var Type = (docpostype_HdrFtr === this.CurPos.Type ? comment_type_HdrFtr : comment_type_Common);
|
|
var Comment = this.Comments.Get_ByXY(PageIndex, X, Y, Type);
|
|
if (null != Comment) {
|
|
var Comment_PageNum = Comment.m_oStartInfo.PageNum;
|
|
var Comment_Y = Comment.m_oStartInfo.Y;
|
|
var Comment_X = this.Get_PageLimits(PageIndex).XLimit;
|
|
var Para = g_oTableId.Get_ById(Comment.StartId);
|
|
var TextTransform = Para.Get_ParentTextTransform();
|
|
if (TextTransform) {
|
|
Comment_Y = TextTransform.TransformPointY(Comment.m_oStartInfo.X, Comment.m_oStartInfo.Y);
|
|
}
|
|
var Coords = this.DrawingDocument.ConvertCoordsToCursorWR(Comment_X, Comment_Y, Comment_PageNum);
|
|
this.Select_Comment(Comment.Get_Id(), false);
|
|
editor.sync_ShowComment(Comment.Get_Id(), Coords.X, Coords.Y);
|
|
} else {
|
|
this.Select_Comment(null, false);
|
|
editor.sync_HideComment();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (true === this.Selection.Start) {
|
|
this.CurPage = PageIndex;
|
|
this.Selection.Start = false;
|
|
this.Selection_SetEnd(X, Y, e);
|
|
this.Document_UpdateSelectionState();
|
|
if (c_oAscFormatPainterState.kOff !== editor.isPaintFormat) {
|
|
if (false === this.Document_Is_SelectionLocked(changestype_Paragraph_Content)) {
|
|
this.Create_NewHistoryPoint(historydescription_Document_FormatPasteHotKey2);
|
|
this.Document_Format_Paste();
|
|
}
|
|
if (c_oAscFormatPainterState.kOn === editor.isPaintFormat) {
|
|
editor.sync_PaintFormatCallback(c_oAscFormatPainterState.kOff);
|
|
}
|
|
}
|
|
if (true === editor.isMarkerFormat && true === this.Is_TextSelectionUse()) {
|
|
if (false === this.Document_Is_SelectionLocked(changestype_Paragraph_Content)) {
|
|
this.Create_NewHistoryPoint(historydescription_Document_SetTextHighlight2);
|
|
var ParaItem = null;
|
|
if (this.HighlightColor != highlight_None) {
|
|
var TextPr = this.Get_Paragraph_TextPr();
|
|
if ("undefined" === typeof(TextPr.HighLight) || null === TextPr.HighLight || highlight_None === TextPr.HighLight || this.HighlightColor.r != TextPr.HighLight.r || this.HighlightColor.g != TextPr.HighLight.g || this.HighlightColor.b != TextPr.HighLight.b) {
|
|
ParaItem = new ParaTextPr({
|
|
HighLight: this.HighlightColor
|
|
});
|
|
} else {
|
|
ParaItem = new ParaTextPr({
|
|
HighLight: highlight_None
|
|
});
|
|
}
|
|
} else {
|
|
ParaItem = new ParaTextPr({
|
|
HighLight: this.HighlightColor
|
|
});
|
|
}
|
|
this.Paragraph_Add(ParaItem);
|
|
this.Cursor_MoveAt(X, Y, false);
|
|
this.Document_UpdateSelectionState();
|
|
editor.sync_MarkerFormatCallback(true);
|
|
}
|
|
}
|
|
}
|
|
this.private_UpdateCursorXY(true, true);
|
|
},
|
|
OnMouseMove: function (e, X, Y, PageIndex) {
|
|
if (PageIndex < 0) {
|
|
return;
|
|
}
|
|
this.Update_CursorType(X, Y, PageIndex, e);
|
|
if (1 === this.Selection.DragDrop.Flag) {
|
|
if (Math.abs(this.Selection.DragDrop.Data.X - X) > 0.001 || Math.abs(this.Selection.DragDrop.Data.Y - Y) > 0.001) {
|
|
this.Selection.DragDrop.Flag = 0;
|
|
this.Selection.DragDrop.Data = null;
|
|
editor.sync_MouseMoveStartCallback();
|
|
editor.sync_MouseMoveCallback(new CMouseMoveData());
|
|
editor.sync_MouseMoveEndCallback();
|
|
this.DrawingDocument.StartTrackText();
|
|
}
|
|
return;
|
|
}
|
|
if (true === this.Selection.Use && true === this.Selection.Start) {
|
|
this.CurPage = PageIndex;
|
|
this.Selection_SetEnd(X, Y, e);
|
|
this.Document_UpdateSelectionState();
|
|
}
|
|
},
|
|
Get_Numbering: function () {
|
|
return this.Numbering;
|
|
},
|
|
Internal_GetNumInfo: function (ParaId, NumPr) {
|
|
this.NumInfoCounter++;
|
|
var NumInfo = new Array(NumPr.Lvl + 1);
|
|
for (var Index = 0; Index < NumInfo.length; Index++) {
|
|
NumInfo[Index] = 0;
|
|
}
|
|
var Restart = [-1, -1, -1, -1, -1, -1, -1, -1, -1];
|
|
var AbstractNum = null;
|
|
if ("undefined" != typeof(this.Numbering) && null != (AbstractNum = this.Numbering.Get_AbstractNum(NumPr.NumId))) {
|
|
for (var LvlIndex = 0; LvlIndex < 9; LvlIndex++) {
|
|
Restart[LvlIndex] = AbstractNum.Lvl[LvlIndex].Restart;
|
|
}
|
|
}
|
|
var PrevLvl = -1;
|
|
for (var Index = 0; Index < this.Content.length; Index++) {
|
|
var Item = this.Content[Index];
|
|
var ItemNumPr = null;
|
|
if (type_Paragraph == Item.GetType() && undefined != (ItemNumPr = Item.Numbering_Get()) && ItemNumPr.NumId == NumPr.NumId && (undefined === Item.Get_SectionPr() || true !== Item.IsEmpty())) {
|
|
if (-1 != PrevLvl && PrevLvl < ItemNumPr.Lvl) {
|
|
for (var Index2 = PrevLvl + 1; Index2 < 9; Index2++) {
|
|
if (0 != Restart[Index2] && (-1 == Restart[Index2] || PrevLvl <= (Restart[Index2] - 1))) {
|
|
NumInfo[Index2] = 0;
|
|
}
|
|
}
|
|
}
|
|
if ("undefined" == typeof(NumInfo[ItemNumPr.Lvl])) {
|
|
NumInfo[ItemNumPr.Lvl] = 0;
|
|
} else {
|
|
NumInfo[ItemNumPr.Lvl]++;
|
|
}
|
|
for (var Index2 = ItemNumPr.Lvl - 1; Index2 >= 0; Index2--) {
|
|
if ("undefined" == typeof(NumInfo[Index2]) || 0 == NumInfo[Index2]) {
|
|
NumInfo[Index2] = 1;
|
|
}
|
|
}
|
|
PrevLvl = ItemNumPr.Lvl;
|
|
}
|
|
if (ParaId == Item.GetId()) {
|
|
break;
|
|
}
|
|
}
|
|
return NumInfo;
|
|
},
|
|
Get_Styles: function () {
|
|
return this.Styles;
|
|
},
|
|
Get_TableStyleForPara: function () {
|
|
return null;
|
|
},
|
|
Get_ShapeStyleForPara: function () {
|
|
return null;
|
|
},
|
|
Get_TextBackGroundColor: function () {
|
|
return undefined;
|
|
},
|
|
Content_GetPrev: function (Id) {
|
|
var Index = this.Internal_Content_Find(Id);
|
|
if (Index > 0) {
|
|
return this.Content[Index - 1];
|
|
}
|
|
return null;
|
|
},
|
|
Content_GetNext: function (Id) {
|
|
var Index = this.Internal_Content_Find(Id);
|
|
if (-1 != Index && Index < this.Content.length - 1) {
|
|
return this.Content[Index + 1];
|
|
}
|
|
return null;
|
|
},
|
|
Internal_Content_Find: function (Id) {
|
|
return 0;
|
|
for (var Index = 0; Index < this.Content.length; Index++) {
|
|
if (this.Content[Index].GetId() === Id) {
|
|
return Index;
|
|
}
|
|
}
|
|
return -1;
|
|
},
|
|
Select_DrawingObject: function (Id) {
|
|
this.Selection_Remove();
|
|
this.DrawingDocument.TargetEnd();
|
|
this.DrawingDocument.SetCurrentPage(this.CurPage);
|
|
this.Selection.Start = false;
|
|
this.Selection.Use = true;
|
|
this.CurPos.Type = docpostype_DrawingObjects;
|
|
this.DrawingObjects.selectById(Id, this.CurPage);
|
|
this.Document_UpdateInterfaceState();
|
|
this.Document_UpdateSelectionState();
|
|
},
|
|
Get_NearestPos: function (PageNum, X, Y, bAnchor, Drawing) {
|
|
if (undefined === bAnchor) {
|
|
bAnchor = false;
|
|
}
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
return this.HdrFtr.Get_NearestPos(PageNum, X, Y, bAnchor, Drawing);
|
|
}
|
|
var bInText = (null === this.Is_InText(X, Y, PageNum) ? false : true);
|
|
var nInDrawing = this.DrawingObjects.isPointInDrawingObjects(X, Y, PageNum, this);
|
|
if (true != bAnchor) {
|
|
var NearestPos = this.DrawingObjects.getNearestPos(X, Y, PageNum, Drawing);
|
|
if ((nInDrawing === DRAWING_ARRAY_TYPE_BEFORE || nInDrawing === DRAWING_ARRAY_TYPE_INLINE || (false === bInText && nInDrawing >= 0)) && null != NearestPos) {
|
|
return NearestPos;
|
|
}
|
|
}
|
|
var ContentPos = this.Internal_GetContentPosByXY(X, Y, PageNum);
|
|
if (true === bAnchor && ContentPos > 0 && PageNum > 0 && ContentPos === this.Pages[PageNum].Pos && ContentPos === this.Pages[PageNum - 1].EndPos && this.Pages[PageNum].EndPos > this.Pages[PageNum].Pos && type_Paragraph === this.Content[ContentPos].GetType() && true === this.Content[ContentPos].Is_ContentOnFirstPage()) {
|
|
ContentPos++;
|
|
}
|
|
return this.Content[ContentPos].Get_NearestPos(PageNum, X, Y, bAnchor, Drawing);
|
|
},
|
|
Internal_Content_Add: function (Position, NewObject) {
|
|
if (Position < 0 || Position > this.Content.length) {
|
|
return;
|
|
}
|
|
var PrevObj = this.Content[Position - 1];
|
|
var NextObj = this.Content[Position];
|
|
if ("undefined" == typeof(PrevObj)) {
|
|
PrevObj = null;
|
|
}
|
|
if ("undefined" == typeof(NextObj)) {
|
|
NextObj = null;
|
|
}
|
|
this.History.Add(this, {
|
|
Type: historyitem_Document_AddItem,
|
|
Pos: Position,
|
|
Item: NewObject
|
|
});
|
|
this.Content.splice(Position, 0, NewObject);
|
|
NewObject.Set_Parent(this);
|
|
NewObject.Set_DocumentNext(NextObj);
|
|
NewObject.Set_DocumentPrev(PrevObj);
|
|
if (null != PrevObj) {
|
|
PrevObj.Set_DocumentNext(NewObject);
|
|
}
|
|
if (null != NextObj) {
|
|
NextObj.Set_DocumentPrev(NewObject);
|
|
}
|
|
this.SectionsInfo.Update_OnAdd(Position, [NewObject]);
|
|
this.Check_SectionLastParagraph();
|
|
if (type_Table == this.Content[this.Content.length - 1].GetType()) {
|
|
this.Internal_Content_Add(this.Content.length, new Paragraph(this.DrawingDocument, this, 0, 0, 0, 0, 0));
|
|
}
|
|
this.protected_ReindexContent(Position);
|
|
},
|
|
Internal_Content_Remove: function (Position, Count) {
|
|
var ChangePos = -1;
|
|
if (Position < 0 || Position >= this.Content.length || Count <= 0) {
|
|
return -1;
|
|
}
|
|
var PrevObj = this.Content[Position - 1];
|
|
var NextObj = this.Content[Position + Count];
|
|
if ("undefined" == typeof(PrevObj)) {
|
|
PrevObj = null;
|
|
}
|
|
if ("undefined" == typeof(NextObj)) {
|
|
NextObj = null;
|
|
}
|
|
for (var Index = 0; Index < Count; Index++) {
|
|
this.Content[Position + Index].PreDelete();
|
|
}
|
|
this.History.Add(this, {
|
|
Type: historyitem_Document_RemoveItem,
|
|
Pos: Position,
|
|
Items: this.Content.slice(Position, Position + Count)
|
|
});
|
|
this.Content.splice(Position, Count);
|
|
if (null != PrevObj) {
|
|
PrevObj.Set_DocumentNext(NextObj);
|
|
}
|
|
if (null != NextObj) {
|
|
NextObj.Set_DocumentPrev(PrevObj);
|
|
}
|
|
if (type_Table == this.Content[this.Content.length - 1].GetType()) {
|
|
this.Internal_Content_Add(this.Content.length, new Paragraph(this.DrawingDocument, this, 0, 0, 0, 0, 0));
|
|
}
|
|
this.SectionsInfo.Update_OnRemove(Position, Count);
|
|
this.Check_SectionLastParagraph();
|
|
this.Check_FramePrLastParagraph();
|
|
this.protected_ReindexContent(Position);
|
|
return ChangePos;
|
|
},
|
|
Clear_ContentChanges: function () {
|
|
this.m_oContentChanges.Clear();
|
|
},
|
|
Add_ContentChanges: function (Changes) {
|
|
this.m_oContentChanges.Add(Changes);
|
|
},
|
|
Refresh_ContentChanges: function () {
|
|
this.m_oContentChanges.Refresh();
|
|
},
|
|
Document_AddPageNum: function (AlignV, AlignH) {
|
|
if (AlignV >= 0) {
|
|
var PageIndex = this.CurPage;
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
PageIndex = this.HdrFtr.Get_CurPage();
|
|
}
|
|
if (PageIndex < 0) {
|
|
PageIndex = this.CurPage;
|
|
}
|
|
this.Create_HdrFtrWidthPageNum(PageIndex, AlignV, AlignH);
|
|
} else {
|
|
this.Paragraph_Add(new ParaPageNum());
|
|
}
|
|
this.Document_UpdateInterfaceState();
|
|
},
|
|
Document_SetHdrFtrFirstPage: function (Value) {
|
|
var CurHdrFtr = this.HdrFtr.CurHdrFtr;
|
|
if (null === CurHdrFtr || -1 === CurHdrFtr.RecalcInfo.CurPage) {
|
|
return;
|
|
}
|
|
var CurPage = CurHdrFtr.RecalcInfo.CurPage;
|
|
var Index = this.Pages[CurPage].Pos;
|
|
var SectPr = this.SectionsInfo.Get_SectPr(Index).SectPr;
|
|
SectPr.Set_TitlePage(Value);
|
|
if (true === Value) {
|
|
var FirstSectPr = this.SectionsInfo.Get_SectPr2(0).SectPr;
|
|
var FirstHeader = FirstSectPr.Get_Header_First();
|
|
var FirstFooter = FirstSectPr.Get_Footer_First();
|
|
if (null === FirstHeader) {
|
|
var Header = new CHeaderFooter(this.HdrFtr, this, this.DrawingDocument, hdrftr_Header);
|
|
FirstSectPr.Set_Header_First(Header);
|
|
this.HdrFtr.Set_CurHdrFtr(Header);
|
|
} else {
|
|
this.HdrFtr.Set_CurHdrFtr(FirstHeader);
|
|
}
|
|
if (null === FirstFooter) {
|
|
var Footer = new CHeaderFooter(this.HdrFtr, this, this.DrawingDocument, hdrftr_Footer);
|
|
FirstSectPr.Set_Footer_First(Footer);
|
|
}
|
|
}
|
|
this.HdrFtr.CurHdrFtr.Content.Cursor_MoveToStartPos();
|
|
this.Recalculate();
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
},
|
|
Document_SetHdrFtrEvenAndOddHeaders: function (Value) {
|
|
this.Set_DocumentEvenAndOddHeaders(Value);
|
|
var FirstSectPr;
|
|
if (true === Value) {
|
|
FirstSectPr = this.SectionsInfo.Get_SectPr2(0).SectPr;
|
|
if (null === FirstSectPr.Get_Header_Even()) {
|
|
var Header = new CHeaderFooter(this.HdrFtr, this, this.DrawingDocument, hdrftr_Header);
|
|
FirstSectPr.Set_Header_Even(Header);
|
|
}
|
|
if (null === FirstSectPr.Get_Footer_Even()) {
|
|
var Footer = new CHeaderFooter(this.HdrFtr, this, this.DrawingDocument, hdrftr_Footer);
|
|
FirstSectPr.Set_Footer_Even(Footer);
|
|
}
|
|
} else {
|
|
FirstSectPr = this.SectionsInfo.Get_SectPr2(0).SectPr;
|
|
}
|
|
if (null !== FirstSectPr.Get_Header_First() && true === FirstSectPr.TitlePage) {
|
|
this.HdrFtr.Set_CurHdrFtr(FirstSectPr.Get_Header_First());
|
|
} else {
|
|
this.HdrFtr.Set_CurHdrFtr(FirstSectPr.Get_Header_Default());
|
|
}
|
|
this.Recalculate();
|
|
if (null !== this.HdrFtr.CurHdrFtr) {
|
|
this.HdrFtr.CurHdrFtr.Content.Cursor_MoveToStartPos();
|
|
}
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
},
|
|
Document_SetHdrFtrDistance: function (Value) {
|
|
var CurHdrFtr = this.HdrFtr.CurHdrFtr;
|
|
if (null === CurHdrFtr) {
|
|
return;
|
|
}
|
|
var CurPage = CurHdrFtr.RecalcInfo.CurPage;
|
|
if (-1 === CurPage) {
|
|
return;
|
|
}
|
|
var Index = this.Pages[CurPage].Pos;
|
|
var SectPr = this.SectionsInfo.Get_SectPr(Index).SectPr;
|
|
if (hdrftr_Header === CurHdrFtr.Type) {
|
|
SectPr.Set_PageMargins_Header(Value);
|
|
} else {
|
|
SectPr.Set_PageMargins_Footer(Value);
|
|
}
|
|
this.Recalculate();
|
|
this.Document_UpdateRulersState();
|
|
this.Document_UpdateInterfaceState();
|
|
},
|
|
Document_SetHdrFtrBounds: function (Y0, Y1) {
|
|
var CurHdrFtr = this.HdrFtr.CurHdrFtr;
|
|
if (null === CurHdrFtr) {
|
|
return;
|
|
}
|
|
var CurPage = CurHdrFtr.RecalcInfo.CurPage;
|
|
if (-1 === CurPage) {
|
|
return;
|
|
}
|
|
var Index = this.Pages[CurPage].Pos;
|
|
var SectPr = this.SectionsInfo.Get_SectPr(Index).SectPr;
|
|
var Bounds = CurHdrFtr.Get_Bounds();
|
|
if (hdrftr_Header === CurHdrFtr.Type) {
|
|
if (null !== Y0) {
|
|
SectPr.Set_PageMargins_Header(Y0);
|
|
}
|
|
if (null !== Y1) {
|
|
SectPr.Set_PageMargins(undefined, Y1, undefined, undefined);
|
|
}
|
|
} else {
|
|
if (null !== Y0) {
|
|
var H = Bounds.Bottom - Bounds.Top;
|
|
var _Y1 = Y0 + H;
|
|
SectPr.Set_PageMargins_Footer(SectPr.Get_PageHeight() - _Y1);
|
|
}
|
|
}
|
|
this.Recalculate();
|
|
this.Document_UpdateRulersState();
|
|
this.Document_UpdateInterfaceState();
|
|
},
|
|
Document_SetHdrFtrLink: function (bLinkToPrevious) {
|
|
var CurHdrFtr = this.HdrFtr.CurHdrFtr;
|
|
if (docpostype_HdrFtr !== this.CurPos.Type || null === CurHdrFtr || -1 === CurHdrFtr.RecalcInfo.CurPage) {
|
|
return;
|
|
}
|
|
var PageIndex = CurHdrFtr.RecalcInfo.CurPage;
|
|
var Index = this.Pages[PageIndex].Pos;
|
|
var SectPr = this.SectionsInfo.Get_SectPr(Index).SectPr;
|
|
if (SectPr === this.SectionsInfo.Get_SectPr2(0).SectPr) {
|
|
return;
|
|
}
|
|
var SectionPageInfo = this.Get_SectionPageNumInfo(PageIndex);
|
|
var bFirst = (true === SectionPageInfo.bFirst && true === SectPr.Get_TitlePage() ? true : false);
|
|
var bEven = (true === SectionPageInfo.bEven && true === EvenAndOddHeaders ? true : false);
|
|
var bHeader = (hdrftr_Header === CurHdrFtr.Type ? true : false);
|
|
var _CurHdrFtr = SectPr.Get_HdrFtr(bHeader, bFirst, bEven);
|
|
if (true === bLinkToPrevious) {
|
|
if (null === _CurHdrFtr) {
|
|
return;
|
|
}
|
|
_CurHdrFtr.Selection_Remove();
|
|
SectPr.Set_HdrFtr(bHeader, bFirst, bEven, null);
|
|
var HdrFtr = this.Get_SectionHdrFtr(PageIndex, bFirst, bEven);
|
|
if (true === bHeader) {
|
|
if (null === HdrFtr.Header) {
|
|
CurHdrFtr = this.Create_SectionHdrFtr(hdrftr_Header, PageIndex);
|
|
} else {
|
|
CurHdrFtr = HdrFtr.Header;
|
|
}
|
|
} else {
|
|
if (null === HdrFtr.Footer) {
|
|
CurHdrFtr = this.Create_SectionHdrFtr(hdrftr_Footer, PageIndex);
|
|
} else {
|
|
CurHdrFtr = HdrFtr.Footer;
|
|
}
|
|
}
|
|
this.HdrFtr.Set_CurHdrFtr(CurHdrFtr);
|
|
this.HdrFtr.CurHdrFtr.Cursor_MoveToStartPos(false);
|
|
} else {
|
|
if (null !== _CurHdrFtr) {
|
|
return;
|
|
}
|
|
var NewHdrFtr = CurHdrFtr.Copy();
|
|
SectPr.Set_HdrFtr(bHeader, bFirst, bEven, NewHdrFtr);
|
|
this.HdrFtr.Set_CurHdrFtr(NewHdrFtr);
|
|
this.HdrFtr.CurHdrFtr.Cursor_MoveToStartPos(false);
|
|
}
|
|
this.Recalculate();
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
},
|
|
Document_Format_Copy: function () {
|
|
this.CopyTextPr = this.Get_Paragraph_TextPr_Copy();
|
|
this.CopyParaPr = this.Get_Paragraph_ParaPr_Copy();
|
|
},
|
|
Document_End_HdrFtrEditing: function () {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
var CurHdrFtr = this.HdrFtr.CurHdrFtr;
|
|
if (null == CurHdrFtr) {
|
|
return;
|
|
}
|
|
CurHdrFtr.Selection_Remove();
|
|
this.CurPos.Type = docpostype_Content;
|
|
if (hdrftr_Header == CurHdrFtr.Type) {
|
|
this.Cursor_MoveAt(0, 0, false);
|
|
} else {
|
|
this.Cursor_MoveAt(0, 100000, false);
|
|
}
|
|
this.DrawingDocument.ClearCachePages();
|
|
this.DrawingDocument.FirePaint();
|
|
this.Document_UpdateRulersState();
|
|
this.Document_UpdateInterfaceState();
|
|
this.Document_UpdateSelectionState();
|
|
}
|
|
},
|
|
Document_Format_Paste: function () {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
this.HdrFtr.Paragraph_Format_Paste(this.CopyTextPr, this.CopyParaPr, false);
|
|
} else {
|
|
if (docpostype_DrawingObjects == this.CurPos.Type) {
|
|
this.DrawingObjects.paragraphFormatPaste(this.CopyTextPr, this.CopyParaPr, false);
|
|
} else {
|
|
if (true === this.Selection.Use) {
|
|
switch (this.Selection.Flag) {
|
|
case selectionflag_Numbering:
|
|
return;
|
|
case selectionflag_Common:
|
|
var Start = this.Selection.StartPos;
|
|
var End = this.Selection.EndPos;
|
|
if (Start > End) {
|
|
Start = this.Selection.EndPos;
|
|
End = this.Selection.StartPos;
|
|
}
|
|
for (var Pos = Start; Pos <= End; Pos++) {
|
|
this.Content[Pos].Paragraph_Format_Paste(this.CopyTextPr, this.CopyParaPr, (Start === End ? false : true));
|
|
}
|
|
this.ContentLastChangePos = Math.max(Start - 1, 0);
|
|
this.Recalculate();
|
|
break;
|
|
}
|
|
} else {
|
|
this.Content[this.CurPos.ContentPos].Paragraph_Format_Paste(this.CopyTextPr, this.CopyParaPr, true);
|
|
this.ContentLastChangePos = this.CurPos.ContentPos - 1;
|
|
this.Recalculate();
|
|
}
|
|
}
|
|
}
|
|
this.Document_UpdateInterfaceState();
|
|
this.Document_UpdateSelectionState();
|
|
},
|
|
Is_TableCellContent: function () {
|
|
return false;
|
|
},
|
|
Is_TopDocument: function (bReturnTopDocument) {
|
|
if (true === bReturnTopDocument) {
|
|
return this;
|
|
}
|
|
return true;
|
|
},
|
|
Is_InTable: function (bReturnTopTable) {
|
|
if (true === bReturnTopTable) {
|
|
return null;
|
|
}
|
|
return false;
|
|
},
|
|
Is_DrawingShape: function () {
|
|
return false;
|
|
},
|
|
Is_HdrFtr: function (bReturnHdrFtr) {
|
|
if (true === bReturnHdrFtr) {
|
|
return null;
|
|
}
|
|
return false;
|
|
},
|
|
Is_SelectionUse: function () {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
return this.HdrFtr.Is_SelectionUse();
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
return this.DrawingObjects.isSelectionUse();
|
|
} else {
|
|
if (true === this.Selection.Use) {
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
}
|
|
},
|
|
Is_TextSelectionUse: function () {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
return this.HdrFtr.Is_TextSelectionUse();
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
return this.DrawingObjects.isTextSelectionUse();
|
|
} else {
|
|
return this.Selection.Use;
|
|
}
|
|
}
|
|
},
|
|
Get_CurPosXY: function () {
|
|
var TempXY;
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
TempXY = this.HdrFtr.Get_CurPosXY();
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
TempXY = this.DrawingObjects.getCurPosXY();
|
|
} else {
|
|
if (true === this.Selection.Use) {
|
|
if (selectionflag_Numbering === this.Selection.Flag) {
|
|
TempXY = {
|
|
X: 0,
|
|
Y: 0
|
|
};
|
|
} else {
|
|
TempXY = this.Content[this.Selection.EndPos].Get_CurPosXY();
|
|
}
|
|
} else {
|
|
TempXY = this.Content[this.CurPos.ContentPos].Get_CurPosXY();
|
|
}
|
|
}
|
|
}
|
|
this.Internal_CheckCurPage();
|
|
return {
|
|
X: TempXY.X,
|
|
Y: TempXY.Y,
|
|
PageNum: this.CurPage
|
|
};
|
|
},
|
|
Get_SelectedText: function (bClearText) {
|
|
if ("undefined" === typeof(bClearText)) {
|
|
bClearText = false;
|
|
}
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
return this.HdrFtr.Get_SelectedText(bClearText);
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
return this.DrawingObjects.getSelectedText(bClearText);
|
|
} else {
|
|
if (docpostype_Content == this.CurPos.Type && ((true === this.Selection.Use && selectionflag_Common === this.Selection.Flag) || false === this.Selection.Use)) {
|
|
if (true === bClearText && this.Selection.StartPos === this.Selection.EndPos) {
|
|
var Pos = (true == this.Selection.Use ? this.Selection.StartPos : this.CurPos.ContentPos);
|
|
return this.Content[Pos].Get_SelectedText(true);
|
|
} else {
|
|
if (false === bClearText) {
|
|
var StartPos = (true == this.Selection.Use ? Math.min(this.Selection.StartPos, this.Selection.EndPos) : this.CurPos.ContentPos);
|
|
var EndPos = (true == this.Selection.Use ? Math.max(this.Selection.StartPos, this.Selection.EndPos) : this.CurPos.ContentPos);
|
|
var ResultText = "";
|
|
for (var Index = StartPos; Index <= EndPos; Index++) {
|
|
ResultText += this.Content[Index].Get_SelectedText(false);
|
|
}
|
|
return ResultText;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return null;
|
|
},
|
|
Get_CurrentParagraph: function () {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
return this.HdrFtr.Get_CurrentParagraph();
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
return this.DrawingObjects.getCurrentParagraph();
|
|
} else {
|
|
if (true === this.Selection.Use) {
|
|
return null;
|
|
}
|
|
if (this.CurPos.ContentPos < 0) {
|
|
return null;
|
|
}
|
|
if (docpostype_Content == this.CurPos.Type && ((true === this.Selection.Use && this.Selection.StartPos == this.Selection.EndPos && type_Table == this.Content[this.Selection.StartPos].GetType()) || (false == this.Selection.Use && type_Table == this.Content[this.CurPos.ContentPos].GetType()))) {
|
|
if (true == this.Selection.Use) {
|
|
return this.Content[this.Selection.StartPos].Get_CurrentParagraph();
|
|
} else {
|
|
return this.Content[this.CurPos.ContentPos].Get_CurrentParagraph();
|
|
}
|
|
} else {
|
|
if (type_Paragraph == this.Content[this.CurPos.ContentPos].GetType()) {
|
|
return this.Content[this.CurPos.ContentPos];
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
}
|
|
},
|
|
Get_SelectedElementsInfo: function () {
|
|
var Info = new CSelectedElementsInfo();
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
this.HdrFtr.Get_SelectedElementsInfo(Info);
|
|
} else {
|
|
if (docpostype_DrawingObjects == this.CurPos.Type) {
|
|
this.DrawingObjects.getSelectedElementsInfo(Info);
|
|
} else {
|
|
if (docpostype_Content == this.CurPos.Type) {
|
|
if (true === this.Selection.Use) {
|
|
if (selectionflag_Numbering === this.Selection.Flag) {
|
|
if (! (null == this.Selection.Data || this.Selection.Data.length <= 0)) {
|
|
var CurPara = this.Content[this.Selection.Data[0]];
|
|
for (var Index = 0; Index < this.Selection.Data.length; Index++) {
|
|
if (this.CurPos.ContentPos === this.Selection.Data[Index]) {
|
|
CurPara = this.Content[this.Selection.Data[Index]];
|
|
}
|
|
}
|
|
CurPara.Get_SelectedElementsInfo(Info);
|
|
}
|
|
} else {
|
|
if (this.Selection.StartPos != this.Selection.EndPos) {
|
|
Info.Set_MixedSelection();
|
|
} else {
|
|
this.Content[this.Selection.StartPos].Get_SelectedElementsInfo(Info);
|
|
}
|
|
}
|
|
} else {
|
|
this.Content[this.CurPos.ContentPos].Get_SelectedElementsInfo(Info);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return Info;
|
|
},
|
|
Table_AddRow: function (bBefore) {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
this.HdrFtr.Table_AddRow(bBefore);
|
|
this.Recalculate();
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
this.DrawingObjects.tableAddRow(bBefore);
|
|
} else {
|
|
if (docpostype_Content == this.CurPos.Type && ((true === this.Selection.Use && this.Selection.StartPos == this.Selection.EndPos && type_Table == this.Content[this.Selection.StartPos].GetType()) || (false == this.Selection.Use && type_Table == this.Content[this.CurPos.ContentPos].GetType()))) {
|
|
var Pos = 0;
|
|
if (true === this.Selection.Use) {
|
|
Pos = this.Selection.StartPos;
|
|
} else {
|
|
Pos = this.CurPos.ContentPos;
|
|
}
|
|
this.Content[Pos].Row_Add(bBefore);
|
|
if (false === this.Selection.Use && true === this.Content[Pos].Is_SelectionUse()) {
|
|
this.Selection.Use = true;
|
|
this.Selection.StartPos = Pos;
|
|
this.Selection.EndPos = Pos;
|
|
}
|
|
this.ContentLastChangePos = Pos;
|
|
this.Recalculate();
|
|
}
|
|
}
|
|
}
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
},
|
|
Table_AddCol: function (bBefore) {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
this.HdrFtr.Table_AddCol(bBefore);
|
|
this.Recalculate();
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
this.DrawingObjects.tableAddCol(bBefore);
|
|
} else {
|
|
if (docpostype_Content == this.CurPos.Type && ((true === this.Selection.Use && this.Selection.StartPos == this.Selection.EndPos && type_Table == this.Content[this.Selection.StartPos].GetType()) || (false == this.Selection.Use && type_Table == this.Content[this.CurPos.ContentPos].GetType()))) {
|
|
var Pos = 0;
|
|
if (true === this.Selection.Use) {
|
|
Pos = this.Selection.StartPos;
|
|
} else {
|
|
Pos = this.CurPos.ContentPos;
|
|
}
|
|
this.Content[Pos].Col_Add(bBefore);
|
|
if (false === this.Selection.Use && true === this.Content[Pos].Is_SelectionUse()) {
|
|
this.Selection.Use = true;
|
|
this.Selection.StartPos = Pos;
|
|
this.Selection.EndPos = Pos;
|
|
}
|
|
this.ContentLastChangePos = Pos;
|
|
this.Recalculate();
|
|
}
|
|
}
|
|
}
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
},
|
|
Table_RemoveRow: function () {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
this.HdrFtr.Table_RemoveRow();
|
|
this.Recalculate();
|
|
} else {
|
|
if (docpostype_DrawingObjects == this.CurPos.Type) {
|
|
this.DrawingObjects.tableRemoveRow();
|
|
} else {
|
|
if (docpostype_Content == this.CurPos.Type && ((true === this.Selection.Use && this.Selection.StartPos == this.Selection.EndPos && type_Table == this.Content[this.Selection.StartPos].GetType()) || (false == this.Selection.Use && type_Table == this.Content[this.CurPos.ContentPos].GetType()))) {
|
|
var Pos = 0;
|
|
if (true === this.Selection.Use) {
|
|
Pos = this.Selection.StartPos;
|
|
} else {
|
|
Pos = this.CurPos.ContentPos;
|
|
}
|
|
if (false === this.Content[Pos].Row_Remove()) {
|
|
this.Table_RemoveTable();
|
|
} else {
|
|
this.ContentLastChangePos = Pos;
|
|
this.Recalculate();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
},
|
|
Table_RemoveCol: function () {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
this.HdrFtr.Table_RemoveCol();
|
|
this.Recalculate();
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
this.DrawingObjects.tableRemoveCol();
|
|
} else {
|
|
if (docpostype_Content == this.CurPos.Type && ((true === this.Selection.Use && this.Selection.StartPos == this.Selection.EndPos && type_Table == this.Content[this.Selection.StartPos].GetType()) || (false == this.Selection.Use && type_Table == this.Content[this.CurPos.ContentPos].GetType()))) {
|
|
var Pos = 0;
|
|
if (true === this.Selection.Use) {
|
|
Pos = this.Selection.StartPos;
|
|
} else {
|
|
Pos = this.CurPos.ContentPos;
|
|
}
|
|
if (false === this.Content[Pos].Col_Remove()) {
|
|
this.Table_RemoveTable();
|
|
} else {
|
|
this.ContentLastChangePos = Pos;
|
|
this.Recalculate();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
},
|
|
Table_MergeCells: function () {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
this.HdrFtr.Table_MergeCells();
|
|
this.Recalculate();
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
this.DrawingObjects.tableMergeCells();
|
|
} else {
|
|
if (docpostype_Content == this.CurPos.Type && ((true === this.Selection.Use && this.Selection.StartPos == this.Selection.EndPos && type_Table == this.Content[this.Selection.StartPos].GetType()) || (false == this.Selection.Use && type_Table == this.Content[this.CurPos.ContentPos].GetType()))) {
|
|
var Pos = 0;
|
|
if (true === this.Selection.Use) {
|
|
Pos = this.Selection.StartPos;
|
|
} else {
|
|
Pos = this.CurPos.ContentPos;
|
|
}
|
|
this.Content[Pos].Cell_Merge();
|
|
this.ContentLastChangePos = Pos;
|
|
this.Recalculate();
|
|
}
|
|
}
|
|
}
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
},
|
|
Table_SplitCell: function (Cols, Rows) {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
this.HdrFtr.Table_SplitCell(Cols, Rows);
|
|
this.Recalculate();
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
this.DrawingObjects.tableSplitCell(Cols, Rows);
|
|
} else {
|
|
if (docpostype_Content == this.CurPos.Type && ((true === this.Selection.Use && this.Selection.StartPos == this.Selection.EndPos && type_Table == this.Content[this.Selection.StartPos].GetType()) || (false == this.Selection.Use && type_Table == this.Content[this.CurPos.ContentPos].GetType()))) {
|
|
var Pos = 0;
|
|
if (true === this.Selection.Use) {
|
|
Pos = this.Selection.StartPos;
|
|
} else {
|
|
Pos = this.CurPos.ContentPos;
|
|
}
|
|
this.Content[Pos].Cell_Split(Rows, Cols);
|
|
this.ContentLastChangePos = Pos;
|
|
this.Recalculate();
|
|
}
|
|
}
|
|
}
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
},
|
|
Table_RemoveTable: function () {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
this.HdrFtr.Table_RemoveTable();
|
|
this.Recalculate();
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
return this.DrawingObjects.tableRemoveTable();
|
|
} else {
|
|
if (docpostype_Content == this.CurPos.Type && ((true === this.Selection.Use && this.Selection.StartPos == this.Selection.EndPos && type_Table == this.Content[this.Selection.StartPos].GetType()) || (false == this.Selection.Use && type_Table == this.Content[this.CurPos.ContentPos].GetType()))) {
|
|
var Pos;
|
|
if (true === this.Selection.Use) {
|
|
Pos = this.Selection.StartPos;
|
|
} else {
|
|
Pos = this.CurPos.ContentPos;
|
|
}
|
|
var Table = this.Content[Pos];
|
|
if (true === Table.Is_InnerTable()) {
|
|
Table.Remove_InnerTable();
|
|
} else {
|
|
this.Selection_Remove();
|
|
Table.PreDelete();
|
|
this.Internal_Content_Remove(Pos, 1);
|
|
if (Pos >= this.Content.length - 1) {
|
|
Pos--;
|
|
}
|
|
if (Pos < 0) {
|
|
Pos = 0;
|
|
}
|
|
this.CurPos.Type = docpostype_Content;
|
|
this.CurPos.ContentPos = Pos;
|
|
this.Content[Pos].Cursor_MoveToStartPos();
|
|
this.ContentLastChangePos = Pos;
|
|
this.Recalculate();
|
|
}
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
this.Document_UpdateRulersState();
|
|
}
|
|
}
|
|
}
|
|
},
|
|
Table_Select: function (Type) {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
this.HdrFtr.Table_Select(Type);
|
|
} else {
|
|
if (docpostype_DrawingObjects == this.CurPos.Type) {
|
|
this.DrawingObjects.tableSelect(Type);
|
|
} else {
|
|
if (docpostype_Content == this.CurPos.Type && ((true === this.Selection.Use && this.Selection.StartPos == this.Selection.EndPos && type_Table == this.Content[this.Selection.StartPos].GetType()) || (false == this.Selection.Use && type_Table == this.Content[this.CurPos.ContentPos].GetType()))) {
|
|
var Pos = 0;
|
|
if (true === this.Selection.Use) {
|
|
Pos = this.Selection.StartPos;
|
|
} else {
|
|
Pos = this.CurPos.ContentPos;
|
|
}
|
|
this.Content[Pos].Table_Select(Type);
|
|
if (false === this.Selection.Use && true === this.Content[Pos].Is_SelectionUse()) {
|
|
this.Selection.Use = true;
|
|
this.Selection.StartPos = Pos;
|
|
this.Selection.EndPos = Pos;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
},
|
|
Table_CheckMerge: function () {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
return this.HdrFtr.Table_CheckMerge();
|
|
} else {
|
|
if (docpostype_DrawingObjects == this.CurPos.Type) {
|
|
return this.DrawingObjects.tableCheckMerge();
|
|
} else {
|
|
if (docpostype_Content == this.CurPos.Type && ((true === this.Selection.Use && this.Selection.StartPos == this.Selection.EndPos && type_Table == this.Content[this.Selection.StartPos].GetType()) || (false == this.Selection.Use && type_Table == this.Content[this.CurPos.ContentPos].GetType()))) {
|
|
var Pos = 0;
|
|
if (true === this.Selection.Use) {
|
|
Pos = this.Selection.StartPos;
|
|
} else {
|
|
Pos = this.CurPos.ContentPos;
|
|
}
|
|
return this.Content[Pos].Check_Merge();
|
|
}
|
|
}
|
|
}
|
|
return false;
|
|
},
|
|
Table_CheckSplit: function () {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
return this.HdrFtr.Table_CheckSplit();
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
return this.DrawingObjects.tableCheckSplit();
|
|
} else {
|
|
if (docpostype_Content == this.CurPos.Type && ((true === this.Selection.Use && this.Selection.StartPos == this.Selection.EndPos && type_Table == this.Content[this.Selection.StartPos].GetType()) || (false == this.Selection.Use && type_Table == this.Content[this.CurPos.ContentPos].GetType()))) {
|
|
var Pos = 0;
|
|
if (true === this.Selection.Use) {
|
|
Pos = this.Selection.StartPos;
|
|
} else {
|
|
Pos = this.CurPos.ContentPos;
|
|
}
|
|
return this.Content[Pos].Check_Split();
|
|
}
|
|
}
|
|
}
|
|
return false;
|
|
},
|
|
Check_TableCoincidence: function (Table) {
|
|
return false;
|
|
},
|
|
Document_CreateFontMap: function () {
|
|
var StartTime = new Date().getTime();
|
|
var FontMap = {};
|
|
this.SectionsInfo.Document_CreateFontMap(FontMap);
|
|
var CurPage = 0;
|
|
this.DrawingObjects.documentCreateFontMap(CurPage, FontMap);
|
|
var Count = this.Content.length;
|
|
for (var Index = 0; Index < Count; Index++) {
|
|
var Element = this.Content[Index];
|
|
Element.Document_CreateFontMap(FontMap);
|
|
if (Element.Pages.length > 1) {
|
|
for (var TempIndex = 1; TempIndex < Element.Pages.length - 1; TempIndex++) {
|
|
this.DrawingObjects.documentCreateFontMap(++CurPage, FontMap);
|
|
}
|
|
}
|
|
}
|
|
checkThemeFonts(FontMap, this.theme.themeElements.fontScheme);
|
|
return FontMap;
|
|
},
|
|
Document_CreateFontCharMap: function (FontCharMap) {
|
|
this.SectionsInfo.Document_CreateFontCharMap(FontCharMap);
|
|
this.DrawingObjects.documentCreateFontCharMap(FontCharMap);
|
|
var Count = this.Content.length;
|
|
for (var Index = 0; Index < Count; Index++) {
|
|
var Element = this.Content[Index];
|
|
Element.Document_CreateFontCharMap(FontCharMap);
|
|
}
|
|
},
|
|
Document_Get_AllFontNames: function () {
|
|
var AllFonts = {};
|
|
this.SectionsInfo.Document_Get_AllFontNames(AllFonts);
|
|
this.Numbering.Document_Get_AllFontNames(AllFonts);
|
|
this.Styles.Document_Get_AllFontNames(AllFonts);
|
|
this.theme.Document_Get_AllFontNames(AllFonts);
|
|
var Count = this.Content.length;
|
|
for (var Index = 0; Index < Count; Index++) {
|
|
var Element = this.Content[Index];
|
|
Element.Document_Get_AllFontNames(AllFonts);
|
|
}
|
|
checkThemeFonts(AllFonts, this.theme.themeElements.fontScheme);
|
|
return AllFonts;
|
|
},
|
|
Document_UpdateInterfaceState: function () {
|
|
if (true === this.TurnOffInterfaceEvents) {
|
|
return;
|
|
}
|
|
if (true === CollaborativeEditing.m_bGlobalLockSelection) {
|
|
return;
|
|
}
|
|
editor.sync_BeginCatchSelectedElements();
|
|
editor.ClearPropObjCallback();
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
this.Interface_Update_HdrFtrPr();
|
|
this.HdrFtr.Document_UpdateInterfaceState();
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
var drawin_objects = this.DrawingObjects;
|
|
if (drawin_objects.selection.textSelection || drawin_objects.selection.groupSelection && drawin_objects.selection.groupSelection.selection.textSelection || drawin_objects.selection.chartSelection && drawin_objects.selection.chartSelection.selection.textSelection) {
|
|
this.Interface_Update_DrawingPr();
|
|
this.DrawingObjects.documentUpdateInterfaceState();
|
|
} else {
|
|
this.DrawingObjects.documentUpdateInterfaceState();
|
|
this.Interface_Update_DrawingPr();
|
|
}
|
|
} else {
|
|
if (docpostype_Content == this.CurPos.Type && ((true === this.Selection.Use && this.Selection.StartPos == this.Selection.EndPos && type_Table == this.Content[this.Selection.StartPos].GetType()) || (false == this.Selection.Use && type_Table == this.Content[this.CurPos.ContentPos].GetType()))) {
|
|
this.Interface_Update_TablePr();
|
|
if (true == this.Selection.Use) {
|
|
this.Content[this.Selection.StartPos].Document_UpdateInterfaceState();
|
|
} else {
|
|
this.Content[this.CurPos.ContentPos].Document_UpdateInterfaceState();
|
|
}
|
|
} else {
|
|
this.Interface_Update_ParaPr();
|
|
this.Interface_Update_TextPr();
|
|
if (docpostype_Content == this.CurPos.Type && ((true === this.Selection.Use && this.Selection.StartPos == this.Selection.EndPos && type_Paragraph == this.Content[this.Selection.StartPos].GetType()) || (false == this.Selection.Use && type_Paragraph == this.Content[this.CurPos.ContentPos].GetType()))) {
|
|
if (true == this.Selection.Use) {
|
|
this.Content[this.Selection.StartPos].Document_UpdateInterfaceState();
|
|
} else {
|
|
this.Content[this.CurPos.ContentPos].Document_UpdateInterfaceState();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
editor.sync_EndCatchSelectedElements();
|
|
this.Document_UpdateUndoRedoState();
|
|
this.Document_UpdateCanAddHyperlinkState();
|
|
this.Document_UpdateSectionPr();
|
|
},
|
|
Document_UpdateRulersState: function () {
|
|
if (true === this.TurnOffInterfaceEvents) {
|
|
return;
|
|
}
|
|
if (true === CollaborativeEditing.m_bGlobalLockSelection) {
|
|
return;
|
|
}
|
|
this.DrawingDocument.Set_RulerState_Start();
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
this.HdrFtr.Document_UpdateRulersState(this.CurPage);
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
this.DrawingDocument.Set_RulerState_Paragraph(null);
|
|
this.Document_UpdateRulersStateBySection(this.CurPos.ContentPos);
|
|
this.DrawingObjects.documentUpdateRulersState();
|
|
} else {
|
|
if (true === this.Selection.Use) {
|
|
if (this.Selection.StartPos == this.Selection.EndPos && type_Table === this.Content[this.Selection.StartPos].GetType()) {
|
|
this.Content[this.Selection.StartPos].Document_UpdateRulersState(this.CurPage);
|
|
} else {
|
|
var StartPos = (this.Selection.EndPos <= this.Selection.StartPos ? this.Selection.EndPos : this.Selection.StartPos);
|
|
var EndPos = (this.Selection.EndPos <= this.Selection.StartPos ? this.Selection.StartPos : this.Selection.EndPos);
|
|
var FramePr = undefined;
|
|
for (var Pos = StartPos; Pos <= EndPos; Pos++) {
|
|
var Element = this.Content[Pos];
|
|
if (type_Paragraph != Element.GetType()) {
|
|
FramePr = undefined;
|
|
break;
|
|
} else {
|
|
var TempFramePr = Element.Get_FramePr();
|
|
if (undefined === FramePr) {
|
|
if (undefined === TempFramePr) {
|
|
break;
|
|
}
|
|
FramePr = TempFramePr;
|
|
} else {
|
|
if (undefined === TempFramePr || false === FramePr.Compare(TempFramePr)) {
|
|
FramePr = undefined;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (undefined === FramePr) {
|
|
this.Document_UpdateRulersStateBySection();
|
|
} else {
|
|
this.Content[StartPos].Document_UpdateRulersState();
|
|
}
|
|
}
|
|
} else {
|
|
this.Internal_CheckCurPage();
|
|
var Item = this.Content[this.CurPos.ContentPos];
|
|
if (type_Table === Item.GetType()) {
|
|
Item.Document_UpdateRulersState(this.CurPage);
|
|
} else {
|
|
Item.Document_UpdateRulersState();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
this.DrawingDocument.Set_RulerState_End();
|
|
},
|
|
Document_UpdateRulersStateBySection: function (Pos) {
|
|
var CurPos = undefined === Pos ? (this.Selection.Use === true ? this.Selection.EndPos : this.CurPos.ContentPos) : Pos;
|
|
var SectPr = this.SectionsInfo.Get_SectPr(CurPos).SectPr;
|
|
var L = SectPr.Get_PageMargin_Left();
|
|
var T = SectPr.Get_PageMargin_Top();
|
|
var R = SectPr.Get_PageWidth() - SectPr.Get_PageMargin_Right();
|
|
var B = SectPr.Get_PageHeight() - SectPr.Get_PageMargin_Bottom();
|
|
this.DrawingDocument.Set_RulerState_Paragraph({
|
|
L: L,
|
|
T: T,
|
|
R: R,
|
|
B: B
|
|
},
|
|
true);
|
|
},
|
|
Document_UpdateSelectionState: function () {
|
|
if (true === this.TurnOffInterfaceEvents) {
|
|
return;
|
|
}
|
|
if (true === CollaborativeEditing.m_bGlobalLockSelection) {
|
|
return;
|
|
}
|
|
this.DrawingDocument.UpdateTargetTransform(null);
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
this.HdrFtr.Document_UpdateSelectionState();
|
|
this.private_UpdateTracks(this.Is_SelectionUse(), this.Selection_IsEmpty());
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
this.DrawingObjects.documentUpdateSelectionState();
|
|
this.private_UpdateTracks(this.Is_SelectionUse(), this.Selection_IsEmpty());
|
|
} else {
|
|
if (true === this.Selection.Use) {
|
|
if (selectionflag_Numbering == this.Selection.Flag) {
|
|
this.DrawingDocument.TargetEnd();
|
|
this.DrawingDocument.SelectEnabled(true);
|
|
this.DrawingDocument.SelectShow();
|
|
} else {
|
|
if (true === this.Selection_Is_TableBorderMove()) {
|
|
this.DrawingDocument.TargetEnd();
|
|
this.DrawingDocument.SetCurrentPage(this.CurPage);
|
|
} else {
|
|
if (false === this.Selection_IsEmpty()) {
|
|
if (true !== this.Selection.Start) {
|
|
this.Internal_CheckCurPage();
|
|
this.RecalculateCurPos();
|
|
}
|
|
this.private_UpdateTracks(true, false);
|
|
this.DrawingDocument.TargetEnd();
|
|
this.DrawingDocument.SelectEnabled(true);
|
|
this.DrawingDocument.SelectShow();
|
|
} else {
|
|
if (true !== this.Selection.Start) {
|
|
this.Selection_Remove();
|
|
}
|
|
this.Internal_CheckCurPage();
|
|
this.RecalculateCurPos();
|
|
this.private_UpdateTracks(true, true);
|
|
this.DrawingDocument.SelectEnabled(false);
|
|
this.DrawingDocument.TargetStart();
|
|
this.DrawingDocument.TargetShow();
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
this.Selection_Remove();
|
|
this.Internal_CheckCurPage();
|
|
this.RecalculateCurPos();
|
|
this.private_UpdateTracks(false, false);
|
|
this.DrawingDocument.SelectEnabled(false);
|
|
this.DrawingDocument.TargetShow();
|
|
}
|
|
}
|
|
}
|
|
this.Document_UpdateCopyCutState();
|
|
},
|
|
private_UpdateTracks: function (bSelection, bEmptySelection) {
|
|
var Pos = (true === this.Selection.Use && selectionflag_Numbering !== this.Selection.Flag ? this.Selection.EndPos : this.CurPos.ContentPos);
|
|
if (docpostype_Content === this.CurPos.Type && !(Pos >= 0 && (null === this.FullRecalc.Id || this.FullRecalc.StartIndex > Pos))) {
|
|
return;
|
|
}
|
|
var oSelectedInfo = this.Get_SelectedElementsInfo();
|
|
var Math = oSelectedInfo.Get_Math();
|
|
if (null !== Math) {
|
|
var Bounds = Math.Get_Bounds();
|
|
this.DrawingDocument.Update_MathTrack(true, (false === bSelection || true === bEmptySelection ? true : false), Math, Bounds.X, Bounds.Y, Bounds.W, Bounds.H, Bounds.Page);
|
|
} else {
|
|
this.DrawingDocument.Update_MathTrack(false);
|
|
}
|
|
},
|
|
Document_UpdateUndoRedoState: function () {
|
|
if (true === this.TurnOffInterfaceEvents) {
|
|
return;
|
|
}
|
|
if (true === CollaborativeEditing.m_bGlobalLockSelection) {
|
|
return;
|
|
}
|
|
editor.sync_CanUndoCallback(this.History.Can_Undo());
|
|
editor.sync_CanRedoCallback(this.History.Can_Redo());
|
|
if (true === History.Have_Changes()) {
|
|
editor.SetDocumentModified(true);
|
|
editor._onUpdateDocumentCanSave();
|
|
} else {
|
|
editor.SetUnchangedDocument();
|
|
}
|
|
},
|
|
Document_UpdateCopyCutState: function () {
|
|
if (true === this.TurnOffInterfaceEvents) {
|
|
return;
|
|
}
|
|
if (true === CollaborativeEditing.m_bGlobalLockSelection) {
|
|
return;
|
|
}
|
|
if (true === this.Selection.Start) {
|
|
return;
|
|
}
|
|
editor.sync_CanCopyCutCallback(this.Can_CopyCut());
|
|
},
|
|
Document_UpdateCanAddHyperlinkState: function () {
|
|
if (true === this.TurnOffInterfaceEvents) {
|
|
return;
|
|
}
|
|
if (true === CollaborativeEditing.m_bGlobalLockSelection) {
|
|
return;
|
|
}
|
|
editor.sync_CanAddHyperlinkCallback(this.Hyperlink_CanAdd(false));
|
|
},
|
|
Document_UpdateSectionPr: function () {
|
|
if (true === this.TurnOffInterfaceEvents) {
|
|
return;
|
|
}
|
|
if (true === CollaborativeEditing.m_bGlobalLockSelection) {
|
|
return;
|
|
}
|
|
editor.sync_PageOrientCallback(this.Get_DocumentOrientation());
|
|
var PageSize = this.Get_DocumentPageSize();
|
|
editor.sync_DocSizeCallback(PageSize.W, PageSize.H);
|
|
},
|
|
TurnOff_InterfaceEvents: function () {
|
|
this.TurnOffInterfaceEvents = true;
|
|
},
|
|
TurnOn_InterfaceEvents: function (bUpdate) {
|
|
this.TurnOffInterfaceEvents = false;
|
|
if (true === bUpdate) {
|
|
this.Document_UpdateInterfaceState();
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateRulersState();
|
|
}
|
|
},
|
|
TurnOff_RecalculateCurPos: function () {
|
|
this.TurnOffRecalcCurPos = true;
|
|
},
|
|
TurnOn_RecalculateCurPos: function (bUpdate) {
|
|
this.TurnOffRecalcCurPos = false;
|
|
if (true === bUpdate) {
|
|
this.Document_UpdateSelectionState();
|
|
}
|
|
},
|
|
Can_CopyCut: function () {
|
|
var bCanCopyCut = false;
|
|
var LogicDocument = null;
|
|
var DrawingObjects = null;
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
var CurHdrFtr = this.HdrFtr.CurHdrFtr;
|
|
if (null !== CurHdrFtr) {
|
|
if (docpostype_DrawingObjects === CurHdrFtr.Content.CurPos.Type) {
|
|
DrawingObjects = this.DrawingObjects;
|
|
} else {
|
|
LogicDocument = CurHdrFtr.Content;
|
|
}
|
|
}
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
DrawingObjects = this.DrawingObjects;
|
|
} else {
|
|
LogicDocument = this;
|
|
}
|
|
}
|
|
if (null !== DrawingObjects) {
|
|
if (true === DrawingObjects.isSelectedText()) {
|
|
LogicDocument = DrawingObjects.getTargetDocContent();
|
|
} else {
|
|
bCanCopyCut = true;
|
|
}
|
|
}
|
|
if (null !== LogicDocument) {
|
|
if (true === LogicDocument.Is_SelectionUse()) {
|
|
if (selectionflag_Numbering === LogicDocument.Selection.Flag) {
|
|
bCanCopyCut = false;
|
|
} else {
|
|
if (LogicDocument.Selection.StartPos !== LogicDocument.Selection.EndPos || type_Paragraph === LogicDocument.Content[LogicDocument.Selection.StartPos].Get_Type()) {
|
|
bCanCopyCut = true;
|
|
} else {
|
|
bCanCopyCut = LogicDocument.Content[LogicDocument.Selection.StartPos].Can_CopyCut();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return bCanCopyCut;
|
|
},
|
|
Get_StartPage_Absolute: function () {
|
|
return 0;
|
|
},
|
|
Get_StartPage_Relative: function () {
|
|
return 0;
|
|
},
|
|
Set_CurPage: function (PageNum) {
|
|
this.CurPage = Math.min(this.Pages.length - 1, Math.max(0, PageNum));
|
|
},
|
|
Get_CurPage: function () {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
return this.HdrFtr.Get_CurPage();
|
|
}
|
|
return this.CurPage;
|
|
},
|
|
Create_NewHistoryPoint: function (Description) {
|
|
this.History.Create_NewPoint(Description);
|
|
},
|
|
Document_Undo: function () {
|
|
if (true === CollaborativeEditing.Get_GlobalLock()) {
|
|
return;
|
|
}
|
|
this.DrawingDocument.EndTrackTable(null, true);
|
|
this.DrawingObjects.TurnOffCheckChartSelection();
|
|
this.History.Undo();
|
|
this.DrawingObjects.TurnOnCheckChartSelection();
|
|
this.Recalculate(false, false, this.History.RecalculateData);
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
this.Document_UpdateRulersState();
|
|
},
|
|
Document_Redo: function () {
|
|
if (true === CollaborativeEditing.Get_GlobalLock()) {
|
|
return;
|
|
}
|
|
this.DrawingDocument.EndTrackTable(null, true);
|
|
this.DrawingObjects.TurnOffCheckChartSelection();
|
|
this.History.Redo();
|
|
this.DrawingObjects.TurnOnCheckChartSelection();
|
|
this.Recalculate(false, false, this.History.RecalculateData);
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
this.Document_UpdateRulersState();
|
|
},
|
|
Get_SelectionState: function () {
|
|
var DocState = {};
|
|
DocState.CurPos = {
|
|
X: this.CurPos.X,
|
|
Y: this.CurPos.Y,
|
|
ContentPos: this.CurPos.ContentPos,
|
|
RealX: this.CurPos.RealX,
|
|
RealY: this.CurPos.RealY,
|
|
Type: this.CurPos.Type
|
|
};
|
|
DocState.Selection = {
|
|
Start: this.Selection.Start,
|
|
Use: this.Selection.Use,
|
|
StartPos: this.Selection.StartPos,
|
|
EndPos: this.Selection.EndPos,
|
|
Flag: this.Selection.Flag,
|
|
Data: this.Selection.Data
|
|
};
|
|
DocState.CurPage = this.CurPage;
|
|
DocState.CurComment = this.Comments.Get_CurrentId();
|
|
var State = null;
|
|
if (true === editor.isStartAddShape && docpostype_DrawingObjects === this.CurPos.Type) {
|
|
DocState.CurPos.Type = docpostype_Content;
|
|
DocState.Selection.Start = false;
|
|
DocState.Selection.Use = false;
|
|
this.Content[DocState.CurPos.ContentPos].Selection_Remove();
|
|
State = this.Content[this.CurPos.ContentPos].Get_SelectionState();
|
|
} else {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
State = this.HdrFtr.Get_SelectionState();
|
|
} else {
|
|
if (docpostype_DrawingObjects == this.CurPos.Type) {
|
|
State = this.DrawingObjects.getSelectionState();
|
|
} else {
|
|
if (true === this.Selection.Use) {
|
|
if (selectionflag_Numbering == this.Selection.Flag) {
|
|
State = [];
|
|
} else {
|
|
var StartPos = this.Selection.StartPos;
|
|
var EndPos = this.Selection.EndPos;
|
|
if (StartPos > EndPos) {
|
|
var Temp = StartPos;
|
|
StartPos = EndPos;
|
|
EndPos = Temp;
|
|
}
|
|
State = [];
|
|
var TempState = [];
|
|
for (var Index = StartPos; Index <= EndPos; Index++) {
|
|
TempState.push(this.Content[Index].Get_SelectionState());
|
|
}
|
|
State.push(TempState);
|
|
}
|
|
} else {
|
|
State = this.Content[this.CurPos.ContentPos].Get_SelectionState();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
State.push(DocState);
|
|
return State;
|
|
},
|
|
Set_SelectionState: function (State) {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
this.DrawingObjects.resetSelection();
|
|
}
|
|
if (State.length <= 0) {
|
|
return;
|
|
}
|
|
var DocState = State[State.length - 1];
|
|
this.CurPos.X = DocState.CurPos.X;
|
|
this.CurPos.Y = DocState.CurPos.Y;
|
|
this.CurPos.ContentPos = DocState.CurPos.ContentPos;
|
|
this.CurPos.RealX = DocState.CurPos.RealX;
|
|
this.CurPos.RealY = DocState.CurPos.RealY;
|
|
this.CurPos.Type = DocState.CurPos.Type;
|
|
this.Selection.Start = DocState.Selection.Start;
|
|
this.Selection.Use = DocState.Selection.Use;
|
|
this.Selection.StartPos = DocState.Selection.StartPos;
|
|
this.Selection.EndPos = DocState.Selection.EndPos;
|
|
this.Selection.Flag = DocState.Selection.Flag;
|
|
this.Selection.Data = DocState.Selection.Data;
|
|
this.Selection.DragDrop.Flag = 0;
|
|
this.Selection.DragDrop.Data = null;
|
|
this.CurPage = DocState.CurPage;
|
|
this.Comments.Set_Current(DocState.CurComment);
|
|
var StateIndex = State.length - 2;
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
this.HdrFtr.Set_SelectionState(State, StateIndex);
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
this.DrawingObjects.setSelectionState(State, StateIndex);
|
|
} else {
|
|
if (true === this.Selection.Use) {
|
|
if (selectionflag_Numbering == this.Selection.Flag) {
|
|
if (type_Paragraph === this.Content[this.Selection.StartPos].Get_Type()) {
|
|
var NumPr = this.Content[this.Selection.StartPos].Numbering_Get();
|
|
if (undefined !== NumPr) {
|
|
this.Document_SelectNumbering(NumPr, this.Selection.StartPos);
|
|
} else {
|
|
this.Selection_Remove();
|
|
}
|
|
} else {
|
|
this.Selection_Remove();
|
|
}
|
|
} else {
|
|
var StartPos = this.Selection.StartPos;
|
|
var EndPos = this.Selection.EndPos;
|
|
if (StartPos > EndPos) {
|
|
var Temp = StartPos;
|
|
StartPos = EndPos;
|
|
EndPos = Temp;
|
|
}
|
|
var CurState = State[StateIndex];
|
|
for (var Index = StartPos; Index <= EndPos; Index++) {
|
|
this.Content[Index].Set_SelectionState(CurState[Index - StartPos], CurState[Index - StartPos].length - 1);
|
|
}
|
|
}
|
|
} else {
|
|
this.Content[this.CurPos.ContentPos].Set_SelectionState(State, StateIndex);
|
|
}
|
|
}
|
|
}
|
|
},
|
|
Undo: function (Data) {
|
|
var Type = Data.Type;
|
|
switch (Type) {
|
|
case historyitem_Document_AddItem:
|
|
this.Content.splice(Data.Pos, 1);
|
|
this.SectionsInfo.Update_OnRemove(Data.Pos, 1);
|
|
break;
|
|
case historyitem_Document_RemoveItem:
|
|
var Pos = Data.Pos;
|
|
var Array_start = this.Content.slice(0, Pos);
|
|
var Array_end = this.Content.slice(Pos);
|
|
this.Content = Array_start.concat(Data.Items, Array_end);
|
|
this.SectionsInfo.Update_OnAdd(Data.Pos, Data.Items);
|
|
break;
|
|
case historyitem_Document_DefaultTab:
|
|
Default_Tab_Stop = Data.Old;
|
|
break;
|
|
case historyitem_Document_EvenAndOddHeaders:
|
|
EvenAndOddHeaders = Data.Old;
|
|
break;
|
|
case historyitem_Document_DefaultLanguage:
|
|
this.Styles.Default.TextPr.Lang.Val = Data.Old;
|
|
this.Restart_CheckSpelling();
|
|
break;
|
|
}
|
|
},
|
|
Redo: function (Data) {
|
|
var Type = Data.Type;
|
|
switch (Type) {
|
|
case historyitem_Document_AddItem:
|
|
var Pos = Data.Pos;
|
|
this.Content.splice(Pos, 0, Data.Item);
|
|
this.SectionsInfo.Update_OnAdd(Data.Pos, [Data.Item]);
|
|
break;
|
|
case historyitem_Document_RemoveItem:
|
|
this.Content.splice(Data.Pos, Data.Items.length);
|
|
this.SectionsInfo.Update_OnRemove(Data.Pos, Data.Items.length);
|
|
break;
|
|
case historyitem_Document_DefaultTab:
|
|
Default_Tab_Stop = Data.New;
|
|
break;
|
|
case historyitem_Document_EvenAndOddHeaders:
|
|
EvenAndOddHeaders = Data.New;
|
|
break;
|
|
case historyitem_Document_DefaultLanguage:
|
|
this.Styles.Default.TextPr.Lang.Val = Data.New;
|
|
this.Restart_CheckSpelling();
|
|
break;
|
|
}
|
|
},
|
|
Get_ParentObject_or_DocumentPos: function (Index) {
|
|
return {
|
|
Type: historyrecalctype_Inline,
|
|
Data: Index
|
|
};
|
|
},
|
|
Refresh_RecalcData: function (Data) {
|
|
var ChangePos = -1;
|
|
var bNeedRecalcHdrFtr = false;
|
|
var Type = Data.Type;
|
|
switch (Type) {
|
|
case historyitem_Document_AddItem:
|
|
case historyitem_Document_RemoveItem:
|
|
ChangePos = Data.Pos;
|
|
break;
|
|
case historyitem_Document_DefaultTab:
|
|
case historyitem_Document_EvenAndOddHeaders:
|
|
ChangePos = 0;
|
|
break;
|
|
}
|
|
if (-1 != ChangePos) {
|
|
this.History.RecalcData_Add({
|
|
Type: historyrecalctype_Inline,
|
|
Data: {
|
|
Pos: ChangePos,
|
|
PageNum: 0
|
|
}
|
|
});
|
|
}
|
|
},
|
|
Refresh_RecalcData2: function (Index, Page_rel) {
|
|
this.History.RecalcData_Add({
|
|
Type: historyrecalctype_Inline,
|
|
Data: {
|
|
Pos: Index,
|
|
PageNum: Page_rel
|
|
}
|
|
});
|
|
},
|
|
Statistics_Start: function () {
|
|
this.Statistics.Start();
|
|
this.Statistics.Add_Page();
|
|
},
|
|
Statistics_OnPage: function () {
|
|
var Count = this.Content.length;
|
|
var CurPage = this.Statistics.CurPage;
|
|
var bFlowObjChecked = false;
|
|
var Index = 0;
|
|
for (Index = this.Statistics.StartPos; Index < Count; Index++) {
|
|
var Element = this.Content[Index];
|
|
Element.DocumentStatistics(this.Statistics);
|
|
if (false === bFlowObjChecked) {
|
|
this.DrawingObjects.documentStatistics(CurPage, this.Statistics);
|
|
bFlowObjChecked = true;
|
|
}
|
|
var bNewPage = false;
|
|
if (Element.Pages.length > 1) {
|
|
for (var TempIndex = 1; TempIndex < Element.Pages.length - 1; TempIndex++) {
|
|
this.DrawingObjects.documentStatistics(CurPage + TempIndex, this.Statistics);
|
|
}
|
|
CurPage += Element.Pages.length - 1;
|
|
this.Statistics.Add_Page(Element.Pages.length - 1);
|
|
bNewPage = true;
|
|
}
|
|
if (bNewPage) {
|
|
this.Statistics.Next(Index + 1, CurPage);
|
|
break;
|
|
}
|
|
}
|
|
if (Index >= Count) {
|
|
this.Statistics_Stop();
|
|
}
|
|
},
|
|
Statistics_Stop: function () {
|
|
this.Statistics.Stop();
|
|
},
|
|
Hyperlink_Add: function (HyperProps) {
|
|
if (null != HyperProps.Text && "" != HyperProps.Text && true === this.Is_SelectionUse()) {
|
|
var SelectionInfo = this.Get_SelectedElementsInfo();
|
|
var Para = SelectionInfo.Get_Paragraph();
|
|
if (null !== Para) {
|
|
HyperProps.TextPr = Para.Get_TextPr(Para.Get_ParaContentPos(true, true));
|
|
}
|
|
this.Remove(1, false, false, true);
|
|
this.Selection_Remove();
|
|
}
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
this.HdrFtr.Hyperlink_Add(HyperProps);
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
this.DrawingObjects.hyperlinkAdd(HyperProps);
|
|
} else {
|
|
if (docpostype_Content == this.CurPos.Type && ((true === this.Selection.Use && this.Selection.StartPos == this.Selection.EndPos) || (false == this.Selection.Use))) {
|
|
var Pos = (true == this.Selection.Use ? this.Selection.StartPos : this.CurPos.ContentPos);
|
|
this.Content[Pos].Hyperlink_Add(HyperProps);
|
|
this.ContentLastChangePos = Pos;
|
|
this.Recalculate(true);
|
|
}
|
|
}
|
|
}
|
|
this.Document_UpdateInterfaceState();
|
|
this.Document_UpdateSelectionState();
|
|
},
|
|
Hyperlink_Modify: function (HyperProps) {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
this.HdrFtr.Hyperlink_Modify(HyperProps);
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
this.DrawingObjects.hyperlinkModify(HyperProps);
|
|
} else {
|
|
if (docpostype_Content == this.CurPos.Type && ((true === this.Selection.Use && this.Selection.StartPos == this.Selection.EndPos) || (false == this.Selection.Use))) {
|
|
var Pos = (true == this.Selection.Use ? this.Selection.StartPos : this.CurPos.ContentPos);
|
|
if (true === this.Content[Pos].Hyperlink_Modify(HyperProps)) {
|
|
this.ContentLastChangePos = Pos;
|
|
this.Recalculate(true);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
this.Document_UpdateSelectionState();
|
|
this.Document_UpdateInterfaceState();
|
|
},
|
|
Hyperlink_Remove: function () {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
this.HdrFtr.Hyperlink_Remove();
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
this.DrawingObjects.hyperlinkRemove();
|
|
} else {
|
|
if (docpostype_Content == this.CurPos.Type && ((true === this.Selection.Use && this.Selection.StartPos == this.Selection.EndPos) || (false == this.Selection.Use))) {
|
|
var Pos = (true == this.Selection.Use ? this.Selection.StartPos : this.CurPos.ContentPos);
|
|
this.Content[Pos].Hyperlink_Remove();
|
|
}
|
|
}
|
|
}
|
|
this.Recalculate();
|
|
this.Document_UpdateInterfaceState();
|
|
},
|
|
Hyperlink_CanAdd: function (bCheckInHyperlink) {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
return this.HdrFtr.Hyperlink_CanAdd(bCheckInHyperlink);
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
return this.DrawingObjects.hyperlinkCanAdd(bCheckInHyperlink);
|
|
} else {
|
|
if (true === this.Selection.Use) {
|
|
switch (this.Selection.Flag) {
|
|
case selectionflag_Numbering:
|
|
return false;
|
|
case selectionflag_Common:
|
|
if (this.Selection.StartPos != this.Selection.EndPos) {
|
|
return false;
|
|
}
|
|
return this.Content[this.Selection.StartPos].Hyperlink_CanAdd(bCheckInHyperlink);
|
|
}
|
|
} else {
|
|
return this.Content[this.CurPos.ContentPos].Hyperlink_CanAdd(bCheckInHyperlink);
|
|
}
|
|
}
|
|
}
|
|
return false;
|
|
},
|
|
Hyperlink_Check: function (bCheckEnd) {
|
|
if ("undefined" === typeof(bCheckEnd)) {
|
|
bCheckEnd = true;
|
|
}
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
return this.HdrFtr.Hyperlink_Check(bCheckEnd);
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
return this.DrawingObjects.hyperlinkCheck(bCheckEnd);
|
|
} else {
|
|
if (true === this.Selection.Use) {
|
|
switch (this.Selection.Flag) {
|
|
case selectionflag_Numbering:
|
|
return null;
|
|
case selectionflag_Common:
|
|
if (this.Selection.StartPos != this.Selection.EndPos) {
|
|
return null;
|
|
}
|
|
return this.Content[this.Selection.StartPos].Hyperlink_Check(bCheckEnd);
|
|
}
|
|
} else {
|
|
return this.Content[this.CurPos.ContentPos].Hyperlink_Check(bCheckEnd);
|
|
}
|
|
}
|
|
}
|
|
return null;
|
|
},
|
|
Document_Is_SelectionLocked: function (CheckType, AdditionalData) {
|
|
return false;
|
|
},
|
|
Save_Changes: function (Data, Writer) {
|
|
Writer.WriteLong(historyitem_type_Document);
|
|
var Type = Data.Type;
|
|
Writer.WriteLong(Type);
|
|
switch (Type) {
|
|
case historyitem_Document_AddItem:
|
|
var bArray = Data.UseArray;
|
|
var Count = 1;
|
|
Writer.WriteLong(Count);
|
|
for (var Index = 0; Index < Count; Index++) {
|
|
if (true === bArray) {
|
|
Writer.WriteLong(Data.PosArray[Index]);
|
|
} else {
|
|
Writer.WriteLong(Data.Pos + Index);
|
|
}
|
|
Writer.WriteString2(Data.Item.Get_Id());
|
|
}
|
|
break;
|
|
case historyitem_Document_RemoveItem:
|
|
var bArray = Data.UseArray;
|
|
var Count = Data.Items.length;
|
|
var StartPos = Writer.GetCurPosition();
|
|
Writer.Skip(4);
|
|
var RealCount = Count;
|
|
for (var Index = 0; Index < Count; Index++) {
|
|
if (true === bArray) {
|
|
if (false === Data.PosArray[Index]) {
|
|
RealCount--;
|
|
} else {
|
|
Writer.WriteLong(Data.PosArray[Index]);
|
|
}
|
|
} else {
|
|
Writer.WriteLong(Data.Pos);
|
|
}
|
|
}
|
|
var EndPos = Writer.GetCurPosition();
|
|
Writer.Seek(StartPos);
|
|
Writer.WriteLong(RealCount);
|
|
Writer.Seek(EndPos);
|
|
break;
|
|
case historyitem_Document_DefaultTab:
|
|
Writer.WriteDouble(Data.New);
|
|
break;
|
|
case historyitem_Document_EvenAndOddHeaders:
|
|
Writer.WriteBool(Data.New);
|
|
break;
|
|
case historyitem_Document_DefaultLanguage:
|
|
Writer.WriteLong(Data.New);
|
|
break;
|
|
}
|
|
return Writer;
|
|
},
|
|
Save_Changes2: function (Data, Writer) {
|
|
var bRetValue = false;
|
|
var Type = Data.Type;
|
|
switch (Type) {
|
|
case historyitem_Document_AddItem:
|
|
break;
|
|
case historyitem_Document_RemoveItem:
|
|
break;
|
|
}
|
|
return bRetValue;
|
|
},
|
|
Load_Changes: function (Reader, Reader2) {
|
|
var ClassType = Reader.GetLong();
|
|
if (historyitem_type_Document != ClassType) {
|
|
return;
|
|
}
|
|
var Type = Reader.GetLong();
|
|
switch (Type) {
|
|
case historyitem_Document_AddItem:
|
|
var Count = Reader.GetLong();
|
|
for (var Index = 0; Index < Count; Index++) {
|
|
var Pos = this.m_oContentChanges.Check(contentchanges_Add, Reader.GetLong());
|
|
var Element = g_oTableId.Get_ById(Reader.GetString2());
|
|
Pos = Math.min(Pos, this.Content.length);
|
|
if (null != Element) {
|
|
if (Pos > 0) {
|
|
this.Content[Pos - 1].Next = Element;
|
|
Element.Prev = this.Content[Pos - 1];
|
|
} else {
|
|
Element.Prev = null;
|
|
}
|
|
if (Pos <= this.Content.length - 1) {
|
|
this.Content[Pos].Prev = Element;
|
|
Element.Next = this.Content[Pos];
|
|
} else {
|
|
Element.Next = null;
|
|
}
|
|
Element.Parent = this;
|
|
this.Content.splice(Pos, 0, Element);
|
|
this.SectionsInfo.Update_OnAdd(Pos, [Element]);
|
|
}
|
|
}
|
|
break;
|
|
case historyitem_Document_RemoveItem:
|
|
var Count = Reader.GetLong();
|
|
for (var Index = 0; Index < Count; Index++) {
|
|
var Pos = this.m_oContentChanges.Check(contentchanges_Remove, Reader.GetLong());
|
|
if (false === Pos) {
|
|
continue;
|
|
}
|
|
this.Content.splice(Pos, 1);
|
|
if (Pos > 0) {
|
|
if (Pos <= this.Content.length - 1) {
|
|
this.Content[Pos - 1].Next = this.Content[Pos];
|
|
this.Content[Pos].Prev = this.Content[Pos - 1];
|
|
} else {
|
|
this.Content[Pos - 1].Next = null;
|
|
}
|
|
} else {
|
|
if (Pos <= this.Content.length - 1) {
|
|
this.Content[Pos].Prev = null;
|
|
}
|
|
}
|
|
this.SectionsInfo.Update_OnRemove(Pos, 1);
|
|
}
|
|
break;
|
|
case historyitem_Document_DefaultTab:
|
|
Default_Tab_Stop = Reader.GetDouble();
|
|
break;
|
|
case historyitem_Document_EvenAndOddHeaders:
|
|
EvenAndOddHeaders = Reader.GetBool();
|
|
break;
|
|
case historyitem_Document_DefaultLanguage:
|
|
this.Styles.Default.TextPr.Lang.Val = Reader.GetLong();
|
|
this.Restart_CheckSpelling();
|
|
break;
|
|
}
|
|
return true;
|
|
},
|
|
Get_SelectionState2: function () {
|
|
this.Selection_Remove();
|
|
var State = new CDocumentSelectionState();
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
State.Type = docpostype_HdrFtr;
|
|
if (null != this.HdrFtr.CurHdrFtr) {
|
|
State.Id = this.HdrFtr.CurHdrFtr.Get_Id();
|
|
} else {
|
|
State.Id = null;
|
|
}
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
var X = 0;
|
|
var Y = 0;
|
|
var PageNum = this.CurPage;
|
|
var ContentPos = this.Internal_GetContentPosByXY(X, Y, PageNum);
|
|
State.Type = docpostype_Content;
|
|
State.Id = this.Content[ContentPos].Get_Id();
|
|
} else {
|
|
State.Id = this.Get_Id();
|
|
State.Type = docpostype_Content;
|
|
var Element = this.Content[this.CurPos.ContentPos];
|
|
State.Data = Element.Get_SelectionState2();
|
|
}
|
|
}
|
|
return State;
|
|
},
|
|
Set_SelectionState2: function (State) {
|
|
this.Selection_Remove();
|
|
var Id = State.Id;
|
|
if (docpostype_HdrFtr === State.Type) {
|
|
this.CurPos.Type = docpostype_HdrFtr;
|
|
if (null === Id || true != this.HdrFtr.Set_CurHdrFtr_ById(Id)) {
|
|
this.CurPos.Type = docpostype_Content;
|
|
this.CurPos.ContentPos = 0;
|
|
this.Content[this.CurPos.ContentPos].Cursor_MoveToStartPos();
|
|
}
|
|
} else {
|
|
var ElementId = State.Data.Id;
|
|
var CurId = ElementId;
|
|
var bFlag = false;
|
|
var Pos = 0;
|
|
var Count = this.Content.length;
|
|
for (Pos = 0; Pos < Count; Pos++) {
|
|
if (this.Content[Pos].Get_Id() == CurId) {
|
|
bFlag = true;
|
|
break;
|
|
}
|
|
}
|
|
if (true !== bFlag) {
|
|
var TempElement = g_oTableId.Get_ById(CurId);
|
|
Pos = (null != TempElement ? TempElement.Index : 0);
|
|
Pos = Math.max(0, Math.min(Pos, this.Content.length - 1));
|
|
}
|
|
this.Selection.Start = false;
|
|
this.Selection.Use = false;
|
|
this.Selection.StartPos = Pos;
|
|
this.Selection.EndPos = Pos;
|
|
this.Selection.Flag = selectionflag_Common;
|
|
this.CurPos.Type = docpostype_Content;
|
|
this.CurPos.ContentPos = Pos;
|
|
if (true !== bFlag) {
|
|
this.Content[this.CurPos.ContentPos].Cursor_MoveToStartPos();
|
|
} else {
|
|
this.Content[this.CurPos.ContentPos].Set_SelectionState2(State.Data);
|
|
}
|
|
}
|
|
},
|
|
Add_Comment: function (CommentData) {
|
|
if (true != this.CanAdd_Comment()) {
|
|
CommentData.Set_QuoteText(null);
|
|
var Comment = new CComment(this.Comments, CommentData);
|
|
this.Comments.Add(Comment);
|
|
this.Document_UpdateInterfaceState();
|
|
} else {
|
|
var QuotedText = this.Get_SelectedText(false);
|
|
if (null === QuotedText) {
|
|
QuotedText = "";
|
|
}
|
|
CommentData.Set_QuoteText(QuotedText);
|
|
var Comment = new CComment(this.Comments, CommentData);
|
|
this.Comments.Add(Comment);
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
this.HdrFtr.Add_Comment(Comment);
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
if (true != this.DrawingObjects.isSelectedText()) {
|
|
var ParaDrawing = this.DrawingObjects.getMajorParaDrawing();
|
|
if (null != ParaDrawing) {
|
|
var Paragraph = ParaDrawing.Parent;
|
|
Paragraph.Add_Comment2(Comment, ParaDrawing.Get_Id());
|
|
}
|
|
} else {
|
|
this.DrawingObjects.addComment(Comment);
|
|
}
|
|
} else {
|
|
if (selectionflag_Numbering === this.Selection.Flag) {
|
|
return;
|
|
}
|
|
if (true === this.Selection.Use) {
|
|
var StartPos, EndPos;
|
|
if (this.Selection.StartPos < this.Selection.EndPos) {
|
|
StartPos = this.Selection.StartPos;
|
|
EndPos = this.Selection.EndPos;
|
|
} else {
|
|
StartPos = this.Selection.EndPos;
|
|
EndPos = this.Selection.StartPos;
|
|
}
|
|
if (StartPos === EndPos) {
|
|
this.Content[StartPos].Add_Comment(Comment, true, true);
|
|
} else {
|
|
this.Content[StartPos].Add_Comment(Comment, true, false);
|
|
this.Content[EndPos].Add_Comment(Comment, false, true);
|
|
}
|
|
} else {
|
|
this.Content[this.CurPos.ContentPos].Add_Comment(Comment, true, true);
|
|
}
|
|
}
|
|
}
|
|
this.Recalculate();
|
|
this.Document_UpdateInterfaceState();
|
|
}
|
|
return Comment;
|
|
},
|
|
Change_Comment: function (Id, CommentData) {
|
|
this.Comments.Set_CommentData(Id, CommentData);
|
|
this.Document_UpdateInterfaceState();
|
|
},
|
|
Remove_Comment: function (Id, bSendEvent, bRecalculate) {
|
|
if (null === Id) {
|
|
return;
|
|
}
|
|
if (true === this.Comments.Remove_ById(Id)) {
|
|
if (true === bRecalculate) {
|
|
this.Recalculate();
|
|
this.Document_UpdateInterfaceState();
|
|
}
|
|
if (true === bSendEvent) {
|
|
editor.sync_RemoveComment(Id);
|
|
}
|
|
}
|
|
},
|
|
CanAdd_Comment: function () {
|
|
if (true !== this.Comments.Is_Use()) {
|
|
return false;
|
|
}
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
return this.HdrFtr.CanAdd_Comment();
|
|
} else {
|
|
if (docpostype_DrawingObjects == this.CurPos.Type) {
|
|
if (true != this.DrawingObjects.isSelectedText()) {
|
|
return true;
|
|
} else {
|
|
return this.DrawingObjects.canAddComment();
|
|
}
|
|
} else {
|
|
switch (this.Selection.Flag) {
|
|
case selectionflag_Numbering:
|
|
return false;
|
|
case selectionflag_Common:
|
|
if (true === this.Selection.Use && this.Selection.StartPos != this.Selection.EndPos) {
|
|
return true;
|
|
} else {
|
|
var Pos = (this.Selection.Use === true ? this.Selection.StartPos : this.CurPos.ContentPos);
|
|
var Element = this.Content[Pos];
|
|
return Element.CanAdd_Comment();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return false;
|
|
},
|
|
Select_Comment: function (Id, ScrollToComment) {
|
|
var OldId = this.Comments.Get_CurrentId();
|
|
this.Comments.Set_Current(Id);
|
|
var Comment = this.Comments.Get_ById(Id);
|
|
if (null != Comment) {
|
|
var Comment_PageNum = Comment.m_oStartInfo.PageNum;
|
|
var Comment_Y = Comment.m_oStartInfo.Y;
|
|
var Comment_X = Comment.m_oStartInfo.X;
|
|
if (true === ScrollToComment) {
|
|
this.DrawingDocument.m_oWordControl.ScrollToPosition(Comment_X, Comment_Y, Comment_PageNum);
|
|
}
|
|
}
|
|
if (OldId != Id) {
|
|
this.DrawingDocument.ClearCachePages();
|
|
this.DrawingDocument.FirePaint();
|
|
}
|
|
},
|
|
Show_Comment: function (Id) {
|
|
var Comment = this.Comments.Get_ById(Id);
|
|
if (null != Comment && null != Comment.StartId && null != Comment.EndId) {
|
|
var Comment_PageNum = Comment.m_oStartInfo.PageNum;
|
|
var Comment_Y = Comment.m_oStartInfo.Y;
|
|
var Comment_X = this.Get_PageLimits(Comment_PageNum).XLimit;
|
|
var Coords = this.DrawingDocument.ConvertCoordsToCursorWR(Comment_X, Comment_Y, Comment_PageNum);
|
|
editor.sync_ShowComment(Comment.Get_Id(), Coords.X, Coords.Y);
|
|
} else {
|
|
editor.sync_HideComment();
|
|
}
|
|
},
|
|
Show_Comments: function () {
|
|
this.Comments.Set_Use(true);
|
|
this.DrawingDocument.ClearCachePages();
|
|
this.DrawingDocument.FirePaint();
|
|
},
|
|
Hide_Comments: function () {
|
|
this.Comments.Set_Use(false);
|
|
this.Comments.Set_Current(null);
|
|
this.DrawingDocument.ClearCachePages();
|
|
this.DrawingDocument.FirePaint();
|
|
},
|
|
Get_PrevElementEndInfo: function (CurElement) {
|
|
var PrevElement = CurElement.Get_DocumentPrev();
|
|
if (null !== PrevElement && undefined !== PrevElement) {
|
|
return PrevElement.Get_EndInfo();
|
|
} else {
|
|
return null;
|
|
}
|
|
},
|
|
Get_SelectionAnchorPos: function () {
|
|
var Result;
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
Result = this.HdrFtr.Get_SelectionAnchorPos();
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
var ParaDrawing = this.DrawingObjects.getMajorParaDrawing();
|
|
Result = {
|
|
X0: ParaDrawing.GraphicObj.x,
|
|
Y: ParaDrawing.GraphicObj.y,
|
|
X1: ParaDrawing.GraphicObj.x + ParaDrawing.GraphicObj.extX,
|
|
Page: ParaDrawing.PageNum
|
|
};
|
|
} else {
|
|
var Pos = (true === this.Selection.Use ? (this.Selection.StartPos < this.Selection.EndPos ? this.Selection.StartPos : this.Selection.EndPos) : this.CurPos.ContentPos);
|
|
Result = this.Content[Pos].Get_SelectionAnchorPos();
|
|
}
|
|
}
|
|
var PageLimit = this.Get_PageLimits(Result.Page);
|
|
Result.X0 = PageLimit.X;
|
|
Result.X1 = PageLimit.XLimit;
|
|
var Coords0 = this.DrawingDocument.ConvertCoordsToCursorWR(Result.X0, Result.Y, Result.Page);
|
|
var Coords1 = this.DrawingDocument.ConvertCoordsToCursorWR(Result.X1, Result.Y, Result.Page);
|
|
return {
|
|
X0: Coords0.X,
|
|
X1: Coords1.X,
|
|
Y: Coords0.Y
|
|
};
|
|
},
|
|
TextBox_Put: function (sText, rFonts) {
|
|
if (false === this.Document_Is_SelectionLocked(changestype_Paragraph_Content)) {
|
|
this.Create_NewHistoryPoint(historydescription_Document_AddTextFromTextBox);
|
|
if (undefined === rFonts) {
|
|
this.TurnOffRecalc = true;
|
|
this.TurnOff_InterfaceEvents();
|
|
this.TurnOff_RecalculateCurPos();
|
|
var Count = sText.length;
|
|
var e = global_keyboardEvent;
|
|
for (var Index = 0; Index < Count; Index++) {
|
|
if (Index === Count - 1) {
|
|
this.TurnOffRecalc = false;
|
|
}
|
|
var _char = sText.charAt(Index);
|
|
if (" " == _char) {
|
|
this.Paragraph_Add(new ParaSpace());
|
|
} else {
|
|
this.Paragraph_Add(new ParaText(_char));
|
|
}
|
|
}
|
|
this.TurnOffRecalc = false;
|
|
this.TurnOn_RecalculateCurPos(false);
|
|
this.TurnOn_InterfaceEvents(true);
|
|
} else {
|
|
var Para = this.Get_CurrentParagraph();
|
|
if (null === Para) {
|
|
return;
|
|
}
|
|
var RunPr = Para.Get_TextPr();
|
|
if (null === RunPr || undefined === RunPr) {
|
|
RunPr = new CTextPr();
|
|
}
|
|
RunPr.RFonts = rFonts;
|
|
var Run = new ParaRun(Para);
|
|
Run.Set_Pr(RunPr);
|
|
var Count = sText.length;
|
|
for (var Index = 0; Index < Count; Index++) {
|
|
var _char = sText.charAt(Index);
|
|
if (" " == _char) {
|
|
Run.Add_ToContent(Index, new ParaSpace(), false);
|
|
} else {
|
|
Run.Add_ToContent(Index, new ParaText(_char), false);
|
|
}
|
|
}
|
|
Para.Add(Run);
|
|
this.Recalculate();
|
|
}
|
|
this.Document_UpdateUndoRedoState();
|
|
}
|
|
},
|
|
Viewer_OnChangePosition: function () {
|
|
var Comment = this.Comments.Get_Current();
|
|
if (null != Comment) {
|
|
var Comment_PageNum = Comment.m_oStartInfo.PageNum;
|
|
var Comment_Y = Comment.m_oStartInfo.Y;
|
|
var Comment_X = this.Get_PageLimits(Comment_PageNum).XLimit;
|
|
var Para = g_oTableId.Get_ById(Comment.StartId);
|
|
if (null !== Para) {
|
|
var TextTransform = Para.Get_ParentTextTransform();
|
|
if (TextTransform) {
|
|
Comment_Y = TextTransform.TransformPointY(Comment.m_oStartInfo.X, Comment.m_oStartInfo.Y);
|
|
}
|
|
}
|
|
var Coords = this.DrawingDocument.ConvertCoordsToCursorWR(Comment_X, Comment_Y, Comment_PageNum);
|
|
editor.sync_UpdateCommentPosition(Comment.Get_Id(), Coords.X, Coords.Y);
|
|
}
|
|
},
|
|
Update_SectionsInfo: function () {
|
|
this.SectionsInfo.Clear();
|
|
var Count = this.Content.length;
|
|
for (var Index = 0; Index < Count; Index++) {
|
|
var Element = this.Content[Index];
|
|
if (type_Paragraph === Element.GetType() && undefined !== Element.Get_SectionPr()) {
|
|
this.SectionsInfo.Add(Element.Get_SectionPr(), Index);
|
|
}
|
|
}
|
|
this.SectionsInfo.Add(this.SectPr, Count);
|
|
},
|
|
Check_SectionLastParagraph: function () {
|
|
var Count = this.Content.length;
|
|
if (Count <= 0) {
|
|
return;
|
|
}
|
|
var Element = this.Content[Count - 1];
|
|
if (type_Paragraph === Element.GetType() && undefined !== Element.Get_SectionPr()) {
|
|
this.Internal_Content_Add(Count, new Paragraph(this.DrawingDocument, this, 0, 0, 0, 0, 0));
|
|
}
|
|
},
|
|
Add_SectionBreak: function (SectionBreakType) {
|
|
var Element = null;
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
return false;
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
return false;
|
|
} else {
|
|
if (true === this.Selection.Use) {
|
|
this.Cursor_MoveLeft(false, false);
|
|
}
|
|
var Element = this.Content[this.CurPos.ContentPos];
|
|
var CurSectPr = this.SectionsInfo.Get_SectPr(this.CurPos.ContentPos).SectPr;
|
|
if (type_Paragraph === Element.GetType()) {
|
|
var NewParagraph = new Paragraph(this.DrawingDocument, this, 0, 0, 0, 0, 0);
|
|
Element.Split(NewParagraph);
|
|
this.CurPos.ContentPos++;
|
|
NewParagraph.Cursor_MoveToStartPos(false);
|
|
this.Internal_Content_Add(this.CurPos.ContentPos, NewParagraph);
|
|
} else {
|
|
var NewParagraph = new Paragraph(this.DrawingDocument, this, 0, 0, 0, 0, 0);
|
|
var NewTable = Element.Split_Table();
|
|
if (null === NewTable) {
|
|
this.Internal_Content_Add(this.CurPos.ContentPos, NewParagraph);
|
|
this.CurPos.ContentPos++;
|
|
} else {
|
|
this.Internal_Content_Add(this.CurPos.ContentPos + 1, NewParagraph);
|
|
this.Internal_Content_Add(this.CurPos.ContentPos + 2, NewTable);
|
|
this.CurPos.ContentPos += 2;
|
|
}
|
|
this.Content[this.CurPos.ContentPos].Cursor_MoveToStartPos(false);
|
|
Element = NewParagraph;
|
|
}
|
|
var SectPr = new CSectionPr(this);
|
|
History.MinorChanges = true;
|
|
SectPr.Copy(CurSectPr);
|
|
CurSectPr.Set_Type(SectionBreakType);
|
|
CurSectPr.Set_PageNum_Start(-1);
|
|
CurSectPr.Clear_AllHdrFtr();
|
|
History.MinorChanges = false;
|
|
Element.Set_SectionPr(SectPr);
|
|
Element.Refresh_RecalcData2(0, 0);
|
|
this.Recalculate();
|
|
this.Document_UpdateInterfaceState();
|
|
this.Document_UpdateSelectionState();
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
},
|
|
Get_SectionFirstPage: function (SectIndex, Page_abs) {
|
|
if (SectIndex <= 0) {
|
|
return 0;
|
|
}
|
|
var StartIndex = this.SectionsInfo.Get_SectPr2(SectIndex - 1).Index;
|
|
var CurPage = Page_abs;
|
|
for (; CurPage > 0; CurPage--) {
|
|
if (this.Pages[CurPage].EndPos >= StartIndex && this.Pages[CurPage].Pos <= StartIndex) {
|
|
break;
|
|
}
|
|
}
|
|
return CurPage + 1;
|
|
},
|
|
Get_SectionPageNumInfo: function (Page_abs) {
|
|
var PageNumInfo = this.Get_SectionPageNumInfo2(Page_abs);
|
|
var FP = PageNumInfo.FirstPage;
|
|
var CP = PageNumInfo.CurPage;
|
|
var bCheckFP = true;
|
|
var SectIndex = PageNumInfo.SectIndex;
|
|
if (SectIndex > 0) {
|
|
var CurSectInfo = this.SectionsInfo.Get_SectPr2(SectIndex);
|
|
var PrevSectInfo = this.SectionsInfo.Get_SectPr2(SectIndex - 1);
|
|
if (CurSectInfo !== PrevSectInfo && section_type_Continuous === CurSectInfo.SectPr.Get_Type() && true === CurSectInfo.SectPr.Compare_PageSize(PrevSectInfo.SectPr)) {
|
|
var ElementIndex = PrevSectInfo.Index;
|
|
if (ElementIndex < this.Content.length - 1 && true !== this.Content[ElementIndex + 1].Is_StartFromNewPage()) {
|
|
bCheckFP = false;
|
|
}
|
|
}
|
|
}
|
|
var bFirst = (FP === CP && true === bCheckFP ? true : false);
|
|
var bEven = (0 === CP % 2 ? true : false);
|
|
return new CSectionPageNumInfo(FP, CP, bFirst, bEven, Page_abs);
|
|
},
|
|
Get_SectionPageNumInfo2: function (Page_abs) {
|
|
var StartIndex = 0;
|
|
if (undefined !== this.Pages[Page_abs]) {
|
|
StartIndex = this.Pages[Page_abs].Pos;
|
|
}
|
|
var SectIndex = this.SectionsInfo.Get_Index(StartIndex);
|
|
var StartSectIndex = SectIndex;
|
|
if (0 === SectIndex) {
|
|
var PageNumStart = this.SectionsInfo.Get_SectPr2(0).SectPr.Get_PageNum_Start();
|
|
var BT = this.SectionsInfo.Get_SectPr2(0).SectPr.Get_Type();
|
|
if (PageNumStart < 0) {
|
|
PageNumStart = 1;
|
|
}
|
|
if ((section_type_OddPage === BT && 0 === PageNumStart % 2) || (section_type_EvenPage === BT && 1 === PageNumStart % 2)) {
|
|
PageNumStart++;
|
|
}
|
|
return {
|
|
FirstPage: PageNumStart,
|
|
CurPage: Page_abs + PageNumStart,
|
|
SectIndex: StartSectIndex
|
|
};
|
|
}
|
|
var SectionFirstPage = this.Get_SectionFirstPage(SectIndex, Page_abs);
|
|
var FirstPage = SectionFirstPage;
|
|
var PageNumStart = this.SectionsInfo.Get_SectPr2(SectIndex).SectPr.Get_PageNum_Start();
|
|
var BreakType = this.SectionsInfo.Get_SectPr2(SectIndex).SectPr.Get_Type();
|
|
var StartInfo = [];
|
|
StartInfo.push({
|
|
FirstPage: FirstPage,
|
|
BreakType: BreakType
|
|
});
|
|
while (PageNumStart < 0 && SectIndex > 0) {
|
|
SectIndex--;
|
|
FirstPage = this.Get_SectionFirstPage(SectIndex, Page_abs);
|
|
PageNumStart = this.SectionsInfo.Get_SectPr2(SectIndex).SectPr.Get_PageNum_Start();
|
|
BreakType = this.SectionsInfo.Get_SectPr2(SectIndex).SectPr.Get_Type();
|
|
StartInfo.splice(0, 0, {
|
|
FirstPage: FirstPage,
|
|
BreakType: BreakType
|
|
});
|
|
}
|
|
if (PageNumStart < 0) {
|
|
PageNumStart = 1;
|
|
}
|
|
var InfoIndex = 0;
|
|
var InfoCount = StartInfo.length;
|
|
var FP = StartInfo[0].FirstPage;
|
|
var BT = StartInfo[0].BreakType;
|
|
var PrevFP = StartInfo[0].FirstPage;
|
|
while (InfoIndex < InfoCount) {
|
|
FP = StartInfo[InfoIndex].FirstPage;
|
|
BT = StartInfo[InfoIndex].BreakType;
|
|
PageNumStart += FP - PrevFP;
|
|
PrevFP = FP;
|
|
if ((section_type_OddPage === BT && 0 === PageNumStart % 2) || (section_type_EvenPage === BT && 1 === PageNumStart % 2)) {
|
|
PageNumStart++;
|
|
}
|
|
InfoIndex++;
|
|
}
|
|
if (FP > Page_abs) {
|
|
Page_abs = FP;
|
|
}
|
|
var _FP = PageNumStart;
|
|
var _CP = PageNumStart + Page_abs - FP;
|
|
return {
|
|
FirstPage: _FP,
|
|
CurPage: _CP,
|
|
SectIndex: StartSectIndex
|
|
};
|
|
},
|
|
Get_SectionHdrFtr: function (Page_abs, _bFirst, _bEven) {
|
|
var StartIndex = this.Pages[Page_abs].Pos;
|
|
var SectIndex = this.SectionsInfo.Get_Index(StartIndex);
|
|
var CurSectPr = this.SectionsInfo.Get_SectPr2(SectIndex).SectPr;
|
|
var bEven = (true === _bEven && true === EvenAndOddHeaders ? true : false);
|
|
var bFirst = (true === _bFirst && true === CurSectPr.TitlePage ? true : false);
|
|
var CurSectIndex = SectIndex;
|
|
var Header = null,
|
|
Footer = null;
|
|
while (CurSectIndex >= 0) {
|
|
var SectPr = this.SectionsInfo.Get_SectPr2(CurSectIndex).SectPr;
|
|
if (null === Header) {
|
|
if (true === bFirst) {
|
|
Header = SectPr.Get_Header_First();
|
|
} else {
|
|
if (true === bEven) {
|
|
Header = SectPr.Get_Header_Even();
|
|
} else {
|
|
Header = SectPr.Get_Header_Default();
|
|
}
|
|
}
|
|
}
|
|
if (null === Footer) {
|
|
if (true === bFirst) {
|
|
Footer = SectPr.Get_Footer_First();
|
|
} else {
|
|
if (true === bEven) {
|
|
Footer = SectPr.Get_Footer_Even();
|
|
} else {
|
|
Footer = SectPr.Get_Footer_Default();
|
|
}
|
|
}
|
|
}
|
|
if (null !== Header && null !== Footer) {
|
|
break;
|
|
}
|
|
CurSectIndex--;
|
|
}
|
|
return {
|
|
Header: Header,
|
|
Footer: Footer,
|
|
SectPr: CurSectPr
|
|
};
|
|
},
|
|
Create_SectionHdrFtr: function (Type, PageIndex) {
|
|
var SectionPageInfo = this.Get_SectionPageNumInfo(PageIndex);
|
|
var _bFirst = SectionPageInfo.bFirst;
|
|
var _bEven = SectionPageInfo.bEven;
|
|
var StartIndex = this.Pages[PageIndex].Pos;
|
|
var SectIndex = this.SectionsInfo.Get_Index(StartIndex);
|
|
var CurSectPr = this.SectionsInfo.Get_SectPr2(SectIndex).SectPr;
|
|
var bEven = (true === _bEven && true === EvenAndOddHeaders ? true : false);
|
|
var bFirst = (true === _bFirst && true === CurSectPr.TitlePage ? true : false);
|
|
var SectPr = this.SectionsInfo.Get_SectPr2(0).SectPr;
|
|
var HdrFtr = new CHeaderFooter(this.HdrFtr, this, this.DrawingDocument, Type);
|
|
if (hdrftr_Header === Type) {
|
|
if (true === bFirst) {
|
|
SectPr.Set_Header_First(HdrFtr);
|
|
} else {
|
|
if (true === bEven) {
|
|
SectPr.Set_Header_Even(HdrFtr);
|
|
} else {
|
|
SectPr.Set_Header_Default(HdrFtr);
|
|
}
|
|
}
|
|
} else {
|
|
if (true === bFirst) {
|
|
SectPr.Set_Footer_First(HdrFtr);
|
|
} else {
|
|
if (true === bEven) {
|
|
SectPr.Set_Footer_Even(HdrFtr);
|
|
} else {
|
|
SectPr.Set_Footer_Default(HdrFtr);
|
|
}
|
|
}
|
|
}
|
|
return HdrFtr;
|
|
},
|
|
On_SectionChange: function (_SectPr) {
|
|
var Index = this.SectionsInfo.Find(_SectPr);
|
|
if (-1 === Index) {
|
|
return;
|
|
}
|
|
var SectPr = null;
|
|
var HeaderF = null,
|
|
HeaderD = null,
|
|
HeaderE = null,
|
|
FooterF = null,
|
|
FooterD = null,
|
|
FooterE = null;
|
|
while (Index >= 0) {
|
|
SectPr = this.SectionsInfo.Get_SectPr2(Index).SectPr;
|
|
if (null === HeaderF) {
|
|
HeaderF = SectPr.Get_Header_First();
|
|
}
|
|
if (null === HeaderD) {
|
|
HeaderD = SectPr.Get_Header_Default();
|
|
}
|
|
if (null === HeaderE) {
|
|
HeaderE = SectPr.Get_Header_Even();
|
|
}
|
|
if (null === FooterF) {
|
|
FooterF = SectPr.Get_Footer_First();
|
|
}
|
|
if (null === FooterD) {
|
|
FooterD = SectPr.Get_Footer_Default();
|
|
}
|
|
if (null === FooterE) {
|
|
FooterE = SectPr.Get_Footer_Even();
|
|
}
|
|
Index--;
|
|
}
|
|
if (null !== HeaderF) {
|
|
HeaderF.Refresh_RecalcData_BySection(_SectPr);
|
|
}
|
|
if (null !== HeaderD) {
|
|
HeaderD.Refresh_RecalcData_BySection(_SectPr);
|
|
}
|
|
if (null !== HeaderE) {
|
|
HeaderE.Refresh_RecalcData_BySection(_SectPr);
|
|
}
|
|
if (null !== FooterF) {
|
|
FooterF.Refresh_RecalcData_BySection(_SectPr);
|
|
}
|
|
if (null !== FooterD) {
|
|
FooterD.Refresh_RecalcData_BySection(_SectPr);
|
|
}
|
|
if (null !== FooterE) {
|
|
FooterE.Refresh_RecalcData_BySection(_SectPr);
|
|
}
|
|
},
|
|
Create_HdrFtrWidthPageNum: function (PageIndex, AlignV, AlignH) {
|
|
var SectionPageInfo = this.Get_SectionPageNumInfo(PageIndex);
|
|
var bFirst = SectionPageInfo.bFirst;
|
|
var bEven = SectionPageInfo.bEven;
|
|
var HdrFtr = this.Get_SectionHdrFtr(PageIndex, bFirst, bEven);
|
|
switch (AlignV) {
|
|
case hdrftr_Header:
|
|
var Header = HdrFtr.Header;
|
|
if (null === Header) {
|
|
Header = this.Create_SectionHdrFtr(hdrftr_Header, PageIndex);
|
|
}
|
|
Header.AddPageNum(AlignH);
|
|
break;
|
|
case hdrftr_Footer:
|
|
var Footer = HdrFtr.Footer;
|
|
if (null === Footer) {
|
|
Footer = this.Create_SectionHdrFtr(hdrftr_Footer, PageIndex);
|
|
}
|
|
Footer.AddPageNum(AlignH);
|
|
break;
|
|
}
|
|
this.Recalculate();
|
|
},
|
|
Set_UseTextShd: function (bUse) {
|
|
this.UseTextShd = bUse;
|
|
}
|
|
};
|
|
CDocument.prototype.private_StartSelectionFromCurPos = function () {
|
|
this.private_UpdateCursorXY(true, true);
|
|
var CurPara = this.Get_CurrentParagraph();
|
|
if (null !== CurPara) {
|
|
var MouseEvent = new CMouseEventHandler();
|
|
MouseEvent.ClickCount = 1;
|
|
MouseEvent.Type = g_mouse_event_type_down;
|
|
var X = CurPara.CurPos.RealX;
|
|
var Y = CurPara.CurPos.RealY;
|
|
var DrawMatrix = CurPara.Get_ParentTextTransform();
|
|
if (DrawMatrix) {
|
|
var _X = DrawMatrix.TransformPointX(X, Y);
|
|
var _Y = DrawMatrix.TransformPointY(X, Y);
|
|
X = _X;
|
|
Y = _Y;
|
|
}
|
|
this.CurPage = CurPara.Get_StartPage_Absolute() + CurPara.CurPos.PagesPos;
|
|
this.Selection_SetStart(X, Y, MouseEvent);
|
|
MouseEvent.Type = g_mouse_event_type_move;
|
|
this.Selection_SetEnd(X, Y, MouseEvent);
|
|
}
|
|
};
|
|
CDocument.prototype.private_StopSelection = function () {
|
|
this.Selection.Start = false;
|
|
};
|
|
CDocument.prototype.private_UpdateCurPage = function () {
|
|
this.Internal_CheckCurPage();
|
|
};
|
|
CDocument.prototype.private_UpdateCursorXY = function (bUpdateX, bUpdateY) {
|
|
this.private_UpdateCurPage();
|
|
var NewCursorPos = null;
|
|
if (true !== this.Is_SelectionUse() || true === this.Selection_IsEmpty()) {
|
|
if (docpostype_Content === this.CurPos.Type) {
|
|
var Pos = (true === this.Selection.Use && selectionflag_Numbering !== this.Selection.Flag ? this.Selection.EndPos : this.CurPos.ContentPos);
|
|
if (Pos >= 0 && undefined !== this.Content[Pos].RecalculateCurPos && (null === this.FullRecalc.Id || this.FullRecalc.StartIndex > Pos)) {
|
|
this.Internal_CheckCurPage();
|
|
NewCursorPos = this.Content[Pos].RecalculateCurPos();
|
|
}
|
|
} else {
|
|
if (docpostype_DrawingObjects === this.CurPos.Type) {
|
|
NewCursorPos = this.DrawingObjects.recalculateCurPos();
|
|
} else {
|
|
if (docpostype_HdrFtr === this.CurPos.Type) {
|
|
NewCursorPos = this.HdrFtr.RecalculateCurPos();
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
var SelectionBounds = this.Get_SelectionBounds();
|
|
if (null !== SelectionBounds) {
|
|
NewCursorPos = {};
|
|
if (-1 === SelectionBounds.Direction) {
|
|
NewCursorPos.X = SelectionBounds.Start.X;
|
|
NewCursorPos.Y = SelectionBounds.Start.Y;
|
|
} else {
|
|
NewCursorPos.X = SelectionBounds.End.X + SelectionBounds.End.W;
|
|
NewCursorPos.Y = SelectionBounds.End.Y + SelectionBounds.End.H;
|
|
}
|
|
}
|
|
}
|
|
if (null === NewCursorPos || undefined === NewCursorPos) {
|
|
return;
|
|
}
|
|
var RealX = NewCursorPos.X;
|
|
var RealY = NewCursorPos.Y;
|
|
var CurPara = this.Get_CurrentParagraph();
|
|
if (bUpdateX) {
|
|
this.CurPos.RealX = RealX;
|
|
if (null !== CurPara) {
|
|
CurPara.CurPos.RealX = RealX;
|
|
}
|
|
}
|
|
if (bUpdateY) {
|
|
this.CurPos.RealY = RealY;
|
|
if (null !== CurPara) {
|
|
CurPara.CurPos.RealY = RealY;
|
|
}
|
|
}
|
|
};
|
|
CDocument.prototype.private_MoveCursorDown = function (StartX, StartY, AddToSelect) {
|
|
var CurY = StartY;
|
|
var PageH = this.Pages[this.CurPage].Height;
|
|
this.TurnOff_InterfaceEvents();
|
|
this.CheckEmptyElementsOnSelection = false;
|
|
var Result = false;
|
|
while (true) {
|
|
CurY += 0.1;
|
|
if (CurY > PageH) {
|
|
if (this.Pages.length - 1 <= this.CurPage) {
|
|
Result = false;
|
|
break;
|
|
} else {
|
|
this.CurPage++;
|
|
StartY = 0;
|
|
CurY = 0;
|
|
}
|
|
}
|
|
this.Cursor_MoveAt(StartX, CurY, AddToSelect);
|
|
this.private_UpdateCursorXY(false, true);
|
|
if (this.CurPos.RealY > StartY + 0.001) {
|
|
Result = true;
|
|
break;
|
|
}
|
|
}
|
|
this.CheckEmptyElementsOnSelection = true;
|
|
this.TurnOn_InterfaceEvents(true);
|
|
return Result;
|
|
};
|
|
CDocument.prototype.private_MoveCursorUp = function (StartX, StartY, AddToSelect) {
|
|
var CurY = StartY;
|
|
var PageH = this.Pages[this.CurPage].Height;
|
|
this.TurnOff_InterfaceEvents();
|
|
this.CheckEmptyElementsOnSelection = false;
|
|
var Result = false;
|
|
while (true) {
|
|
CurY -= 0.1;
|
|
if (CurY < 0) {
|
|
if (0 === this.CurPage) {
|
|
Result = false;
|
|
break;
|
|
} else {
|
|
this.CurPage--;
|
|
StartY = this.Pages[this.CurPage].Height;
|
|
CurY = this.Pages[this.CurPage].Height;
|
|
}
|
|
}
|
|
this.Cursor_MoveAt(StartX, CurY, AddToSelect);
|
|
this.private_UpdateCursorXY(false, true);
|
|
if (this.CurPos.RealY < StartY - 0.001) {
|
|
Result = true;
|
|
break;
|
|
}
|
|
}
|
|
this.CheckEmptyElementsOnSelection = true;
|
|
this.TurnOn_InterfaceEvents(true);
|
|
return Result;
|
|
};
|
|
CDocument.prototype.private_ProcessTemplateReplacement = function (TemplateReplacementData) {
|
|
for (var Id in TemplateReplacementData) {
|
|
this.Search(Id, {
|
|
MatchCase: true
|
|
},
|
|
false);
|
|
this.SearchEngine.Replace_All(TemplateReplacementData[Id], false);
|
|
}
|
|
};
|
|
CDocument.prototype.Start_SilentMode = function () {
|
|
this.TurnOff_Recalculate();
|
|
this.TurnOff_InterfaceEvents();
|
|
this.TurnOff_RecalculateCurPos();
|
|
};
|
|
CDocument.prototype.End_SilentMode = function (bUpdate) {
|
|
this.TurnOn_Recalculate(bUpdate);
|
|
this.TurnOn_RecalculateCurPos(bUpdate);
|
|
this.TurnOn_InterfaceEvents(bUpdate);
|
|
};
|
|
function CDocumentSelectionState() {
|
|
this.Id = null;
|
|
this.Type = docpostype_Content;
|
|
this.Data = {};
|
|
}
|
|
function CDocumentSectionsInfo() {
|
|
this.Elements = [];
|
|
}
|
|
CDocumentSectionsInfo.prototype = {
|
|
Add: function (SectPr, Index) {
|
|
this.Elements.push(new CDocumentSectionsInfoElement(SectPr, Index));
|
|
},
|
|
Get_SectionsCount: function () {
|
|
return this.Elements.length;
|
|
},
|
|
Clear: function () {
|
|
this.Elements.length = 0;
|
|
},
|
|
Find_ByHdrFtr: function (HdrFtr) {
|
|
var Count = this.Elements.length;
|
|
for (var Index = 0; Index < Count; Index++) {
|
|
var SectPr = this.Elements[Index].SectPr;
|
|
if (HdrFtr === SectPr.Get_Header_First() || HdrFtr === SectPr.Get_Header_Default() || HdrFtr === SectPr.Get_Header_Even() || HdrFtr === SectPr.Get_Footer_First() || HdrFtr === SectPr.Get_Footer_Default() || HdrFtr === SectPr.Get_Footer_Even()) {
|
|
return Index;
|
|
}
|
|
}
|
|
return -1;
|
|
},
|
|
Reset_HdrFtrRecalculateCache: function () {
|
|
var Count = this.Elements.length;
|
|
for (var Index = 0; Index < Count; Index++) {
|
|
var SectPr = this.Elements[Index].SectPr;
|
|
if (null != SectPr.HeaderFirst) {
|
|
SectPr.HeaderFirst.Reset_RecalculateCache();
|
|
}
|
|
if (null != SectPr.HeaderDefault) {
|
|
SectPr.HeaderDefault.Reset_RecalculateCache();
|
|
}
|
|
if (null != SectPr.HeaderEven) {
|
|
SectPr.HeaderEven.Reset_RecalculateCache();
|
|
}
|
|
if (null != SectPr.FooterFirst) {
|
|
SectPr.FooterFirst.Reset_RecalculateCache();
|
|
}
|
|
if (null != SectPr.FooterDefault) {
|
|
SectPr.FooterDefault.Reset_RecalculateCache();
|
|
}
|
|
if (null != SectPr.FooterEven) {
|
|
SectPr.FooterEven.Reset_RecalculateCache();
|
|
}
|
|
}
|
|
},
|
|
Get_AllParagraphs_ByNumbering: function (NumPr, ParaArray) {
|
|
var Count = this.Elements.length;
|
|
for (var Index = 0; Index < Count; Index++) {
|
|
var SectPr = this.Elements[Index].SectPr;
|
|
if (null != SectPr.HeaderFirst) {
|
|
SectPr.HeaderFirst.Get_AllParagraphs_ByNumbering(NumPr, ParaArray);
|
|
}
|
|
if (null != SectPr.HeaderDefault) {
|
|
SectPr.HeaderDefault.Get_AllParagraphs_ByNumbering(NumPr, ParaArray);
|
|
}
|
|
if (null != SectPr.HeaderEven) {
|
|
SectPr.HeaderEven.Get_AllParagraphs_ByNumbering(NumPr, ParaArray);
|
|
}
|
|
if (null != SectPr.FooterFirst) {
|
|
SectPr.FooterFirst.Get_AllParagraphs_ByNumbering(NumPr, ParaArray);
|
|
}
|
|
if (null != SectPr.FooterDefault) {
|
|
SectPr.FooterDefault.Get_AllParagraphs_ByNumbering(NumPr, ParaArray);
|
|
}
|
|
if (null != SectPr.FooterEven) {
|
|
SectPr.FooterEven.Get_AllParagraphs_ByNumbering(NumPr, ParaArray);
|
|
}
|
|
}
|
|
},
|
|
Document_CreateFontMap: function (FontMap) {
|
|
var Count = this.Elements.length;
|
|
for (var Index = 0; Index < Count; Index++) {
|
|
var SectPr = this.Elements[Index].SectPr;
|
|
if (null != SectPr.HeaderFirst) {
|
|
SectPr.HeaderFirst.Document_CreateFontMap(FontMap);
|
|
}
|
|
if (null != SectPr.HeaderDefault) {
|
|
SectPr.HeaderDefault.Document_CreateFontMap(FontMap);
|
|
}
|
|
if (null != SectPr.HeaderEven) {
|
|
SectPr.HeaderEven.Document_CreateFontMap(FontMap);
|
|
}
|
|
if (null != SectPr.FooterFirst) {
|
|
SectPr.FooterFirst.Document_CreateFontMap(FontMap);
|
|
}
|
|
if (null != SectPr.FooterDefault) {
|
|
SectPr.FooterDefault.Document_CreateFontMap(FontMap);
|
|
}
|
|
if (null != SectPr.FooterEven) {
|
|
SectPr.FooterEven.Document_CreateFontMap(FontMap);
|
|
}
|
|
}
|
|
},
|
|
Document_CreateFontCharMap: function (FontCharMap) {
|
|
var Count = this.Elements.length;
|
|
for (var Index = 0; Index < Count; Index++) {
|
|
var SectPr = this.Elements[Index].SectPr;
|
|
if (null != SectPr.HeaderFirst) {
|
|
SectPr.HeaderFirst.Document_CreateFontCharMap(FontCharMap);
|
|
}
|
|
if (null != SectPr.HeaderDefault) {
|
|
SectPr.HeaderDefault.Document_CreateFontCharMap(FontCharMap);
|
|
}
|
|
if (null != SectPr.HeaderEven) {
|
|
SectPr.HeaderEven.Document_CreateFontCharMap(FontCharMap);
|
|
}
|
|
if (null != SectPr.FooterFirst) {
|
|
SectPr.FooterFirst.Document_CreateFontCharMap(FontCharMap);
|
|
}
|
|
if (null != SectPr.FooterDefault) {
|
|
SectPr.FooterDefault.Document_CreateFontCharMap(FontCharMap);
|
|
}
|
|
if (null != SectPr.FooterEven) {
|
|
SectPr.FooterEven.Document_CreateFontCharMap(FontCharMap);
|
|
}
|
|
}
|
|
},
|
|
Document_Get_AllFontNames: function (AllFonts) {
|
|
var Count = this.Elements.length;
|
|
for (var Index = 0; Index < Count; Index++) {
|
|
var SectPr = this.Elements[Index].SectPr;
|
|
if (null != SectPr.HeaderFirst) {
|
|
SectPr.HeaderFirst.Document_Get_AllFontNames(AllFonts);
|
|
}
|
|
if (null != SectPr.HeaderDefault) {
|
|
SectPr.HeaderDefault.Document_Get_AllFontNames(AllFonts);
|
|
}
|
|
if (null != SectPr.HeaderEven) {
|
|
SectPr.HeaderEven.Document_Get_AllFontNames(AllFonts);
|
|
}
|
|
if (null != SectPr.FooterFirst) {
|
|
SectPr.FooterFirst.Document_Get_AllFontNames(AllFonts);
|
|
}
|
|
if (null != SectPr.FooterDefault) {
|
|
SectPr.FooterDefault.Document_Get_AllFontNames(AllFonts);
|
|
}
|
|
if (null != SectPr.FooterEven) {
|
|
SectPr.FooterEven.Document_Get_AllFontNames(AllFonts);
|
|
}
|
|
}
|
|
},
|
|
Get_Index: function (Index) {
|
|
var Count = this.Elements.length;
|
|
for (var Pos = 0; Pos < Count; Pos++) {
|
|
if (Index <= this.Elements[Pos].Index) {
|
|
return Pos;
|
|
}
|
|
}
|
|
return (Count - 1);
|
|
},
|
|
Get_Count: function () {
|
|
return this.Elements.length;
|
|
},
|
|
Get_SectPr: function (Index) {
|
|
var Count = this.Elements.length;
|
|
for (var Pos = 0; Pos < Count; Pos++) {
|
|
if (Index <= this.Elements[Pos].Index) {
|
|
return this.Elements[Pos];
|
|
}
|
|
}
|
|
return this.Elements[Count - 1];
|
|
},
|
|
Get_SectPr2: function (Index) {
|
|
return this.Elements[Index];
|
|
},
|
|
Find: function (SectPr) {
|
|
var Count = this.Elements.length;
|
|
for (var Index = 0; Index < Count; Index++) {
|
|
var Element = this.Elements[Index];
|
|
if (Element.SectPr === SectPr) {
|
|
return Index;
|
|
}
|
|
}
|
|
return -1;
|
|
},
|
|
Update_OnAdd: function (Pos, Items) {
|
|
var Count = Items.length;
|
|
var Len = this.Elements.length;
|
|
for (var Index = 0; Index < Len; Index++) {
|
|
if (this.Elements[Index].Index >= Pos) {
|
|
this.Elements[Index].Index += Count;
|
|
}
|
|
}
|
|
for (var Index = 0; Index < Count; Index++) {
|
|
var Item = Items[Index];
|
|
var SectPr = (type_Paragraph === Item.GetType() ? Item.Get_SectionPr() : undefined);
|
|
if (undefined !== SectPr) {
|
|
var TempPos = 0;
|
|
for (; TempPos < Len; TempPos++) {
|
|
if (Pos + Index <= this.Elements[TempPos].Index) {
|
|
break;
|
|
}
|
|
}
|
|
this.Elements.splice(TempPos, 0, new CDocumentSectionsInfoElement(SectPr, Pos + Index));
|
|
Len++;
|
|
}
|
|
}
|
|
},
|
|
Update_OnRemove: function (Pos, Count) {
|
|
var Len = this.Elements.length;
|
|
for (var Index = 0; Index < Len; Index++) {
|
|
var CurPos = this.Elements[Index].Index;
|
|
if (CurPos >= Pos && CurPos < Pos + Count) {
|
|
this.Elements.splice(Index, 1);
|
|
Len--;
|
|
Index--;
|
|
} else {
|
|
if (CurPos >= Pos + Count) {
|
|
this.Elements[Index].Index -= Count;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
};
|
|
function CDocumentSectionsInfoElement(SectPr, Index) {
|
|
this.SectPr = SectPr;
|
|
this.Index = Index;
|
|
} |