public void InitializeView(ITestModel model, TestCentricPresenter presenter)
        {
            Model        = model;
            Presenter    = presenter;
            UserSettings = model.Services.UserSettings;

            LoadAlternateImages();

            Model.Events.TestLoaded += (TestNodeEventArgs e) =>
            {
                CheckPropertiesDialog();
                Presenter.EnableRunCommand(true);
                runCommandEnabled = true;
            };

            Model.Events.TestReloaded += (TestNodeEventArgs e) =>
            {
                if (e.Test != null)
                {
                    Invoke(new LoadHandler(Reload), new object[] { e.Test });
                }
            };

            Model.Events.TestsUnloading += (TestEventArgs e) =>
            {
                ClosePropertiesDialog();

                if (UserSettings.Gui.TestTree.SaveVisualState)
                {
                    try
                    {
                        new VisualState(this).Save(VisualState.GetVisualStateFileName(Model.TestFiles[0]));
                    }
                    catch (Exception ex)
                    {
                        Debug.WriteLine("Unable to save visual state.");
                        Debug.WriteLine(ex);
                    }
                }

                Clear();
                explicitlySelectedNode = null;
                runCommandEnabled      = false;
            };

            Model.Events.RunStarting += (RunStartingEventArgs e) =>
            {
                CheckPropertiesDialog();

#if ACCUMULATE_RESULTS
                if (runningTests != null)
                {
                    foreach (ITest test in runningTests)
                    {
                        this[test].ClearResults();
                    }
                }
#else
                ClearAllResults();
#endif

                runCommandEnabled = false;
            };

            Model.Events.RunFinished += (TestResultEventArgs e) =>
            {
                if (runningTests != null)
                {
                    foreach (TestNode test in runningTests)
                    {
                        this[test.Id].Expand();
                    }
                }

                if (propertiesDialog != null)
                {
                    propertiesDialog.Invoke(new PropertiesDisplayHandler(propertiesDialog.DisplayProperties));
                }

                runningTests      = null;
                runCommandEnabled = true;
            };

            Model.Events.TestFinished += (TestResultEventArgs e) =>
            {
                SetTestResult(e.Result);
            };

            Model.Events.SuiteFinished += (TestResultEventArgs e) =>
            {
                SetTestResult(e.Result);
            };

            //Services.UserSettings.Changed += (object sender, SettingsEventArgs e) =>
            //{
            //    if (args.SettingName == "Gui.TestTree.AlternateImageSet")
            //    {
            //        LoadAlternateImages();
            //        Invalidate();
            //    }
            //};

            //Model.Events.CategorySelectionChanged += (TestEventArgs e) =>
            //{
            //    TestNodeFilter filter = TestNodeFilter.Empty;

            //    if (Model.SelectedCategories.Length > 0)
            //    {
            //        filter = new CategoryFilter(Model.SelectedCategories);
            //        if (Model.ExcludeSelectedCategories)
            //            filter = new NotFilter(filter);
            //    }

            //    TreeFilter = filter;
            //};
        }