public virtual void ExecuteCommand(object sender, EventArgs args)
        {
            IVsUIShell uiShell = projectManager.UIShell;

            uiShell.EnableModeless(0);

            try
            {
                string projectConfigPath = projectManager.ProjectConfigPath;
                projectConfigurationManager.Load(projectConfigPath);

                UpdateProjectConfiguration(projectConfigurationManager.CurrentProjectConfiguraiton, projectManager);
                projectConfigurationManager.Save(projectConfigPath);

                bool saved = projectManager.SaveDirtyFiles(dialogFactory, projectConfigurationManager.CurrentProjectConfiguraiton.MethodInfos);
                if (saved)
                {
                    ExecuteCommandImpl(sender, args);
                }
            }
            catch (Exception ex)
            {
                var messageWindow = dialogFactory.GetMessageBoxWindow();
                messageWindow.ShowDialog(ex.Message,
                                         messageManager.GetMessage("ArasVSMethodPlugin"),
                                         MessageButtons.OK,
                                         MessageIcon.Error);
            }
            finally
            {
                uiShell.EnableModeless(1);
            }
        }
Exemple #2
0
        public void OpenMethodFromAras(string openRequestString)
        {
            OpenMethodContext openContext = openContextParser.Parse(openRequestString);

            if (openContext == null)
            {
                return;
            }

            IMessageBoxWindow   messageBox = dialogFactory.GetMessageBoxWindow();
            MessageDialogResult result     = messageBox.ShowDialog(messageManager.GetMessage("CreateNewOrOpenExistingProject"),
                                                                   messageManager.GetMessage("ArasVSMethodPlugin"), MessageButtons.YesNo, MessageIcon.Question);

            if (result == MessageDialogResult.Yes)
            {
                projectManager.ExecuteCommand("File.NewProject");
            }
            else
            {
                projectManager.ExecuteCommand("File.OpenProject");
            }

            if (projectManager.SolutionHasProject && projectManager.IsArasProject)
            {
                Commands.OpenFromArasCmd.Instance.ExecuteCommand(this, openContext);
            }
        }
        public virtual void ExecuteCommand(object sender, EventArgs args)
        {
            try
            {
                string projectConfigPath    = projectManager.ProjectConfigPath;
                var    projectConfiguration = projectConfigurationManager.Load(projectConfigPath);

                projectConfiguration.Update(projectManager);
                projectConfigurationManager.Save(projectConfigPath, projectConfiguration);

                bool saved = projectManager.SaveDirtyFiles(projectConfiguration.MethodInfos);
                if (saved)
                {
                    ExecuteCommandImpl(sender, args);
                }
            }
            catch (Exception ex)
            {
                var messageWindow = dialogFactory.GetMessageBoxWindow();
                messageWindow.ShowDialog(ex.Message,
                                         "Aras VS method plugin",
                                         MessageButtons.OK,
                                         MessageIcon.Error);
            }
        }
        public bool SaveDirtyFiles(IDialogFactory dialogFactory, List <MethodInfo> methodInfos)
        {
            string serverMethodFolderPath = ServerMethodFolderPath;

            bool saveIsApproved = false;

            foreach (MethodInfo methodInfo in methodInfos)
            {
                string        packageMethodFolderPath = this.projectConfigurationManager.CurrentProjectConfiguraiton.UseCommonProjectStructure ? methodInfo.Package.MethodFolderPath : string.Empty;
                string        methodWorkingFolder     = Path.Combine(serverMethodFolderPath, packageMethodFolderPath, methodInfo.MethodName);
                List <string> methodPaths             = iOWrapper.DirectoryGetFiles(methodWorkingFolder, $"*{GlobalConsts.CSExtension}", SearchOption.AllDirectories)
                                                        .Select(x => x.Substring(serverMethodFolderPath.Length))
                                                        .ToList();

                foreach (string methodPath in methodPaths)
                {
                    ProjectItem fileProjectItem = LoadItemFolder(methodPath);
                    if (fileProjectItem != null && fileProjectItem.IsDirty)
                    {
                        if (saveIsApproved)
                        {
                            fileProjectItem.Save();
                        }
                        else
                        {
                            var messageWindow       = dialogFactory.GetMessageBoxWindow();
                            var messageDialogResult = messageWindow.ShowDialog(
                                messageManager.GetMessage("OneOrMoreMethodFilesIsNotSavedDoYouWantToSaveChanges"),
                                messageManager.GetMessage("ArasVSMethodPlugin"),
                                MessageButtons.YesNoCancel,
                                MessageIcon.Question);

                            if (messageDialogResult == MessageDialogResult.Yes)
                            {
                                saveIsApproved = true;
                                fileProjectItem.Save();
                            }
                            else if (messageDialogResult == MessageDialogResult.No)
                            {
                                return(true);
                            }
                            else if (messageDialogResult == MessageDialogResult.Cancel)
                            {
                                return(false);
                            }
                        }
                    }
                }
            }

            return(true);
        }
        public bool SaveDirtyFiles(List <MethodInfo> methodInfos)
        {
            bool saveIsApproved = false;

            foreach (MethodInfo methodInfo in methodInfos)
            {
                var methodPaths = new List <string>();
                methodPaths.Add(methodInfo.MethodName + "\\" + methodInfo.MethodName);
                methodPaths.AddRange(methodInfo.PartialClasses);
                methodPaths.AddRange(methodInfo.ExternalItems);
                foreach (string methodPath in methodPaths)
                {
                    ProjectItem fileProjectItem = LoadItemFolder(methodPath);
                    if (fileProjectItem != null && fileProjectItem.IsDirty)
                    {
                        if (saveIsApproved)
                        {
                            fileProjectItem.Save();
                        }
                        else
                        {
                            var messageWindow       = dialogFactory.GetMessageBoxWindow();
                            var messageDialogResult = messageWindow.ShowDialog(
                                "One or more method files is not saved. Do you want to save changes?",
                                "Aras VS method plugin",
                                MessageButtons.YesNoCancel,
                                MessageIcon.Question);

                            if (messageDialogResult == MessageDialogResult.Yes)
                            {
                                saveIsApproved = true;
                                fileProjectItem.Save();
                            }
                            else if (messageDialogResult == MessageDialogResult.No)
                            {
                                return(true);
                            }
                            else if (messageDialogResult == MessageDialogResult.Cancel)
                            {
                                return(false);
                            }
                        }
                    }
                }
            }

            return(true);
        }