Esempio n. 1
0
        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());
        }