private async Task SetPluginCollection()
        {
            var pluginList = await Task.Run(() =>
            {
                var pluginManager = new PluginManager(PluginDirectory);
                return(pluginManager.ValidPlugins(typeof(IDataEngineHostView))
                       .Select(token => new PluginViewModel(token))
                       .ToList());
            });

            PluginCollection = CollectionViewSource.GetDefaultView(pluginList);
            PluginCollection.GroupDescriptions.Add(new PropertyGroupDescription("Prefix", null, StringComparison.InvariantCultureIgnoreCase));
            PluginCollection.SortDescriptions.Add(new SortDescription("Prefix", ListSortDirection.Ascending));
            PluginCollection.SortDescriptions.Add(new SortDescription("PluginName", ListSortDirection.Ascending));
            PluginCollection.Filter += Filter;
            PluginCollection.MoveCurrentToFirst();

            var selected = JsonConvert.DeserializeObject <PluginConfig>(Settings.Default.SelectedPlugin ?? "");

            SelectedPlugin = pluginList.FirstOrDefault(p => p.PluginName == selected?.PluginName);
            if (SelectedPlugin != null)
            {
                SelectedPlugin.HostType         = selected.HostType;
                SelectedPlugin.TeradataHostType = selected.TeradataHostType;
                SelectedPlugin.RestartDelay     = selected.RestartDelay;
                SelectedPlugin.TestEmail        = selected.TestEmail;
            }
            else
            {
                SelectedPlugin = PluginCollection.CurrentItem as PluginViewModel;
            }
        }