public override FileTemplateResult Create(FileTemplateOptions options) { FileTemplateResult result = new FileTemplateResult(options); StandardHeader.SetHeaders(); StringParserPropertyContainer.FileCreation["StandardNamespace"] = options.Namespace; StringParserPropertyContainer.FileCreation["FullName"] = options.FileName; StringParserPropertyContainer.FileCreation["FileName"] = Path.GetFileName(options.FileName); StringParserPropertyContainer.FileCreation["FileNameWithoutExtension"] = Path.GetFileNameWithoutExtension(options.FileName); StringParserPropertyContainer.FileCreation["Extension"] = Path.GetExtension(options.FileName); StringParserPropertyContainer.FileCreation["Path"] = Path.GetDirectoryName(options.FileName); StringParserPropertyContainer.FileCreation["ClassName"] = options.ClassName; // when adding a file to a project (but not when creating a standalone file while a project is open): var project = options.Project; if (project != null && !options.IsUntitled) { // add required assembly references to the project foreach (ReferenceProjectItem reference in RequiredAssemblyReferences) { IEnumerable <ProjectItem> refs = project.GetItemsOfType(ItemType.Reference); if (!refs.Any(projItem => string.Equals(projItem.Include, reference.Include, StringComparison.OrdinalIgnoreCase))) { ReferenceProjectItem projItem = (ReferenceProjectItem)reference.CloneFor(project); ProjectService.AddProjectItem(project, projItem); ProjectBrowserPad.RefreshViewAsync(); } } } foreach (FileDescriptionTemplate newfile in FileDescriptionTemplates) { if (!IsFilenameAvailable(StringParser.Parse(newfile.Name))) { MessageService.ShowError(string.Format("Filename {0} is in use.\nChoose another one", StringParser.Parse(newfile.Name))); // TODO : translate return(null); } } ScriptRunner scriptRunner = new ScriptRunner(); foreach (FileDescriptionTemplate newFile in FileDescriptionTemplates) { FileOperationResult opresult = FileUtility.ObservedSave( () => { string resultFile; if (!String.IsNullOrEmpty(newFile.BinaryFileName)) { resultFile = SaveFile(newFile, null, newFile.BinaryFileName, options); } else { resultFile = SaveFile(newFile, scriptRunner.CompileScript(this, newFile), null, options); } if (resultFile != null) { result.NewFiles.Add(FileName.Create(resultFile)); } }, FileName.Create(StringParser.Parse(newFile.Name)) ); if (opresult != FileOperationResult.OK) { return(null); } } if (project != null) { project.Save(); } // raise FileCreated event for the new files. foreach (var fileName in result.NewFiles) { FileService.FireFileCreated(fileName, false); } return(result); }