private ManifestsViewModel GetManifestsViewModel()
        {
            var manifestsModel = new ManifestsViewModel
                {
                    AllowEdit = true,
                };

            manifestsModel.EditTestCollectionCommand = new DelegateCommand(() =>
                {
                    manifestsModel.AllowEdit = false;
                    _eventAggregator.GetEvent<EditTestCollectionEvent>().Publish(manifestsModel.SelectedManifest.Name);
                }, () => manifestsModel.AllowEdit && !manifestsModel.TestsRunning);

            manifestsModel.LoadManifestCommand = new DelegateCommand(() =>
                {
                    var dialog = new OpenFileDialog
                        {
                            Filter = "Manifest File|.manifests.json",
                        };

                    var result = dialog.ShowDialog();
                    if (result == true)
                    {
                        _configurationService.TestScriptsPath = Path.GetDirectoryName(dialog.FileName);
                        _manifestService.ReloadManifest();
                        LoadManifests(manifestsModel);
                    }
                }, () => !manifestsModel.TestsRunning);

            manifestsModel.SelectedManifestChangedCommand = new DelegateCommand<ManifestViewModel>(
                selectedManifest =>
                    {
                        _manifestService.SetActiveManifest(selectedManifest.Name);
                        _eventAggregator.GetEvent<SelectedManifestChangedEvent>().Publish(selectedManifest.Name);
                    });

            LoadManifests(manifestsModel);

            return manifestsModel;
        }
        public ManifestsView(ManifestsViewModel viewModel)
        {
            InitializeComponent();

            DataContext = viewModel;
        }
        private void LoadManifests(ManifestsViewModel manifestsModel)
        {
            manifestsModel.Manifests.Clear();

            try
            {
                var manifests = _manifestService.GetManifestNames();

                foreach (var manifestName in manifests)
                {
                    var manifest = _manifestService.GetManifest(manifestName);

                    manifestsModel.Manifests.Add(new ManifestViewModel
                        {
                            Name = manifestName,
                            Description = manifest.Description,
                            DomainOverride = manifest.OverrideDomain,
                            TestCollections = new ObservableCollection<TestCollectionViewModel>(LoadTestCollections(manifestName)),
                            DomainOverrideChangedCommand =
                                new DelegateCommand<string>(
                                    param => _manifestService.SetActiveManifestDomain(param != null ? param.ToString() : string.Empty))
                        });
                }

                var selectedManifestName = _manifestService.GetActiveManifestName();
                manifestsModel.SelectedManifest = manifestsModel.Manifests.FirstOrDefault(m => m.Name == selectedManifestName);
            }
            catch (Exception e)
            {
                // TODO: Get rid of the messagebox, it's a nasty blocking call.
                MessageBox.Show(e.Message, "Error Loading Manifest List", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }