Esempio n. 1
0
        public string GetOutputText(bool includeSelectionOnly)
        {
            if (this.Elements.Count == 0)
            {
                return("");
            }
            string txt = "";

            if (includeSelectionOnly == false || this.Elements.Count == 0)
            {
                txt = this.Text;
            }
            else
            {
                System.Text.StringBuilder myStr = new System.Text.StringBuilder();
                DomDocumentContentElement dce   = this.Elements[0].DocumentContentElement;
                foreach (DomCharElement c in this.Elements)
                {
                    if (dce.IsSelected(c))
                    {
                        myStr.Append(c.CharValue);
                    }
                }                //foreach
                txt = myStr.ToString();
            }
            return(txt);
        }
Esempio n. 2
0
        /// <summary>
        /// 获得输入焦点
        /// </summary>
        public override void Focus()
        {
            DomElement firstElement = this.FirstContentElement;

            if (firstElement != null)
            {
                DomDocumentContentElement dce = this.DocumentContentElement;
                dce.SetSelection(firstElement.ViewIndex, 0);
            }
        }
Esempio n. 3
0
 public void Refresh(DomDocumentContentElement element, DomElement startElement, DomElement endElement)
 {
     _Document        = element.OwnerDocument;
     _Elements        = element.Content;
     _StartElement    = startElement;
     _EndElement      = endElement;
     _StateInvalidate = true;
     _ContentVersion++;
     if (_Document != null)
     {
         // 清空用户指定的样式
         //_Document._UserSpecifyStyle = null;
     }
 }
Esempio n. 4
0
 public void Refresh(DomDocumentContentElement element, int startIndex, int length)
 {
     _Document        = element.OwnerDocument;
     _Elements        = element.Content;
     _StartIndex      = startIndex;
     _Length          = length;
     _StateInvalidate = true;
     _ContentVersion++;
     if (_Document != null)
     {
         // 清空用户指定的样式
         //_Document._UserSpecifyStyle = null;
     }
 }
Esempio n. 5
0
        ///// <summary>
        ///// 设置容器元素的可见性
        ///// </summary>
        ///// <param name="visible">新的可见性</param>
        ///// <returns>操作是否成功</returns>
        //public bool EditorSetVisible(bool visible)
        //{
        //    bool result = false;
        //    bool oldVisible = this.Visible;
        //    if( oldVisible != visible )
        //    {
        //        this.Visible = visible;
        //        bool visible2 = this.Visible;
        //        if (visible2 == visible)
        //        {
        //            // 成功的修改了元素的可见性
        //            if (visible)
        //            {
        //                this.OwnerDocument.HighlightManager.InvalidateHighlightInfo(this);
        //            }
        //            else
        //            {
        //                this.OwnerDocument.HighlightManager.Remove(this);
        //            }
        //            result = true;
        //            XTextElement fc = this.FirstContentElement;
        //            XTextElement lc = this.LastContentElement;
        //            XTextContentElement content = this.ContentElement;
        //            int startIndex = 0;
        //            if (oldVisible)
        //            {
        //                startIndex = content.PrivateContent.IndexOf(fc);
        //            }
        //            this.UpdateContentVersion();
        //            content.UpdateContentElements(true);
        //            if (oldVisible == false)
        //            {
        //                startIndex = content.PrivateContent.IndexOf(fc);
        //            }
        //            content.RefreshPrivateContent(startIndex, -1, false);
        //        }
        //    }
        //    return result;
        //}

        /// <summary>
        /// 声明容器元素内容无效,需要重新排版
        /// </summary>
        public void EditorInvalidateContent()
        {
            DomContentElement ce = this.ContentElement;

            DomElement currentElementBack = this.DocumentContentElement.CurrentElement;
            //XTextElementList contentElements = new XTextElementList();
            //this.AppendContent(contentElements , true );

            DomElement firstElement = ce.PrivateContent.GetPreElement(this.FirstContentElement);

            if (firstElement == null)
            {
                firstElement = this.FirstContentElement;
            }
            DomElement lastElement = ce.PrivateContent.GetNextElement(this.LastContentElement);

            if (lastElement == null)
            {
                lastElement = ce.PrivateContent.LastElement;
            }
            // 声明所经过的文本行无效
            int endIndex = ce.PrivateContent.IndexOf(lastElement);

            for (int iCount = ce.PrivateContent.IndexOf(firstElement); iCount <= endIndex; iCount++)
            {
                if (ce.PrivateContent[iCount].OwnerLine != null)
                {
                    ce.PrivateContent[iCount].OwnerLine.InvalidateState = true;
                }
            }
            this.UpdateContentVersion();
            ce.UpdateContentElements(true);
            ce.RefreshPrivateContent(
                ce.PrivateContent.IndexOf(firstElement),
                ce.PrivateContent.IndexOf(lastElement),
                false);
            // 确认新的插入点的位置
            DomDocumentContentElement dce = this.DocumentContentElement;

            dce.RefreshGlobalLines();
            if (currentElementBack != null)
            {
                dce.Content.AutoClearSelection = true;
                dce.Content.LineEndFlag        = false;

                int newSelectionPosition = currentElementBack.ViewIndex;
                dce.Content.MoveSelectStart(newSelectionPosition);
            }
        }
