#region Apache License, Version 2.0 // // Licensed to the Apache Software Foundation (ASF) under one // or more contributor license agreements. See the NOTICE file // distributed with this work for additional information // regarding copyright ownership. The ASF licenses this file // to you under the Apache License, Version 2.0 (the // "License"); you may not use this file except in compliance // with the License. You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, // software distributed under the License is distributed on an // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY // KIND, either express or implied. See the License for the // specific language governing permissions and limitations // under the License. // #endregion using System; using System.Collections.Generic; using System.IO; using Microsoft.VisualStudio.CommandBars; using Microsoft.VisualStudio.TemplateWizard; using System.Windows.Forms; using EnvDTE; using EnvDTE80; namespace WindowsApplication2 { public class ArchetypeProjectWizard : IWizard { private ArchetypeProjectForm inputForm; // This method is called before opening any item that // has the OpenInEditor attribute. public void BeforeOpeningFile(ProjectItem projectItem) { } public void ProjectFinishedGenerating(Project project) { } // This method is only called for item templates, // not for project templates. public void ProjectItemFinishedGenerating(ProjectItem projectItem) { } // This method is called after the project is created. public void RunFinished() { } private OutputWindowPane outputWindowPane; private void cbShowAddArtifactsForm_Click(CommandBarButton btn, ref bool Cancel) { outputWindowPane.OutputString("It Works"); } public void RunStarted(object automationObject, Dictionary replacementsDictionary, WizardRunKind runKind, object[] customParams) { DTE2 dte2 = (DTE2)automationObject; Window win = dte2.Windows.Item(EnvDTE.Constants.vsWindowKindOutput); OutputWindow outputWindow = (OutputWindow)win.Object; outputWindowPane = outputWindow.OutputWindowPanes.Add("Test"); outputWindowPane.OutputString("Start"); CommandBarControl addRef = null; foreach (CommandBar commandBar in (CommandBars)dte2.CommandBars) { outputWindowPane.OutputString("Command Bar = " + commandBar.Name + Environment.NewLine); foreach(CommandBarControl control in commandBar.Controls) { outputWindowPane.OutputString(control.Caption + Environment.NewLine); if (control.Caption.Equals("Add &Reference...")) { addRef = control; CommandBarButton ctl = (CommandBarButton) commandBar.Controls.Add(MsoControlType.msoControlButton, System.Type.Missing, System.Type.Missing, control.Index, true); ctl.Click += new _CommandBarButtonEvents_ClickEventHandler(cbShowAddArtifactsForm_Click); //new _CommandBarButtonEvents_ClickEventHandler(ShowAddArtifactsForm); //new ClickEventHandler(); ctl.Caption = "Add Maven Artifact..."; ctl.Visible = true; } } } // dte2. += new EventHandler(ClearOutputWindowPane); // Window solutionExplorerWindow // = (Window) dte2.Windows.Item(Constants.vsWindowKindSolutionExplorer); // solutionExplorerWindow // Window w; UIHierarchy u; // UIHierarchyItem i; // dte2.Events. // ; // EnvDTE.s // DirectoryInfo projectDirectoryInfo = new FileInfo(dte2.Solution.Projects.Item(1).FullName).Directory; // dte2.Solution.Projects.Item(1).SaveAs(projectDirectoryInfo.FullName + @"\src\test.csproj"); try { // Display a form to the user. The form collects // input for the custom message. inputForm = new ArchetypeProjectForm(); String projectName = replacementsDictionary["$projectname$"]; inputForm.GroupId = (projectName.Contains(".")) ? projectName.Substring(0, projectName.LastIndexOf(".")) : projectName; inputForm.ArtifactId = projectName; inputForm.Version = "0.0.0.0-SNAPSHOT"; inputForm.ShowDialog(); String projectPath = @"src\main\csharp"; replacementsDictionary.Add("$artifactId$", inputForm.ArtifactId); replacementsDictionary.Add("$groupId$", inputForm.GroupId); replacementsDictionary.Add("$version$", inputForm.Version); replacementsDictionary.Add("$projectPath$", projectPath); replacementsDictionary.Add("$classPath$", projectPath + @"\" + inputForm.ArtifactId.Replace(".", @"\")); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } // This method is only called for item templates, // not for project templates. public bool ShouldAddProjectItem(string filePath) { return true; } } }