ACPAddIn.ExtensionMode.displayParaSentenceExtensions C# (CSharp) Метод

displayParaSentenceExtensions() приватный Метод

private displayParaSentenceExtensions ( List nextExtensions, bool addIntoExtensions ) : void
nextExtensions List
addIntoExtensions bool
Результат void
        private void displayParaSentenceExtensions(List<Suggestion> nextExtensions, bool addIntoExtensions)
        {
            Word.Range range = Globals.ThisAddIn.Application.ActiveDocument.Range(extensionRange.End, extensionRange.End);
            Sentence lastExtendedSentence = (Sentence)extensions[extensionPos];

            range.ParagraphFormat.SpaceAfter = 0;

            switch (extensionType)
            {
                case Suggestion.PARAGRAPH:
                    if (nextExtensions.Count > 0)
                    {
                        if (((Sentence)nextExtensions[0]).paragraphID == lastExtendedSentence.paragraphID)
                        {
                            bool canStartExtending = false; // for usage to extend paragraph that is similar with the last sentence

                            foreach (Suggestion e in nextExtensions)
                            {
                                Sentence s = (Sentence)e;

                                if (!canStartExtending)
                                {
                                    if (String.Compare(s.content, lastExtendedSentence.content, false) == 0)
                                        canStartExtending = true;
                                }
                                else // if(canStartExtending)
                                {
                                    range.Text += s.content + extraSpace;
                                    extensionPos++;

                                    // if extensionPos hit more than or equal to the count of extension list, add the sentence
                                    if (extensions.Count <= extensionPos)
                                        extensions.Add(s);
                                }

                            }
                        }
                        else // if (((Sentence)nextExtensions[0]).paragraphID != lastExtendedSentence.paragraphID)
                        {
                            range.InsertParagraphAfter();
                            range.InsertParagraphAfter();
                            paragraphPos.Add(extensionPos); // store extensionPos that have additional 1 paragraph space

                            foreach (Suggestion e in nextExtensions)
                            {
                                Sentence s = (Sentence)e;

                                range.Text += s.content + extraSpace;
                                extensionPos++;

                                // if extensionPos hit more than or equal to the count of extension list, add the sentence
                                if (extensions.Count <= extensionPos)
                                    extensions.Add(e);
                            }
                        }
                    }
                    break;
                case Suggestion.SENTENCE:
                    foreach (Suggestion e in nextExtensions) // Will only have one suggestion
                    {
                        range.Text = ((Sentence)e).content + extraSpace;
                        extensionPos++;

                        if (addIntoExtensions)
                            extensions.Add(e);
                    }
                    break;
                case Suggestion.WORD:
                    foreach (Suggestion e in nextExtensions) // Will only have one suggestion
                    {
                        extensionWordPos = 0;

                        currentExtensionPosWordList = ((Sentence)e).content.Split(wordListSplitChar).ToList();
                        range.Text = currentExtensionPosWordList[extensionWordPos] + extraSpace;
                        extensionPos++;

                        if (addIntoExtensions)
                            extensions.Add(e);
                    }
                    break;
                default:
                    Console.WriteLine("displayExtension: Suggestion type undefined");
                    break;

            }

            if (range.Text != null)
            {
                extensionRange.MoveEnd(Word.WdUnits.wdCharacter, new StringInfo(range.Text).LengthInTextElements);
            }

            // Reposition the cursor to the end of the sentence that is just pasted
            int position = extensionRange.End;
            Globals.ThisAddIn.Application.Selection.SetRange(position, position);
            highlight(extensionRange);

            scrollToRange(extensionRange);
        }