private Declaration GetDeclaration(CodeExplorerItemViewModel node) { while (node != null && !(node is ICodeExplorerDeclarationViewModel)) { node = node.Parent; } return((node as ICodeExplorerDeclarationViewModel)?.Declaration); }
public bool CanAddComponent(CodeExplorerItemViewModel parameter) { try { return(GetDeclaration(parameter) != null || _vbe.VBProjects.Count == 1); } catch (COMException) { return(false); } }
private string Folder(CodeExplorerItemViewModel node) { var declaration = node?.Declaration; if (declaration == null) { return(ActiveProjectFolder()); } return(declaration.CustomFolder ?? ProjectFolder(declaration.ProjectName)); }
public void AddComponent(CodeExplorerItemViewModel node, ComponentType type) { var components = node != null ? GetDeclaration(node).Project.VBComponents : _vbe.ActiveVBProject.VBComponents; var folderAnnotation = $"'@Folder(\"{GetFolder(node)}\")"; var newComponent = components.Add(type); newComponent.CodeModule.InsertLines(1, folderAnnotation); }
private string GetFolder(CodeExplorerItemViewModel node) { switch (node) { case null: return(DefaultFolder); case ICodeExplorerDeclarationViewModel declarationNode: return(string.IsNullOrEmpty(declarationNode.Declaration.CustomFolder) ? DefaultFolder : declarationNode.Declaration.CustomFolder.Replace("\"", string.Empty)); default: return(((CodeExplorerCustomFolderViewModel)node).FullPath); } }
private IVBProject GetNodeProject(CodeExplorerItemViewModel parameter) { if (parameter is ICodeExplorerDeclarationViewModel) { return(parameter.GetSelectedDeclaration().Project); } var node = parameter.Parent; while (!(node is ICodeExplorerDeclarationViewModel)) { node = node.Parent; } return(((ICodeExplorerDeclarationViewModel)node).Declaration.Project); }
private string GetFolder(CodeExplorerItemViewModel node) { if (node == null) { return(DefaultFolder); } var declarationNode = node as ICodeExplorerDeclarationViewModel; if (declarationNode != null) { return(string.IsNullOrEmpty(declarationNode.Declaration.CustomFolder) ? DefaultFolder : declarationNode.Declaration.CustomFolder.Replace("\"", string.Empty)); } return(((CodeExplorerCustomFolderViewModel)node).FullPath); }
private string Folder(CodeExplorerItemViewModel node) { var declaration = node?.Declaration; if (declaration == null) { return(ActiveProjectFolder()); } var customFolder = declaration.CustomFolder; if (customFolder != null) { return(customFolder.Replace("\"", string.Empty)); } return(ProjectFolder(declaration.ProjectName)); }
protected void AddComponent(CodeExplorerItemViewModel node, string moduleText) { var nodeProject = node?.Declaration?.Project; if (node != null && nodeProject == null) { return; //The project is not available. } string optionCompare; using (var hostApp = Vbe.HostApplication()) { optionCompare = hostApp?.ApplicationName == "Access" ? "Option Compare Database" : string.Empty; } using (var components = node != null ? nodeProject.VBComponents : ComponentsCollectionFromActiveProject()) { var folderAnnotation = (node is CodeExplorerCustomFolderViewModel folder) ? folder.FolderAttribute : $"'@Folder(\"{GetFolder(node)}\")"; var fileName = CreateTempTextFile(moduleText); using (var newComponent = components.Import(fileName)) { using (var codeModule = newComponent.CodeModule) { if (optionCompare.Length > 0) { codeModule.InsertLines(1, optionCompare); } if (folderAnnotation.Length > 0) { codeModule.InsertLines(1, folderAnnotation); } codeModule.CodePane.Show(); } } File.Delete(fileName); } }
private bool EvaluateCanExecuteCore(IVBProject project, CodeExplorerItemViewModel itemViewModel) { if (project == null) { return(false); } foreach (var component in project.VBComponents) { using (component) { if (component.Type == ComponentType.MDIForm) { // Only one MDI Form allowed per project return(false); } } } return(_addComponentCommand.CanAddComponent(itemViewModel, new[] { ProjectType.StandardExe, ProjectType.ActiveXExe })); }
public bool CanAddComponent(CodeExplorerItemViewModel parameter, IEnumerable <ProjectType> allowableProjectTypes) { try { var project = GetDeclaration(parameter)?.Project; if (project == null && _vbe.ProjectsCount == 1) { using (var vbProjects = _vbe.VBProjects) using (project = vbProjects[1]) { return(project != null && allowableProjectTypes.Contains(project.Type)); } } return(project != null && allowableProjectTypes.Contains(project.Type)); } catch (COMException) { return(false); } }
public void AddComponent(CodeExplorerItemViewModel node, ComponentType componentType, string code = null) { var projectId = ProjectId(node); if (projectId == null) { return; } var prefixInModule = FolderAnnotation(node); var suspensionResult = _parseManager.OnSuspendParser( this, Enum.GetValues(typeof(ParserState)).Cast <ParserState>(), () => _addComponentService.AddComponent(projectId, componentType, code, prefixInModule)); if (suspensionResult.Outcome == SuspensionOutcome.UnexpectedError && suspensionResult.EncounteredException != null) { //This rethrows with the original stack trace. ExceptionDispatchInfo.Capture(suspensionResult.EncounteredException).Throw(); } }
public void AddComponentWithAttributes(CodeExplorerItemViewModel node, ComponentType componentType, string code, string additionalPrefixInModule = null) { var projectId = ProjectId(node); if (projectId == null) { return; } var folderAnnotation = FolderAnnotation(node); var optionCompare = OptionCompareStatement(); var modulePrefix = new StringBuilder(folderAnnotation); if (optionCompare != null) { modulePrefix.Append(Environment.NewLine).Append(optionCompare); } if (additionalPrefixInModule != null) { modulePrefix.Append(Environment.NewLine).Append(additionalPrefixInModule); } var prefixInModule = modulePrefix.ToString(); var suspensionResult = _parseManager.OnSuspendParser( this, Enum.GetValues(typeof(ParserState)).Cast <ParserState>(), () => _addComponentService.AddComponentWithAttributes(projectId, componentType, code, prefixInModule)); if (suspensionResult.Outcome == SuspensionOutcome.UnexpectedError && suspensionResult.EncounteredException != null) { //This rethrows with the original stack trace. ExceptionDispatchInfo.Capture(suspensionResult.EncounteredException).Throw(); } }
protected void AddComponent(CodeExplorerItemViewModel node) { var nodeProject = node?.Declaration.Project; if (node != null && nodeProject == null) { return; //The project is not available. } using (var components = node != null ? nodeProject.VBComponents : ComponentsCollectionFromActiveProject()) { var folderAnnotation = (node is CodeExplorerCustomFolderViewModel folder) ? folder.FolderAttribute : $"'@Folder(\"{GetFolder(node)}\")"; using (var newComponent = components.Add(ComponentType)) { using (var codeModule = newComponent.CodeModule) { codeModule.InsertLines(1, folderAnnotation); } } } }
private bool EvaluateCanExecuteForProject(IVBProject project, CodeExplorerItemViewModel itemViewModel) { if (project == null) { return(false); } using (var components = project.VBComponents) { foreach (var component in components) { using (component) { if (component.Type == ComponentType.MDIForm) { // Only one MDI Form allowed per project return(false); } } } } return(base.EvaluateCanExecute(itemViewModel)); }
public void AddComponent(CodeExplorerItemViewModel node, ComponentType type) { var nodeProject = GetDeclaration(node)?.Project; if (node != null && nodeProject == null) { return; //The project is not available. } using (var components = node != null ? nodeProject.VBComponents : ComponentsCollectionFromActiveProject()) { var folderAnnotation = $"'@Folder(\"{GetFolder(node)}\")"; using (var newComponent = components.Add(type)) { using (var codeModule = newComponent.CodeModule) { codeModule.InsertLines(1, folderAnnotation); } } } }
private string FolderAnnotation(CodeExplorerItemViewModel node) { return((node is CodeExplorerCustomFolderViewModel folder) ? folder.FolderAttribute : $"'@Folder(\"{Folder(node)}\")"); }
private string ProjectId(CodeExplorerItemViewModel node) { return(node?.Declaration.ProjectId); }
private string GetFolder(CodeExplorerItemViewModel node) { return(string.IsNullOrEmpty(node?.Declaration?.CustomFolder) ? GetActiveProjectName() : node.Declaration.CustomFolder.Replace("\"", string.Empty)); }
private void AddComponent(CodeExplorerItemViewModel node) { _addComponentService.AddComponent(node, ComponentType); }