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);
        }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 3
0
        public static void CreateFileWithinProject(TestCopProjectItem projectItem, string targetFile)
        {
            var testCopFileCreater = Shell.Instance.GetComponent <TestCopFileCreater>();

            testCopFileCreater.CreateFileWithinProject(projectItem, targetFile);
        }
Ejemplo n.º 4
0
        //------------------------------------------------------------------------------------------------------------------------
        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));
 }