Beispiel #1
0
        public static void OpenTutorialSolution(SolutionStateTracker solutionStateTracker, int id)
        {
            var globalSettings = GlobalSettings.Instance;

            VsIntegration.CloseVsSolution();
            solutionStateTracker.NotifyAgreeToRunTutorial();
            SolutionCopyHelper.CleanUpDirectory(globalSettings.GetPath(id, PathType.WorkCopySolutionFolder));
            SolutionCopyHelper.CopySolution(globalSettings.GetPath(id, PathType.BaseSolutionFolder),
                                            globalSettings.GetPath(id, PathType.WorkCopySolutionFolder));
            VsIntegration.OpenVsSolution(globalSettings.GetPath(id, PathType.WorkCopySolutionFile));
        }
Beispiel #2
0
            public SolutionStateNotifier([NotNull] Lifetime lifetime,
                                         [NotNull] ISolution solution,
                                         [NotNull] IShellLocks shellLocks,
                                         [NotNull] ISolutionLoadTasksScheduler scheduler,
                                         [NotNull] SolutionStateTracker solutionStateTracker,
                                         [NotNull] IPsiServices psiServices)
            {
                if (lifetime == null)
                {
                    throw new ArgumentNullException("lifetime");
                }
                if (solution == null)
                {
                    throw new ArgumentNullException("solution");
                }
                if (shellLocks == null)
                {
                    throw new ArgumentNullException("shellLocks");
                }
                if (scheduler == null)
                {
                    throw new ArgumentNullException("scheduler");
                }
                if (solutionStateTracker == null)
                {
                    throw new ArgumentNullException("solutionStateTracker");
                }

                scheduler.EnqueueTask(new SolutionLoadTask("SolutionStateTracker",
                                                           SolutionLoadTaskKinds.SolutionContainer,
                                                           () => solutionStateTracker.HandleSolutionContainerCreated(solution)));

                scheduler.EnqueueTask(new SolutionLoadTask("SolutionStateTracker",
                                                           SolutionLoadTaskKinds.Done, () => solutionStateTracker.HandleSolutionOpened(solution)));

                scheduler.EnqueueTask(new SolutionLoadTask("SolutionStateTracker",
                                                           SolutionLoadTaskKinds.AfterDone, () => psiServices.CachesState.IsIdle.WhenTrueOnce(lifetime, () =>
                                                                                                                                              solutionStateTracker.HandlePsiLoaded(solution))));

                lifetime.AddAction(solutionStateTracker.HandleSolutionClosed);
            }