/// <summary>
        /// Runs this instance.
        /// </summary>
        public void Run()
        {
            this.AddTraceHeader("ViewModelAndViewsController", "Run");

            if (this.VisualStudioService.IsMvvmCrossSolution)
            {
                List <ItemTemplateInfo> templateInfos = this.VisualStudioService.AllowedItemTemplates;

                ViewModelOptionsView form = new ViewModelOptionsView(templateInfos);

                form.ShowDialog();

                if (form.Continue)
                {
                    this.VisualStudioService.DTE2.WriteStatusBarMessage("Ninja Coder is running....");

                    Solution2 solution = this.VisualStudioService.DTE2.GetSolution() as Solution2;

                    List <string> messages = solution.AddItemTemplateToProjects(form.Presenter.GetRequiredItemTemplates(), true);

                    //// we now need to amend code in the unit test file that references FirstViewModel to this ViewModel
                    this.UpdateUnitTestFile(form.ViewModelName);

                    //// show the readme.
                    this.ShowReadMe("Add ViewModel and Views", messages);

                    this.WriteStatusBarMessage("Ninja Coder has completed the adding of the viewmodel and views.");
                }
            }
            else
            {
                this.ShowNotMvvmCrossSolutionMessage();
            }
        }
        /// <summary>
        /// Adds the view model and views.
        /// </summary>
        public void AddViewModelAndViews()
        {
            this.AddTraceHeader("AddViewModelAndViews");

            if (this.visualStudioService.IsMvvmCrossSolution)
            {
                List <ItemTemplateInfo> templateInfos = this.visualStudioService.AllowedItemTemplates;
                ViewModelOptionsView    form          = new ViewModelOptionsView(templateInfos);

                form.ShowDialog();

                if (form.Continue)
                {
                    this.visualStudioService.DTE2.WriteStatusBarMessage("Ninja Coder is running....");

                    Solution2 solution = this.visualStudioService.DTE2.GetSolution() as Solution2;

                    solution.AddItemTemplateToProjects(form.Presenter.GetRequiredItemTemplates());

                    //// now collapse the solution!
                    this.visualStudioService.DTE2.CollapseSolution();

                    this.visualStudioService.DTE2.WriteStatusBarMessage("Ninja Coder has completed the adding of the viewmodel and views.");
                }
            }
            else
            {
                MessageBox.Show("This solution is not a MvvmCross solution.", Settings.ApplicationName);
            }
        }
        /// <summary>
        /// Adds the view model and views.
        /// </summary>
        public void AddViewModelAndViews()
        {
            this.AddTraceHeader("AddViewModelAndViews");

            if (this.visualStudioService.IsMvvmCrossSolution)
            {
                List<ItemTemplateInfo> templateInfos = this.visualStudioService.AllowedItemTemplates;
                ViewModelOptionsView form = new ViewModelOptionsView(templateInfos);

                form.ShowDialog();

                if (form.Continue)
                {
                    this.visualStudioService.DTE2.WriteStatusBarMessage("Ninja Coder is running....");

                    Solution2 solution = this.visualStudioService.DTE2.GetSolution() as Solution2;

                    solution.AddItemTemplateToProjects(form.Presenter.GetRequiredItemTemplates());

                    //// now collapse the solution!
                    this.visualStudioService.DTE2.CollapseSolution();

                    this.visualStudioService.DTE2.WriteStatusBarMessage("Ninja Coder has completed the adding of the viewmodel and views.");
                }
            }
            else
            {
                MessageBox.Show("This solution is not a MvvmCross solution.", Settings.ApplicationName);
            }
        }