public void ToggleProvider(TailProviderInfo eventArgs)
 {
     if (_viewModels.ContainsKey(eventArgs.Type))
     {
         // Set the active item.
         ActivateItem(_viewModels[eventArgs.Type]);
     }
     else
     {
         // Close the currently active item.
         this.CloseItem(ActiveItem);
     }
 }
        public StreamConfigurationViewModel(ITailProviderService providerService, IEventAggregator eventAggregator)
        {
            _providerService = providerService;
            _eventAggregator = eventAggregator;
            _viewModels      = new Dictionary <Type, ITailConfiguration>();

            // Create the provider information.
            var providers = new List <TailProviderInfo>();

            foreach (var type in providerService.GetProviderTypes())
            {
                var name = _providerService.GetDisplayName(type);
                if (string.IsNullOrWhiteSpace(name))
                {
                    continue;
                }

                var viewModel = _providerService.CreateConfigurationViewModel(type);
                if (viewModel != null)
                {
                    _viewModels.Add(type, viewModel);
                }

                providers.Add(new TailProviderInfo(name, type));
            }

            // Sort all providers by name.
            _providers = new List <TailProviderInfo>(providers.OrderBy(p => p.Name));

            // Select the first provider in the list.
            if (_providers.Count > 0)
            {
                SelectedProvider = Providers[0];
                ToggleProvider(Providers[0]);
            }

            // Set the display name.
            DisplayName = "Open Stream";
        }