/// <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)); }
private void OnDocumentSaved(Document Document) { if (Document.Name.IsAureliaCliFile()) { AureliaHelper.LoadAureliaCli(Document.Path); } }
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)); } }
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); }
/// <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); } }