Exemplo n.º 1
0
        /// <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 async void ExecuteAsync(object sender, EventArgs e)
        {
            var item = _dte.SelectedItems.Item(1);

            Helpers.DteHelpers.GetSelectionData(_dte, out var targetFile, out var projectFolderPath, out var projectFullName);
            var targetFolder = Path.GetDirectoryName(targetFile);

            if (string.IsNullOrEmpty(targetFolder) || !Directory.Exists(targetFolder))
            {
                return;
            }

            var dialog = DteHelpers.OpenDialog <RouteComponentDialog>(_dte);

            if (!(dialog.ShowDialog() ?? false))
            {
                return;
            }
            if (string.IsNullOrWhiteSpace(dialog.ElementName))
            {
                return;
            }
            var templates   = Template.GetTemplateFilesByType("route").Where(y => y.Contains(dialog.Type)).ToList();
            var filesToOpen = await Task.WhenAll(templates.Select(templateName => Template.GenerateTemplatesAsync(templateName, targetFolder, dialog.ElementName)));

            AureliaHelper.AddRoute(targetFile, filesToOpen.FirstOrDefault(y => y.ToLower().EndsWith("ts") || y.ToLower().EndsWith("js")));
            filesToOpen.ToList().ForEach(fullFileName => VsShellUtilities.OpenDocument(package, fullFileName));
        }
Exemplo n.º 2
0
 private void OnDocumentSaved(Document Document)
 {
     if (Document.Name.IsAureliaCliFile())
     {
         AureliaHelper.LoadAureliaCli(Document.Path);
     }
 }
Exemplo n.º 3
0
 private void OnItemAdded(ProjectItem ProjectItem)
 {
     if (ProjectItem.Name.IsAureliaCliFile())
     {
         Helpers.DteHelpers.GetSelectionData(ProjectItem, out var targetFolder, out var project, out var target);
         AureliaHelper.LoadAureliaCli(Path.Combine(targetFolder, ProjectItem.Name));
     }
 }
Exemplo n.º 4
0
        public int OnAfterOpenProject(IVsHierarchy pHierarchy, int fAdded)
        {
            Microsoft.VisualStudio.Shell.ThreadHelper.ThrowIfNotOnUIThread();
            var project = getActiveProject();
            var path    = project.FullName;

            AureliaHelper.LoadAureliaCliFromPath(path);
            return(VSConstants.S_OK);
        }
Exemplo n.º 5
0
        /// <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 async void ExecuteAsync(object sender, EventArgs e)
        {
            try
            {
                await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();

                var item = _dte.SelectedItems.Item(1);
                Helpers.DteHelpers.GetSelectionData(_dte, out var targetFile, out var projectFolderPath, out var projectFullName);
                var targetFolder = Path.GetDirectoryName(targetFile);

                if (string.IsNullOrEmpty(targetFolder) || !Directory.Exists(targetFolder))
                {
                    return;
                }

                var selectedItem    = item as ProjectItem;
                var selectedProject = item as Project;
                var project         = selectedItem?.ContainingProject ?? selectedProject ?? DteHelpers.GetActiveProject(_dte);

                var root           = Directory.GetParent(AureliaHelper.RootFolder).FullName.Replace(@"\", @"\\"); //escape for pregex
                var relativePath   = Regex.Replace(targetFolder, root, "", RegexOptions.IgnoreCase).Substring(1); // remove starting slash
                var fileNameDialog = new FileNameDialog(relativePath)
                {
                    Title       = "Generate Aurelia Item",
                    IsGlobal    = true,
                    PreviewText = "Please enter the name aurelia item to create using Aurelia Conventions"
                };
                var lowerFolder = targetFolder.ToLower();
                fileNameDialog.GlobalChecked(lowerFolder == AureliaHelper.GetResouceDirectory.ToLower() ||
                                             lowerFolder == AureliaHelper.GetAttributesDirectory.ToLower() ||
                                             lowerFolder == AureliaHelper.GetBindingBehaviorsDirectory.ToLower() ||
                                             lowerFolder == AureliaHelper.GetElementsDirectory.ToLower() ||
                                             lowerFolder == AureliaHelper.GetValueConvertersDirectory.ToLower() ||
                                             targetFile.ToLower().Equals(AureliaHelper.ResourceGlobalFile.ToLower()

                                                                         ));

                var dialog = _dte.OpenDialog(fileNameDialog);
                if (!(dialog.ShowDialog() ?? false))
                {
                    return;
                }
                var moduleName   = dialog.Input;
                var aureliaType  = AureliaHelper.ParseModuleName(moduleName);
                var templates    = Template.GetTemplateFilesByType(aureliaType.ToString().ToLower()).ToList();
                var globalFolder = AureliaHelper.GetDirectory(aureliaType);
                targetFolder = dialog.IsGlobal && !string.IsNullOrWhiteSpace(globalFolder) ? globalFolder : targetFolder;

                var filesToOpen = await Task.WhenAll(templates.Select(templateName => Template.GenerateTemplatesAsync(templateName, targetFolder, dialog.Input, dialog.IsGlobal)));

                filesToOpen.ToList().ForEach(fullFileName => VsShellUtilities.OpenDocument(package, fullFileName));
            }
            catch (Exception ex)
            {
                Logger.Log(ex.Message);
            }
        }