Exemple #1
0
        /// <summary>
        /// Execute Addin Command
        /// </summary>
        /// <param name="cmdName">
        /// Command name
        /// </param>
        /// <param name="executeOption">
        /// Execute options
        /// </param>
        /// <param name="variantIn">
        /// object variant in
        /// </param>
        /// <param name="variantOut">
        /// object variant out
        /// </param>
        /// <param name="handled">
        /// Handled true or false
        /// </param>
        public void Exec(string cmdName, vsCommandExecOption executeOption, ref object variantIn, ref object variantOut, ref bool handled)
        {
            handled = false;
            if (executeOption == vsCommandExecOption.vsCommandExecOptionDoDefault)
            {
                if (cmdName == "Xsd2Code.Addin.Connect.Xsd2CodeAddin")
                {
                    UIHierarchy uIH  = this.applicationObjectField.ToolWindows.SolutionExplorer;
                    var         item = (UIHierarchyItem)((Array)uIH.SelectedItems).GetValue(0);

                    UIHierarchyItems items = item.UIHierarchyItems;

                    ProjectItem proitem = uIH.DTE.SelectedItems.Item(1).ProjectItem;
                    Project     proj    = proitem.ContainingProject;

                    // Try to get default nameSpace
                    string defaultNamespace = string.Empty;
                    uint?  targetFramework  = 0;
                    bool?  isSilverlightApp = false;
                    try
                    {
                        defaultNamespace = proj.Properties.Item("DefaultNamespace").Value as string;
                        targetFramework  = proj.Properties.Item("TargetFramework").Value as uint?;
                        isSilverlightApp = proj.Properties.Item("SilverlightProject.IsSilverlightApplication").Value as bool?;
                    }
                    catch
                    {
                    }

                    CodeModel codeModel = proitem.ContainingProject.CodeModel;
                    string    fileName  = proitem.FileNames[0];
                    try
                    {
                        proitem.Save(fileName);
                    }
                    catch (Exception)
                    {
                    }

                    TargetFramework framework = TargetFramework.Net20;
                    if (targetFramework.HasValue)
                    {
                        uint target = targetFramework.Value;
                        switch (target)
                        {
                        case 196608:
                            framework = TargetFramework.Net30;
                            break;

                        case 196613:
                            framework = TargetFramework.Net35;
                            break;

                        case 262144:
                            framework = TargetFramework.Net40;
                            break;
                        }
                    }
                    if (isSilverlightApp.HasValue)
                    {
                        if (isSilverlightApp.Value)
                        {
                            framework = TargetFramework.Silverlight;
                        }
                    }

                    var frm = new FormOption();
                    frm.Init(fileName, proj.CodeModel.Language, defaultNamespace, framework);

                    DialogResult result = frm.ShowDialog();

                    GeneratorParams generatorParams = frm.GeneratorParams.Clone();
                    generatorParams.InputFilePath = fileName;

                    var gen = new GeneratorFacade(generatorParams);

                    // Close file if open in IDE
                    ProjectItem projElmts;
                    bool        found = FindInProject(proj.ProjectItems, gen.GeneratorParams.OutputFilePath, out projElmts);
                    if (found)
                    {
                        Window window = projElmts.Open(Constants.vsViewKindCode);
                        window.Close(vsSaveChanges.vsSaveChangesNo);
                    }

                    if (fileName.Length > 0)
                    {
                        if (result == DialogResult.OK)
                        {
                            Result <string> generateResult = gen.Generate();
                            string          outputFileName = generateResult.Entity;

                            if (!generateResult.Success)
                            {
                                MessageBox.Show(generateResult.Messages.ToString(), "XSD2Code", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            }
                            else
                            {
                                if (!found)
                                {
                                    projElmts = proitem.Collection.AddFromFile(outputFileName);
                                }

                                if (frm.OpenAfterGeneration)
                                {
                                    Window window = projElmts.Open(Constants.vsViewKindCode);
                                    window.Activate();
                                    window.SetFocus();

                                    try
                                    {
                                        // this.applicationObjectField.DTE.ExecuteCommand("Edit.RemoveAndSort", "");
                                        applicationObjectField.DTE.ExecuteCommand("Edit.FormatDocument", string.Empty);
                                    }
                                    catch (Exception)
                                    {
                                    }
                                }
                            }
                        }
                    }

                    handled = true;
                    return;
                }
            }
        }
Exemple #2
0
        /// <summary>
        /// Execute Addin Command
        /// </summary>
        /// <param name="cmdName">
        /// Command name
        /// </param>
        /// <param name="executeOption">
        /// Execute options
        /// </param>
        /// <param name="variantIn">
        /// object variant in
        /// </param>
        /// <param name="variantOut">
        /// object variant out
        /// </param>
        /// <param name="handled">
        /// Handled true or false
        /// </param>
        public void Exec(string cmdName, vsCommandExecOption executeOption, ref object variantIn, ref object variantOut, ref bool handled)
        {
            handled = false;
            if (executeOption == vsCommandExecOption.vsCommandExecOptionDoDefault)
            {
                if (cmdName == "Xsd2Code.Addin.Connect.Xsd2CodeAddin")
                {
                    UIHierarchy uIH = this.applicationObjectField.ToolWindows.SolutionExplorer;
                    var item = (UIHierarchyItem)((Array)uIH.SelectedItems).GetValue(0);

                    UIHierarchyItems items = item.UIHierarchyItems;

                    ProjectItem proitem = uIH.DTE.SelectedItems.Item(1).ProjectItem;
                    Project proj = proitem.ContainingProject;

                    // Try to get default nameSpace
                    string defaultNamespace = string.Empty;
                    uint? targetFramework = 0;
                    bool? isSilverlightApp = false;
                    try
                    {
                        defaultNamespace = proj.Properties.Item("DefaultNamespace").Value as string;
                        targetFramework = proj.Properties.Item("TargetFramework").Value as uint?;
                        isSilverlightApp = proj.Properties.Item("SilverlightProject.IsSilverlightApplication").Value as bool?;
                    }
                    catch
                    {
                    }

                    CodeModel codeModel = proitem.ContainingProject.CodeModel;
                    string fileName = proitem.FileNames[0];
                    try
                    {
                        proitem.Save(fileName);
                    }
                    catch (Exception)
                    {
                    }

                    TargetFramework framework = TargetFramework.Net20;
                    if (targetFramework.HasValue)
                    {
                        uint target = targetFramework.Value;
                        switch (target)
                        {
                            case 196608:
                                framework = TargetFramework.Net30;
                                break;
                            case 196613:
                                framework = TargetFramework.Net35;
                                break;
                            case 262144:
                                framework = TargetFramework.Net40;
                                break;
                        }
                    }
                    if (isSilverlightApp.HasValue)
                    {
                        if (isSilverlightApp.Value)
                        {
                            framework = TargetFramework.Silverlight;
                        }
                    }

                    var frm = new FormOption();
                    frm.Init(fileName, proj.CodeModel.Language, defaultNamespace, framework);

                    DialogResult result = frm.ShowDialog();

                    GeneratorParams generatorParams = frm.GeneratorParams.Clone();
                    generatorParams.InputFilePath = fileName;

                    var gen = new GeneratorFacade(generatorParams);

                    // Close file if open in IDE
                    ProjectItem projElmts;
                    bool found = FindInProject(proj.ProjectItems, gen.GeneratorParams.OutputFilePath, out projElmts);
                    if (found)
                    {
                        Window window = projElmts.Open(Constants.vsViewKindCode);
                        window.Close(vsSaveChanges.vsSaveChangesNo);
                    }

                    if (fileName.Length > 0)
                    {
                        if (result == DialogResult.OK)
                        {
                            Result<string> generateResult = gen.Generate();
                            string outputFileName = generateResult.Entity;

                            if (!generateResult.Success)
                                MessageBox.Show(generateResult.Messages.ToString(), "XSD2Code", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            else
                            {
                                if (!found)
                                {
                                    projElmts = proitem.Collection.AddFromFile(outputFileName);
                                }

                                if (frm.OpenAfterGeneration)
                                {
                                    Window window = projElmts.Open(Constants.vsViewKindCode);
                                    window.Activate();
                                    window.SetFocus();

                                    try
                                    {
                                        // this.applicationObjectField.DTE.ExecuteCommand("Edit.RemoveAndSort", "");
                                        applicationObjectField.DTE.ExecuteCommand("Edit.FormatDocument", string.Empty);
                                    }
                                    catch (Exception)
                                    {
                                    }
                                }
                            }
                        }
                    }

                    handled = true;
                    return;
                }
            }
        }