Пример #1
0
        public int CompareEndpoints(TextPatternRangeEndpoint endpoint, ITextRangeProvider targetRange, TextPatternRangeEndpoint targetEndpoint)
        {
            FooTextBoxRangeProvider other = targetRange as FooTextBoxRangeProvider;

            if (other == null)
            {
                throw new ArgumentException("");
            }

            if (endpoint == TextPatternRangeEndpoint.Start)
            {
                if (targetEndpoint == TextPatternRangeEndpoint.Start)
                {
                    return(this.Compare(this.start, other.start));
                }
                if (targetEndpoint == TextPatternRangeEndpoint.End)
                {
                    return(this.Compare(this.start, other.end));
                }
            }
            if (endpoint == TextPatternRangeEndpoint.End)
            {
                if (targetEndpoint == TextPatternRangeEndpoint.Start)
                {
                    return(this.Compare(this.start, other.end));
                }
                if (targetEndpoint == TextPatternRangeEndpoint.End)
                {
                    return(this.Compare(this.end, other.end));
                }
            }
            throw new ArgumentException("endpointに未知の値が指定されました");
        }
Пример #2
0
        public ITextRangeProvider[] GetSelection()
        {
            ITextRangeProvider[] ret = new ITextRangeProvider[1];
            int selStart             = this.fooTextBox.Selection.Index;
            int selLength            = this.fooTextBox.Selection.Length;

            ret[0] = new FooTextBoxRangeProvider(this.fooTextBox, selStart, selLength, this);
            return(ret);
        }
Пример #3
0
        public bool Compare(ITextRangeProvider o)
        {
            FooTextBoxRangeProvider other = o as FooTextBoxRangeProvider;

            if (other == null)
            {
                throw new ArgumentNullException("null以外の値を指定してください");
            }
            if (this.start == other.start && this.end == other.end)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Пример #4
0
        public ITextRangeProvider[] GetVisibleRanges()
        {
            ITextRangeProvider[] ret = new ITextRangeProvider[1];
            if (this.fooTextBox.LayoutLineCollection.Count == 0)
            {
                ret[0] = new FooTextBoxRangeProvider(this.fooTextBox, 0, 0, this);
            }
            else
            {
                EditView view = this.fooTextBox.View;

                int startIndex = view.GetIndexFromLayoutLine(new TextPoint(view.Src.Row, 0));
                int endIndex   = view.GetIndexFromLayoutLine(new TextPoint(view.Src.Row + view.LineCountOnScreen, 0));
                ret[0] = new FooTextBoxRangeProvider(this.fooTextBox, startIndex, endIndex - startIndex, this);
            }
            return(ret);
        }
Пример #5
0
        public void MoveEndpointByRange(TextPatternRangeEndpoint endpoint, ITextRangeProvider targetRange, TextPatternRangeEndpoint targetEndpoint)
        {
            FooTextBoxRangeProvider other = targetRange as FooTextBoxRangeProvider;

            if (other == null)
            {
                throw new ArgumentException("");
            }

            if (endpoint == TextPatternRangeEndpoint.Start)
            {
                if (targetEndpoint == TextPatternRangeEndpoint.Start)
                {
                    this.start = other.start;
                }
                if (targetEndpoint == TextPatternRangeEndpoint.End)
                {
                    this.start = other.end;
                }
                if (this.start > this.end)
                {
                    this.end = this.start;
                }
                return;
            }
            if (endpoint == TextPatternRangeEndpoint.End)
            {
                if (targetEndpoint == TextPatternRangeEndpoint.Start)
                {
                    this.end = other.start;
                }
                if (targetEndpoint == TextPatternRangeEndpoint.End)
                {
                    this.end = other.end;
                }
                return;
            }
            throw new ArgumentException("endpointに未知の値が指定されました");
        }