public void CreateFileWithinProject([NotNull] TestCopProjectItem projectItem, [NotNull] string targetFile) { var desiredTemplateName = LookupTemplateName(projectItem.Project); var boundSettingsStore = _settingsStore.BindToContextTransient(ContextRange.ApplicationWide); var context = _dataContexts.CreateOnActiveControl(_lifetime); var applicableFileTemplateScopes = _scopeManager.EnumerateRealScopePoints(new TemplateAcceptanceContext(new ProjectFolderWithLocation(projectItem.Project))); applicableFileTemplateScopes = applicableFileTemplateScopes.Distinct().Where(s => s is InLanguageSpecificProject).ToList(); var classTemplate = _storedTemplatesProvider.EnumerateTemplates(boundSettingsStore, TemplateApplicability.File) .Where(x => x.Description == desiredTemplateName && TemplateScopeManager.TemplateIsAvailable(x, applicableFileTemplateScopes)) .Select(x => x) .FirstOrDefault(); if (classTemplate == null) { ResharperHelper.AppendLineToOutputWindow(string.Format("File Template for '{0}' not found with default to 'Class'", desiredTemplateName)); classTemplate = LoadTemplateFromQuickList(context, "Class"); } IProjectFolder folder = (IProjectFolder)projectItem.Project.FindProjectItemByLocation(projectItem.SubNamespaceFolder) ?? GetOrCreateProjectFolder(projectItem); if (folder == null) { ResharperHelper.AppendLineToOutputWindow("Error failed to create/location project folder" + projectItem.SubNamespaceFolder); return; } string extension = Enumerable.First(_fileExtensions.GetExtensions(projectItem.Project.ProjectProperties.DefaultLanguage.DefaultProjectFileType)); FileTemplatesManager.Instance.CreateFileFromTemplate(targetFile + extension, new ProjectFolderWithLocation(folder), classTemplate); }
public IList <TestCopProjectItem> GetAssociatedProjectFor(IProject currentProject, IProjectFile projectFile, string overrideClassName = null) { string currentNamespace = projectFile.CalculateExpectedNamespace(projectFile.GetPrimaryPsiFile().Language); var fileNameToProcess = projectFile.Location.NameWithoutExtension; fileNameToProcess = fileNameToProcess.RemoveTrailing(".partial"); var directoryPath = TestCopProjectItem.ExtractFolders(projectFile).AsIList(); return(GetAssociatedProject(currentProject, string.IsNullOrEmpty(overrideClassName) ? fileNameToProcess : overrideClassName, currentNamespace, directoryPath)); }
public static void CreateFileWithinProject(TestCopProjectItem projectItem, string targetFile) { var testCopFileCreater = Shell.Instance.GetComponent <TestCopFileCreater>(); testCopFileCreater.CreateFileWithinProject(projectItem, targetFile); }
//------------------------------------------------------------------------------------------------------------------------ private static List <SimpleMenuItem> AddCreateFileMenuItem(Lifetime lifetime, TestCopProjectItem projectItem, string targetFile) { var menuItems = new List <SimpleMenuItem>(); var result = new SimpleMenuItem("Create associated file" , null, ResharperHelper.ProtectActionFromReEntry(lifetime, "TestingMenuNavigation", () => ResharperHelper.CreateFileWithinProject(projectItem, targetFile))); result.Style = MenuItemStyle.Enabled; result.Icon = UnnamedThemedIcons.Agent16x16.Id; result.Text = new RichText("Create ", TextStyle.FromForeColor(Color.Green)).Append(targetFile, TextStyle.FromForeColor(TextStyle.DefaultForegroundColor)); result.ShortcutText = new RichText("(" + projectItem.Project.GetPresentableProjectPath() + projectItem.SubNamespaceFolder.FullPath.RemoveLeading( projectItem.Project.ProjectFileLocation.Directory.FullPath) + ")", TextStyle.FromForeColor(Color.LightGray)); menuItems.Add(result); return(menuItems); }
private static IProjectFolder GetOrCreateProjectFolder(TestCopProjectItem projectItem) { ///TODO: Need to create folders honouring the namespace provider setting defined with projectItem return(projectItem.Project.GetOrCreateProjectFolder(projectItem.SubNamespaceFolder)); }