internal static IEnumerable <IDisplayBuilder> GetDisplayBuilders(FilePath filePath, string mimeType, Project ownerProject) { foreach (IDisplayBuilder displayBuilder in DisplayBuilderService.GetBuilder <IDisplayBuilder>()) { if (displayBuilder.CanHandle(filePath, mimeType, ownerProject)) { yield return(displayBuilder); } } }
private void RealOpenFile(IProgressMonitor monitor, FileOpenInfo openFileInfo) { FilePath fileName = openFileInfo.FileName; if (fileName == (FilePath)((string)null)) { monitor.ReportError("Invalid file name", (Exception)null); } else if (fileName.IsDirectory) { monitor.ReportError(string.Format("{0} is a directory", (object)fileName), (Exception)null); } else if (!File.Exists((string)fileName)) { monitor.ReportError(string.Format("File not found: {0}", (object)fileName), (Exception)null); } else { Project project = openFileInfo.Project; IViewDisplayBuilder binding; IDisplayBuilder displayBuilder; if (openFileInfo.DisplayBuilder != null) { displayBuilder = (IDisplayBuilder)(binding = openFileInfo.DisplayBuilder); } else { displayBuilder = DisplayBuilderService.GetDisplayBuilders(fileName, (string)null, project).FirstOrDefault <IDisplayBuilder>((Func <IDisplayBuilder, bool>)(d => d.CanUseAsDefault)); binding = displayBuilder as IViewDisplayBuilder; } try { if (displayBuilder != null && binding != null) { new LoadFileWrapper(monitor, this.mainWindow, binding, project, openFileInfo).Invoke((string)fileName); } } catch (Exception ex) { monitor.ReportError("Create ViewContent failed.", ex); } } }