Beispiel #1
0
        private void AddMethodToClass(CodeElements codeElements, string className, string methodCode)
        {
            CodeClass featureReceiverClass = GetClassByName(codeElements, className);

            //add the method to the class
            if (featureReceiverClass != null)
            {
                EditPoint2 editPoint = (EditPoint2)featureReceiverClass.GetEndPoint(vsCMPart.vsCMPartBody).CreateEditPoint();

                StringReader reader = new StringReader(methodCode);
                string       line   = reader.ReadLine();
                while (line != null)
                {
                    editPoint.InsertNewLine(1);
                    editPoint.Indent(null, 2);
                    editPoint.Insert(line);
                    line = reader.ReadLine();
                }

                editPoint.InsertNewLine(1);

                Helpers.LogMessage(featureReceiverClass.DTE, featureReceiverClass.DTE, Helpers.GetFullPathOfProjectItem(featureReceiverClass.ProjectItem) + ": Added new method");
            }
            else
            {
                throw new Exception("Class " + className + " not found");
            }
        }
Beispiel #2
0
        public void GetEndPoint_AttributesWithDelimiter()
        {
            CodeClass testObject = GetCodeClass("Bar");

            TextPoint endPoint = testObject.GetEndPoint(vsCMPart.vsCMPartAttributesWithDelimiter);

            Assert.Equal(7, endPoint.Line);
            Assert.Equal(15, endPoint.LineCharOffset);
        }
Beispiel #3
0
        public void GetEndPoint_Navigate()
        {
            CodeClass testObject = GetCodeClass("Bar");

            TextPoint endPoint = testObject.GetEndPoint(vsCMPart.vsCMPartNavigate);

            Assert.Equal(8, endPoint.Line);
            Assert.Equal(17, endPoint.LineCharOffset);
        }
Beispiel #4
0
        public void GetEndPoint_WholeWithAttributes()
        {
            CodeClass testObject = GetCodeClass("Bar");

            TextPoint endPoint = testObject.GetEndPoint(vsCMPart.vsCMPartWholeWithAttributes);

            Assert.Equal(19, endPoint.Line);
            Assert.Equal(2, endPoint.LineCharOffset);
        }
Beispiel #5
0
        public async Task GetEndPoint_Body()
        {
            CodeClass testObject = await GetCodeClassAsync("Bar");

            TextPoint endPoint = testObject.GetEndPoint(vsCMPart.vsCMPartBody);

            Assert.Equal(19, endPoint.Line);
            Assert.Equal(1, endPoint.LineCharOffset);
        }
Beispiel #6
0
        public void GetEndPoint_Body_BeforeOtherClass()
        {
            CodeClass testObject = GetCodeClass("Foo", "Bar");

            TextPoint endPoint = testObject.GetEndPoint(vsCMPart.vsCMPartBody);

            Assert.Equal(20, endPoint.Line);
            Assert.Equal(1, endPoint.LineCharOffset);
        }
        public void GetEndPoint_Body_BeforeNamespace()
        {
            CodeClass testObject = GetCodeClass("Goo");

            TextPoint endPoint = testObject.GetEndPoint(vsCMPart.vsCMPartBody);

            Assert.Equal(20, endPoint.Line);
            Assert.Equal(1, endPoint.LineCharOffset);
        }
Beispiel #8
0
        public async Task GetEndPoint_Body_BeforeNamespace()
        {
            CodeClass testObject = await GetCodeClassAsync("Foo");

            TextPoint endPoint = testObject.GetEndPoint(vsCMPart.vsCMPartBody);

            Assert.Equal(20, endPoint.Line);
            Assert.Equal(1, endPoint.LineCharOffset);
        }
Beispiel #9
0
        public void GetEndPoint_Body()
        {
            CodeClass testObject = GetCodeClass("Bar");

            TextPoint endPoint = testObject.GetEndPoint(vsCMPart.vsCMPartBody);

            Assert.Equal(19, endPoint.Line);
            Assert.Equal(1, endPoint.LineCharOffset);
        }
Beispiel #10
0
        public async Task GetEndPoint_Navigate()
        {
            CodeClass testObject = await GetCodeClassAsync("Bar");

            TextPoint endPoint = testObject.GetEndPoint(vsCMPart.vsCMPartNavigate);

            Assert.Equal(8, endPoint.Line);
            Assert.Equal(17, endPoint.LineCharOffset);
        }
