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"); } }
public void GetEndPoint_AttributesWithDelimiter() { CodeClass testObject = GetCodeClass("Bar"); TextPoint endPoint = testObject.GetEndPoint(vsCMPart.vsCMPartAttributesWithDelimiter); Assert.Equal(7, endPoint.Line); Assert.Equal(15, endPoint.LineCharOffset); }
public void GetEndPoint_Navigate() { CodeClass testObject = GetCodeClass("Bar"); TextPoint endPoint = testObject.GetEndPoint(vsCMPart.vsCMPartNavigate); Assert.Equal(8, endPoint.Line); Assert.Equal(17, endPoint.LineCharOffset); }
public void GetEndPoint_WholeWithAttributes() { CodeClass testObject = GetCodeClass("Bar"); TextPoint endPoint = testObject.GetEndPoint(vsCMPart.vsCMPartWholeWithAttributes); Assert.Equal(19, endPoint.Line); Assert.Equal(2, endPoint.LineCharOffset); }
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); }
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); }
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); }
public void GetEndPoint_Body() { CodeClass testObject = GetCodeClass("Bar"); TextPoint endPoint = testObject.GetEndPoint(vsCMPart.vsCMPartBody); Assert.Equal(19, endPoint.Line); Assert.Equal(1, endPoint.LineCharOffset); }
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); }
/// <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(); } }
/// <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); }
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()); }
/// <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"); } } } } }
/// <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"); } } } } }
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)); }
public async Task GetEndPoint_Whole() { CodeClass testObject = await GetCodeClassAsync("Bar"); AssertEx.Throws <NotImplementedException>(() => testObject.GetEndPoint(vsCMPart.vsCMPartWhole)); }