Esempio n. 6
0
        private bool DragBounds(DragPointStyle hit)
        {
            MouseCapturer cap = new MouseCapturer(this.OwnerDocument.EditorControl);

            cap.Tag             = hit;
            cap.ReversibleShape = ReversibleShapeStyle.Custom;
            cap.Draw           += new CaptureMouseMoveEventHandler(cap_Draw);
            DomDocumentContentElement ce = this.DocumentContentElement;

            if (cap.CaptureMouseMove())
            {
                if (LastDragBounds.Width > 0 && LastDragBounds.Height > 0)
                {
                    if (LastDragBounds.Width != this.Width ||
                        LastDragBounds.Height != this.Height)
                    {
                        System.Drawing.SizeF OldSize = new System.Drawing.SizeF(
                            this.Width,
                            this.Height);
                        this.InvalidateView();
                        this.EditorSize = new SizeF(LastDragBounds.Width, LastDragBounds.Height);
                        this.InvalidateView();
                        ce.SetSelection(this.ViewIndex, 1);
                        if (this.OwnerDocument.BeginLogUndo())
                        {
                            this.OwnerDocument.UndoList.AddProperty(
                                XTextUndoStyles.EditorSize,
                                OldSize,
                                new System.Drawing.SizeF(this.Width, this.Height),
                                this);
                            this.OwnerDocument.EndLogUndo();
                        }
                        this.ContentElement.RefreshPrivateContent(
                            this.ContentElement.PrivateContent.IndexOf(this));
                        //ce.RefreshPrivateContent(ce.Content.IndexOf(this));
                        this.OwnerDocument.Modified = true;
                        return(true);
                    }
                }
            }
            return(false);
        }
Esempio n. 7
0
        internal void ClearContent()
        {
            this.Elements.Clear();
            DomDocumentContentElement ce = this.Body;

            ce.AppendChildElement(this.OwnerDocument.CreateParagraphEOF());
            ce.UpdateContentElements(true);
            ce.SetSelection(0, 0);

            ce = this.Header;
            ce.FixElements();
            DocumentContentStyle style = new DocumentContentStyle();

            ce.UpdateContentElements(true);
            ce.SetSelection(0, 0);

            ce = this.Footer;
            ce.FixElements();
            ce.UpdateContentElements(true);
            ce.SetSelection(0, 0);
        }
Esempio n. 8
0
 public DomRange(DomDocumentContentElement element, DomElement startElement, DomElement endElement)
 {
     Refresh(element, startElement, endElement);
 }
Esempio n. 9
0
 public DomRange(DomDocumentContentElement element, int startIndex, int length)
 {
     Refresh(element, startIndex, length);
 }
Esempio n. 10
0
        /// <summary>
        /// 设置容器元素的可见性
        /// </summary>
        /// <param name="visible">新的可见性</param>
        /// <param name="fastMode">是否启用快速模式,当使用快速模式时,
        /// 只更新DOM结构,不更新用户界面视图</param>
        /// <returns>操作是否成功</returns>
        public virtual bool EditorSetVisible(bool visible, bool fastMode)
        {
            bool result     = false;
            bool oldVisible = this.Visible;

            if (oldVisible != visible)
            {
                this.Visible = visible;
                bool visible2 = this.Visible;
                if (visible2 == visible)
                {
                    this.InvalidateView();
                    // 成功的修改了元素的可见性
                    if (visible)
                    {
                        this.OwnerDocument.HighlightManager.InvalidateHighlightInfo(this);
                    }
                    else
                    {
                        this.OwnerDocument.HighlightManager.Remove(this);
                    }
                    result = true;
                    DomElement        fc      = this.FirstContentElement;
                    DomElement        lc      = this.LastContentElement;
                    DomContentElement content = this.ContentElement;
                    int        startIndex     = 0;
                    DomElement preElement     = content.PrivateContent.GetPreElement(fc);
                    if (oldVisible)
                    {
                        startIndex = content.PrivateContent.IndexOf(fc);
                    }
                    this.UpdateContentVersion();
                    DomDocumentContentElement dce = this.DocumentContentElement;
                    DomElement currentElementBack = dce.CurrentElement;
                    content.UpdateContentElements(true);
                    if (oldVisible == false)
                    {
                        startIndex = content.PrivateContent.IndexOf(fc);
                    }
                    else
                    {
                        if (preElement != null && content.PrivateContent.Contains(preElement))
                        {
                            startIndex = content.PrivateContent.IndexOf(preElement);
                        }
                    }
                    content.RefreshPrivateContent(startIndex, -1, fastMode);
                    if (fastMode == false)
                    {
                        if (currentElementBack != null)
                        {
                            int index = dce.Content.IndexOf(currentElementBack);
                            if (index >= 0)
                            {
                            }
                        }
                    }
                }
            }
            return(result);
        }
Esempio n. 11
0
 /// <summary>
 /// 初始化对象
 /// </summary>
 public DomSelection(DomDocumentContentElement dce)
 {
     _DocumentContent = dce;
 }