protected virtual bool CreateFile (FileDescriptionTemplate newfile, SolutionItem policyParent, Project project, string directory, string language, string name) { if (project != null) { var model = project.GetStringTagModel (new DefaultConfigurationSelector ()); newfile.SetProjectTagModel (model); try { if (newfile.AddToProject (policyParent, project, language, directory, name)) { newfile.Show (); return true; } } finally { newfile.SetProjectTagModel (null); } } else { SingleFileDescriptionTemplate singleFile = newfile as SingleFileDescriptionTemplate; if (singleFile == null) throw new InvalidOperationException ("Single file template expected"); if (directory != null) { string fileName = singleFile.SaveFile (policyParent, project, language, directory, name); if (fileName != null) { IdeApp.Workbench.OpenDocument (fileName, project); return true; } } else { string fileName = singleFile.GetFileName (policyParent, project, language, directory, name); Stream stream = singleFile.CreateFileContent (policyParent, project, language, fileName, name); string mimeType = GuessMimeType (fileName); IdeApp.Workbench.NewDocument (fileName, mimeType, stream); return true; } } return false; }