Beispiel #11
0
        /// <summary>
        /// 编辑AppConst文件
        /// </summary>
        /// <param name="applicationProject"></param>
        private void SetConst(Project applicationProject)
        {
            ProjectItem customAppConstProjectItem = applicationProject.ProjectItems.Item("AppConsts.cs");

            if (customAppConstProjectItem != null)
            {
                CodeClass codeClass  = GetClass(customAppConstProjectItem.FileCodeModel.CodeElements);
                var       insertCode = codeClass.GetEndPoint(vsCMPart.vsCMPartBody).CreateEditPoint();
                insertCode.Insert("            public const int MaxPageSize = 1000;\r\n");
                insertCode.Insert("            public const int DefaultPageSize = 10;\r\n");
                customAppConstProjectItem.Save();
            }
        }
Beispiel #12
0
        /// <summary>
        /// Get EndPoint of specified element of parent object.
        /// </summary>
        public TextPoint GetEndPoint(vsCMPart part)
        {
            if (parentClass != null)
            {
                return(parentClass.GetEndPoint(part));
            }
            else
            if (parentStruct != null)
            {
                return(parentStruct.GetEndPoint(part));
            }

            return(null);
        }
Beispiel #13
0
        public EditPoint GetHeaderFileEditPoint()
        {
            ThreadHelper.ThrowIfNotOnUIThread();

            CodeClass codeClass = GetClass(GetActiveDocument());

            if (codeClass == null)
            {
                ErrorHandler.ShowMessageBox("Can not find a class in the header file.");
                return(null);
            }

            return(codeClass.GetEndPoint(vsCMPart.vsCMPartBody).CreateEditPoint());
        }
Beispiel #14
0
        /// <summary>
        /// 编辑PermissionNames.cs\AuthorizationProvider.cs
        /// </summary>
        /// <param name="topProject"></param>
        /// <param name="model"></param>
        private void CreatePermission(CreateFileInput model, ProjectItem applicationContractsProjectItem)
        {
            ProjectItem permissionStatement  = applicationContractsProjectItem.SubProject.ProjectItems.Item("Permissions").ProjectItems.Item(model.AbsoluteNamespace + "Permissions.cs");
            ProjectItem permissionDefinition = applicationContractsProjectItem.SubProject.ProjectItems.Item("Permissions").ProjectItems.Item(model.AbsoluteNamespace + "PermissionDefinitionProvider.cs");

            if (permissionStatement != null)
            {
                CodeClass permissionCodeClass = GetClass(permissionStatement.FileCodeModel.CodeElements);
                EditPoint permissionPoint     = permissionCodeClass.GetEndPoint(vsCMPart.vsCMPartBody).CreateEditPoint();
                permissionPoint.Insert("\r\n");
                permissionPoint.Insert($"public static class {model.ClassName}s\r\n");
                permissionPoint.Insert("{\r\n");
                permissionPoint.Insert($"public const string Default = GroupName + \".{model.ClassName}\";\r\n");
                permissionPoint.Insert($"public const string Create = Default + \".Create\";\r\n");
                permissionPoint.Insert($"public const string Update = Default + \".Update\";\r\n");
                permissionPoint.Insert($"public const string Delete = Default + \".Delete\";\r\n");
                permissionPoint.Insert("}\r\n");

                if (permissionDefinition != null)
                {
                    CodeClass authorizationCodeClass = GetClass(permissionDefinition.FileCodeModel.CodeElements);
                    var       codeChilds             = authorizationCodeClass.Members;
                    foreach (CodeElement codeChild in codeChilds)
                    {
                        if (codeChild.Kind == vsCMElement.vsCMElementFunction && codeChild.Name == "Define")
                        {
                            EditPoint authorizationPoint = codeChild.GetEndPoint(vsCMPart.vsCMPartBody).CreateEditPoint();
                            authorizationPoint.Insert("\r\n");
                            authorizationPoint.Insert($"var {model.CamelClassName}s = {model.CamelAbsoluteNamespace}Group.AddPermission({model.AbsoluteNamespace}Permissions.{model.ClassName}s.Default, L(\"Permission:{model.ClassName}s\"));\r\n");
                            authorizationPoint.Insert($"{model.CamelClassName}s.AddChild({model.AbsoluteNamespace}Permissions.{model.ClassName}s.Create, L(\"Permission:Create\"));\r\n");
                            authorizationPoint.Insert($"{model.CamelClassName}s.AddChild({model.AbsoluteNamespace}Permissions.{model.ClassName}s.Update, L(\"Permission:Edit\"));\r\n");
                            authorizationPoint.Insert($"{model.CamelClassName}s.AddChild({model.AbsoluteNamespace}Permissions.{model.ClassName}s.Delete, L(\"Permission:Delete\"));\r\n");
                            authorizationPoint.Insert("\r\n");
                        }
                    }
                }
            }
        }
