private void SubscribeToFileEvents(WorkflowFileViewModel file) { file.CloseWorkflowFileClicked += file_CloseWorkflowFileClicked; file.CloseAllButThisWorkflowFileClicked += file_CloseAllButThisWorkflowFileClicked; file.PropertyChanged += file_PropertyChanged; }
private void CreateNewWorkfow(WorkflowType workflowType) { var file = new WorkflowFileViewModel(workflowType, ++dirtyCounter); files.Add(file); ActiveWorkflowFile = file; SubscribeToFileEvents(file); }
private void file_CloseWorkflowFileClicked(object sender, WorkflowFileCloseEventArgs e) { var index = files.IndexOf(e.WorkflowFile); if (index == -1) { return; } var fileToClose = files[index]; if (!fileToClose.IsSaved) { var saveResult = QuestionResult.Yes; var saveMessage = new SaveBeforeCloseMessage( new List <WorkflowFileInfo> { new WorkflowFileInfo(fileToClose) }, null, result => { saveResult = result; }); MessengerInstance.Send(saveMessage); if (saveResult == QuestionResult.Cancel) { return; } if (saveResult == QuestionResult.Yes) { if (!fileToClose.Save()) { return; } } } files.Remove(fileToClose); if (files.Count == 0) { ActiveWorkflowFile = null; } }
private void OnOpenCommandInternal() { var openMessage = new OpenFileMessage( true, this, null, result => { if (result.PerformOpen) { var possibleNextActive = ActiveWorkflowFile; foreach (var fileName in result.FileNames.Where(f => f != null)) { if (!files.Any(f => f.FilePath == fileName)) { var newFile = new WorkflowFileViewModel(fileName); files.Add(newFile); SubscribeToFileEvents(newFile); possibleNextActive = newFile; } else { possibleNextActive = files.SingleOrDefault(f => f.FilePath == fileName); } } if (possibleNextActive != null) { ActiveWorkflowFile = possibleNextActive; } } }); MessengerInstance.Send(openMessage); }
public WorkflowFileCloseEventArgs(WorkflowFileViewModel workflowFile) { WorkflowFile = workflowFile; }