protected override void Execute() { var editorController = SdlTradosStudio.Application.GetController <EditorController>(); var document = editorController.ActiveDocument; if (document == null) { return; } var viewPartController = SdlTradosStudio.Application.GetController <RegexMatchAutoSuggestProviderViewPartController>(); if (viewPartController == null) { return; } var regexPatternEntries = viewPartController.RegexPatternEntries; if (regexPatternEntries == null) { return; } var segmentPair = document.ActiveSegmentPair; if (segmentPair == null) { return; } if (document.FocusedDocumentContent != FocusedDocumentContent.Target) { return; } var activeProcess = CaretPosition.GetActiveProcess(); if (activeProcess != "SDLTradosStudio") { return; } var text = string.Join("", segmentPair.Source.AllSubItems.OfType <IText>().Select(txt => txt.Properties.Text)); Task <List <AutoSuggestEntry> > .Factory.StartNew( () => { var variables = viewPartController.Variables; return(regexPatternEntries.GetAutoSuggestEntries(text, variables)); }) .ContinueWith(task => { if (task.Result.Count > 0) { var content = new PopupWindowContent(task.Result); var caretPosition = CaretPosition.EvaluateCarePosition(); _popupToolStrip.Show(caretPosition, content); } }, TaskScheduler.FromCurrentSynchronizationContext()); }