/// <summary> /// Saves the state of the workspace. /// </summary> /// <param name="workspaceState">State of the workspace.</param> public void SaveWorkspaceState(WorkspaceState workspaceState) { var workspaceStates = new List <WorkspaceState>(); foreach (var workspace in this.Workspaces) { if (workspace.WorkspaceState == workspaceState) { // Save the new change status. workspaceState.HasChanges = false; var targetFileName = workspace.WorkspaceState.TempStorageFilename; var targetDirectory = Path.GetDirectoryName(targetFileName); if (targetDirectory == null) { throw new ArgumentNullException(nameof(targetDirectory)); } if (!Directory.Exists(targetDirectory)) { Directory.CreateDirectory(targetDirectory); } File.WriteAllText(targetFileName, workspace.Content); } workspaceStates.Add(workspace.WorkspaceState); } JsonUtils.SerializeJsonFile(this.WorkspaceStatesFileLocation, workspaceStates); workspaceState.ResetChangeState(); }