async Task OpenDocument(ISiteItem siteItem, string documentName, Func <Task <IMarkpadDocument> > openDocument) { try { var openedDocs = MDI.Items.Cast <DocumentViewModel>(); var openedDoc = openedDocs.SingleOrDefault(d => d.MarkpadDocument.IsSameItem(siteItem)); if (openedDoc != null) { MDI.ActivateItem(openedDoc); } else { using (DoingWork(string.Format("Opening {0}", documentName))) { var document = await openDocument(); var doc = documentViewModelFactory(); doc.Open(document); MDI.Open(doc); } } } catch (Exception ex) { DoDefaultErrorHandling(ex, string.Format("Open {0}", documentName)); } }
public void Handle(FileOpenEvent message) { if (!fileSystem.File.Exists(message.Path)) { return; } var openedDocs = MDI.Items.Cast <DocumentViewModel>(); var fileSystemSiteItem = new FileSystemSiteItem(eventAggregator, fileSystem, message.Path); var openedDoc = openedDocs.SingleOrDefault(d => d.MarkpadDocument.IsSameItem(fileSystemSiteItem)); if (openedDoc != null) { MDI.ActivateItem(openedDoc); } else { var finishedLoading = DoingWork(string.Format("Opening {0}", message.Path)); documentFactory .OpenDocument(message.Path) .ContinueWith(t => { OpenDocumentResult(t); finishedLoading.Dispose(); }, TaskScheduler.FromCurrentSynchronizationContext()); } }
public void Handle(FileOpenEvent message) { DocumentViewModel openedDoc = GetOpenedDocument(message.Path); if (openedDoc != null) { MDI.ActivateItem(openedDoc); } else { if (File.Exists(message.Path)) { var doc = documentCreator(); doc.Open(message.Path); MDI.Open(doc); } } }
public void Handle(OpenFromWebEvent message) { var finishedWork = DoingWork(string.Format("Opening {0}", message.Name)); var openedDocs = MDI.Items.Cast <DocumentViewModel>(); var metaWebLogItem = new WebDocumentItem(null, eventAggregator, message.Id, message.Name, message.Blog); var openedDoc = openedDocs.SingleOrDefault(d => d.MarkpadDocument.IsSameItem(metaWebLogItem)); if (openedDoc != null) { MDI.ActivateItem(openedDoc); } else { documentFactory.OpenBlogPost(message.Blog, message.Id, message.Name) .ContinueWith(t => { OpenDocumentResult(t); finishedWork.Dispose(); }, TaskScheduler.FromCurrentSynchronizationContext()); } }