private void retrieveExtendSuggestion()
{
Suggestion lastExtension = null;
List<Suggestion> nextExtensions = null;
try
{
switch (extensionType)
{
case Suggestion.PARAGRAPH:
lastExtension = extensions[extensionPos];
nextExtensions = logic.requestExtendSuggestion(lastExtension.id, Suggestion.PARAGRAPH);
// if is completing the last sentence of paragraph
if (isCompletingLastSentenceOfPara)
{
if (nextExtensions.Count > 0)
{
Sentence lastSentence = (Sentence)lastExtension;
Sentence firstSentenceOfNextPara = (Sentence)nextExtensions[0];
if (lastSentence.paragraphID != firstSentenceOfNextPara.paragraphID)
{
return;
}
}
isCompletingLastSentenceOfPara = false;
}
break;
case Suggestion.SENTENCE:
// Send network request to Java ACP to request for suggestions
lastExtension = extensions[extensionPos];
nextExtensions = logic.requestExtendSuggestion(lastExtension.id, Suggestion.SENTENCE);
break;
case Suggestion.WORD:
lastExtension = extensions[extensionPos];
nextExtensions = logic.requestExtendSuggestion(lastExtension.id, Suggestion.SENTENCE);
break;
default:
Console.WriteLine("retrieveExtendSuggestion: Suggestion type undefined");
break;
}
if (lastExtension != null && nextExtensions != null)
{
// display suggestions
displayExtension(nextExtensions, true);
}
}
catch (System.Net.Sockets.SocketException e)
{
// Inform UI Thread to display error message
if (!isExtensionFail)
{
isExtensionFail = true;
Globals.ThisAddIn.Dispatcher.Invoke(new displayErrorMessageDelegate(displayErrorMessage), new Object[] { "Unable to communicate to the ACP backend processes", "ACP is not running on the background." });
}
}
}