Exemplo n.º 1
0
        private static void SelectEnvAndExt(ToolWindow envs, string viewId, Type extension, int retries)
        {
            if (retries <= 0)
            {
                Debug.Fail("Failed to select environment/extension after multiple retries");
                return;
            }
            var select = envs.IsLoaded ? envs.Environments.OfType <EnvironmentView>().FirstOrDefault(e => e.Configuration.Id == viewId) : null;

            if (select == null)
            {
                envs.Dispatcher.InvokeAsync(() => SelectEnvAndExt(envs, viewId, extension, retries - 1), DispatcherPriority.Background);
                return;
            }

            envs.OnViewSelected(select);

            var ext = select?.Extensions.FirstOrDefault(e => e != null && extension.IsEquivalentTo(e.GetType()));

            envs.Environments.MoveCurrentTo(select);
            if (ext != null)
            {
                var exts = envs.Extensions;
                if (exts != null && exts.Contains(ext))
                {
                    exts.MoveCurrentTo(ext);
                    ((ext as IEnvironmentViewExtension)?.WpfObject as ICanFocus)?.Focus();
                }
            }
        }