public void RecordCoreState()
 {
     lock (m_Lock)
     {
         CoreState = GetCoreState();
     }
 }
        public void RecordRedoUndo(Action action)
        {
            if (action is null)
            {
                throw new ArgumentNullException(nameof(action));
            }

            lock (m_Lock)
            {
                CoreStateModel before = CoreState;
                action();
                CoreStateModel after = GetCoreState();

                ClearRedoStack();
                m_UndoStack.Push(new UndoRedoCommandPair(
                                     new DelegateCommand <CoreStateModel>(ReplaceCoreState, CanReplaceCoreState), before,
                                     new DelegateCommand <CoreStateModel>(ReplaceCoreState, CanReplaceCoreState), after));

                RaiseCanExecuteChangedAllCommands();
            }
        }
        private void SetCoreState(CoreStateModel coreState)
        {
            if (coreState is null)
            {
                return;
            }

            lock (m_Lock)
            {
                try
                {
                    IsBusy = true;

                    ClearManagedActivities();

                    m_ArrowGraphSettingsModel = coreState.ArrowGraphSettings;
                    m_ResourceSettingsModel   = coreState.ResourceSettings;

                    m_ProjectStart    = coreState.ProjectStart;
                    m_UseBusinessDays = coreState.UseBusinessDays;
                    m_ShowDates       = coreState.ShowDates;
                    RaisePropertyChanged(nameof(ProjectStart));
                    RaisePropertyChanged(nameof(UseBusinessDays));
                    RaisePropertyChanged(nameof(ShowDates));

                    AddManagedActivities(new HashSet <DependentActivityModel>(coreState.DependentActivities));

                    RunAutoCompile();

                    RecordCoreState();
                }
                finally
                {
                    IsBusy = false;
                }
            }
        }
 private bool CanReplaceCoreState(CoreStateModel coreState)
 {
     return(true);
 }
 private void ReplaceCoreState(CoreStateModel coreState)
 {
     SetCoreState(coreState);
 }