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);
         }
     }
 }
예제 #2
0
        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);
                }
            }
        }