Beispiel #15
0
        /// <summary>
        /// 编辑PermissionNames.cs\AuthorizationProvider.cs
        /// </summary>
        /// <param name="topProject"></param>
        /// <param name="model"></param>
        private void EditPermission(Project topProject, CreateFileInput model)
        {
            ProjectItem permissionNameItem            = topProject.ProjectItems.Item("Authorization").ProjectItems.Item("PermissionNames.cs");
            ProjectItem authorizationProviderNameItem = topProject.ProjectItems.Item("Authorization").ProjectItems.Item(model.AbsoluteNamespace + "AuthorizationProvider.cs");

            if (permissionNameItem != null)
            {
                CodeClass permissionCodeClass = GetClass(permissionNameItem.FileCodeModel.CodeElements);
                EditPoint permissionPoint     = permissionCodeClass.GetEndPoint(vsCMPart.vsCMPartBody).CreateEditPoint();
                permissionPoint.Insert("\r\n");
                permissionPoint.Insert($"public const string Pages_Administration_{model.ClassName}s = \"Pages.Administration.{model.ClassName}s\";\r\n");
                permissionPoint.Insert($"public const string Pages_Administration_{model.ClassName}s_Create = \"Pages.Administration.{model.ClassName}s.Create\";\r\n");
                permissionPoint.Insert($"public const string Pages_Administration_{model.ClassName}s_Edit = \"Pages.Administration.{model.ClassName}s.Edit\";\r\n");
                permissionPoint.Insert($"public const string Pages_Administration_{model.ClassName}s_Delete = \"Pages.Administration.{model.ClassName}s.Delete\";\r\n");
                permissionPoint.Insert($"public const string Pages_Administration_{model.ClassName}s_BatchDelete = \"Pages.Administration.{model.ClassName}s.BatchDelete\";\r\n");

                if (authorizationProviderNameItem != null)
                {
                    CodeClass authorizationCodeClass = GetClass(authorizationProviderNameItem.FileCodeModel.CodeElements);
                    var       codeChilds             = authorizationCodeClass.Members;
                    foreach (CodeElement codeChild in codeChilds)
                    {
                        if (codeChild.Kind == vsCMElement.vsCMElementFunction && codeChild.Name == "SetPermissions")
                        {
                            EditPoint authorizationPoint = codeChild.GetEndPoint(vsCMPart.vsCMPartBody).CreateEditPoint();
                            authorizationPoint.Insert("\r\n");
                            authorizationPoint.Insert($"var {model.CamelClassName}s = administration.CreateChildPermission(PermissionNames.Pages_Administration_{model.ClassName}s, L(\"{model.ClassName}s\"));\r\n");
                            authorizationPoint.Insert($"{model.CamelClassName}s.CreateChildPermission(PermissionNames.Pages_Administration_{model.ClassName}s_Create, L(\"CreatingNew{model.ClassName}\"));\r\n");
                            authorizationPoint.Insert($"{model.CamelClassName}s.CreateChildPermission(PermissionNames.Pages_Administration_{model.ClassName}s_Edit, L(\"Editing{model.ClassName}\"));\r\n");
                            authorizationPoint.Insert($"{model.CamelClassName}s.CreateChildPermission(PermissionNames.Pages_Administration_{model.ClassName}s_Delete, L(\"Deleting{model.ClassName}\"));\r\n");
                            authorizationPoint.Insert($"{model.CamelClassName}s.CreateChildPermission(PermissionNames.Pages_Administration_{model.ClassName}s_BatchDelete, L(\"BatchDeleting{model.ClassName}\"));\r\n");
                        }
                    }
                }
            }
        }
Beispiel #16
0
        public void GetEndPoint_Whole()
        {
            CodeClass testObject = GetCodeClass("Bar");

            Assert.Throws <NotImplementedException>(() => testObject.GetEndPoint(vsCMPart.vsCMPartWhole));
        }
        public void GetEndPoint_Attributes()
        {
            CodeClass testObject = GetCodeClass("Bar");

            AssertEx.Throws <NotImplementedException>(() => testObject.GetEndPoint(vsCMPart.vsCMPartAttributes));
        }
Beispiel #18
0
        public async Task GetEndPoint_Whole()
        {
            CodeClass testObject = await GetCodeClassAsync("Bar");

            AssertEx.Throws <NotImplementedException>(() => testObject.GetEndPoint(vsCMPart.vsCMPartWhole));
        }