/// <summary> /// This function is the callback used to execute the command when the menu item is clicked. /// See the constructor to see how the menu item is associated with this function using /// OleMenuCommandService service and MenuCommand class. /// </summary> /// <param name="sender">Event sender.</param> /// <param name="e">Event args.</param> private void MenuItemCallback(object sender, EventArgs e) { var dte = VSPackage.DteInstance; //save node name details to maintain selection in solution explorer var selectedItem = ((Array)dte.ToolWindows.SolutionExplorer.SelectedItems).Cast <UIHierarchyItem>().First(); var selectedParent = selectedItem.Collection.Parent as UIHierarchyItem; var parentNodeName = selectedParent.NodeName(); var nodeName = selectedItem.Name; var itemPath = SolutionExplorerExtensions.SelectedItemPath; var fileName = SolutionExplorerExtensions.SelectedItemPath; var projectFullName = VSPackage.DteInstance.Solution.FindProjectItem(fileName).ContainingProject.FullName; var parameterizationProject = new ParameterizationProject(projectFullName); if (parameterizationProject.Initialize()) { var projectItem = VSPackage.DteInstance.Solution.FindProjectItem(fileName); projectItem.Properties.Item("ItemType").Value = "Parameterization"; Nester.ApplyNesting(itemPath); System.Threading.Thread.Sleep(1000); dte.ToolWindows.SolutionExplorer.GetItem($"{parentNodeName}\\Parameters.xml").UIHierarchyItems.Expanded = true; dte.ToolWindows.SolutionExplorer.GetItem($"{parentNodeName}\\Parameters.xml\\{nodeName}").Select(vsUISelectionType.vsUISelectionTypeSelect); } }
private void GenerateFile(string fileName) { var sourceName = SolutionExplorerExtensions.SelectedItemPath; var folder = Path.GetDirectoryName(sourceName); var targetName = Path.Combine(folder, fileName); if (File.Exists(targetName)) { ShowMessage("Duplicate File", "The file name specified already exits."); return; } var projectFullName = VSPackage.DteInstance.Solution.FindProjectItem(sourceName).ContainingProject.FullName; var parameterizationProject = new ParameterizationProject(projectFullName); if (parameterizationProject.Initialize()) { var parameters = ParseParameters(sourceName); CreateSetXml(parameters, targetName); var parent = VSPackage.DteInstance.Solution.FindProjectItem(sourceName); var item = parent.ProjectItems.AddFromFile(targetName); item.Properties.Item("ItemType").Value = "Parameterization"; } }
/// <summary> /// This function is the callback used to execute the command when the menu item is clicked. /// See the constructor to see how the menu item is associated with this function using /// OleMenuCommandService service and MenuCommand class. /// </summary> /// <param name="sender">Event sender.</param> /// <param name="e">Event args.</param> private void MenuItemCallback(object sender, EventArgs e) { var filePath = SolutionExplorerExtensions.SelectedItemPath; if (!string.IsNullOrEmpty(filePath) && "Parameters.xml".Equals(Path.GetFileName(SolutionExplorerExtensions.SelectedItemPath), StringComparison.OrdinalIgnoreCase)) { var projectFullName = VSPackage.DteInstance.Solution.FindProjectItem(filePath).ContainingProject.FullName; var project = new ParameterizationProject(projectFullName); project.Initialize(); var parent = VSPackage.DteInstance.Solution.FindProjectItem(filePath); foreach (var item in parent.ProjectItems) { var child = item as ProjectItem; if (child != null) { child.Properties.Item("ItemType").Value = "Parameterization"; } } } }