Пример #1
0
        private Word.Range AdjustRange(Word.Range range, Annotation annotation)
        {
            String initialText    = range.GetCleanedText();
            bool   match          = IsMatch(range, annotation);
            String rangeText      = "";
            int    offset         = Int32.MinValue;
            object rangeStart     = range.Start;
            object rangeEnd       = range.End;
            int    rangeLength    = (int)rangeEnd - (int)rangeStart - 1;
            object selectionStart = annotation.Selection[0];

            try
            {
                while (!match)
                {
                    offset = range.Text.IndexOf((char)selectionStart);
                    object start = range.Start + (int)offset;
                    object end   = range.Start + rangeLength + (int)offset;
                    do
                    {
                        //extend the range to the selection length
                        range = document.Range(ref start, ref end);
                        range.TextRetrievalMode.IncludeHiddenText = false;
                        rangeText = range.GetCleanedText();
                        end       = (int)end + 1;
                    } while (rangeText.Length != annotation.Selection.GetCleanedText().Length);
                    if (IsMatch(range, annotation))
                    {
                        match = true;
                    }
                    else if (offset < 0)
                    {
                        //if not found return initial range
                        return(document.Range(ref rangeStart, ref rangeEnd));
                    }
                    else if (offset == 0)
                    {
                        start = (int)start + 1;
                        end   = (int)start + 1;
                        range = document.Range(ref start, ref end);
                    }
                }
            }
            catch (NullReferenceException nre)
            {
                Log.Exception(nre);
                return(null);
            }
            return(range);
        }
Пример #2
0
        /// <summary>
        /// Determines if a Word range is matching the selected text for an annotation
        /// </summary>
        /// <param name="range">The Word range to be verified.</param>
        /// <param name="annotation">The displayed annotation.</param>
        /// <returns>True if the range contains the annotated text and does not start with white spaces.</returns>
        private bool IsMatch(Word.Range range, Annotation annotation)
        {
            String rangeText    = range.GetCleanedText();
            String selectedText = annotation.Selection.GetCleanedText();
            bool   match        = (rangeText == selectedText) && (range.Text[0] == annotation.Selection[0]);

            match = match && (!range.Text[0].ToString().IsWhiteSpace());
            match = match && (!range.Text[range.Text.Length - 1].ToString().IsWhiteSpace());
            return(match);
        }