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);
}