public static void DoPaste(ISolutionFolderNode folderNode) { System.Windows.IDataObject dataObject = SD.Clipboard.GetDataObject(); if (!DoEnablePaste(folderNode.Folder, dataObject)) { LoggingService.Warn("SolutionFolderNode.DoPaste: Pasting was not enabled."); return; } ExtTreeNode folderTreeNode = (ExtTreeNode)folderNode; if (dataObject.GetDataPresent(typeof(ISolutionItem).ToString())) { Guid guid = Guid.Parse(dataObject.GetData(typeof(ISolutionItem).ToString()).ToString()); ISolutionItem solutionItem = folderNode.Solution.GetItemByGuid(guid); if (solutionItem != null) { MoveItem(solutionItem, folderNode.Folder); ExtTreeView treeView = (ExtTreeView)folderTreeNode.TreeView; foreach (ExtTreeNode node in treeView.CutNodes) { ExtTreeNode oldParent = node.Parent as ExtTreeNode; node.Remove(); node.InsertSorted(folderTreeNode); if (oldParent != null) { oldParent.Refresh(); } } ProjectService.SaveSolution(); } } folderTreeNode.Expand(); }
public static void AddProject(ISolutionFolderNode solutionFolderNode, IProject newProject) { solutionFolderNode.Container.AddFolder(newProject); ParserService.CreateProjectContentForAddedProject(newProject); solutionFolderNode.Solution.FixSolutionConfiguration(new IProject[] { newProject }); OnProjectAdded(new ProjectEventArgs(newProject)); }
static bool DoEnablePaste(ISolutionFolderNode container, IDataObject dataObject) { if (dataObject == null) { return(false); } if (dataObject.GetDataPresent(typeof(ISolutionFolder).ToString())) { string guid = dataObject.GetData(typeof(ISolutionFolder).ToString()).ToString(); ISolutionFolder solutionFolder = container.Solution.GetSolutionFolder(guid); if (solutionFolder == null || solutionFolder == container) { return(false); } if (solutionFolder is ISolutionFolderContainer) { return(solutionFolder.Parent != container && !((ISolutionFolderContainer)solutionFolder).IsAncestorOf(container.Folder)); } else { return(solutionFolder.Parent != container); } } return(false); }
public override void Run() { TreeNode node = ProjectBrowserPad.Instance.ProjectBrowserControl.SelectedNode; while (node != null && !(node is ISolutionFolderNode)) { node = node.Parent; } ISolutionFolderNode solutionFolderNode = node as ISolutionFolderNode; if (node != null) { using (NewProjectDialog npdlg = new NewProjectDialog(false)) { npdlg.InitialProjectLocationDirectory = GetInitialDirectorySuggestion(solutionFolderNode); // show the dialog to request project type and name if (npdlg.ShowDialog(ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainWin32Window) == DialogResult.OK) { if (npdlg.NewProjectLocation.Length == 0) { MessageService.ShowError("No project has been created, there is nothing to add."); return; } AddExitingProjectToSolution.AddProject(solutionFolderNode, npdlg.NewProjectLocation); ProjectService.SaveSolution(); } } } }
public override void Delete() { ISolutionFolderNode folderNode = Parent as ISolutionFolderNode; folderNode.Container.SolutionItems.Items.Remove(item); base.Remove(); }
public static void DoPaste(ISolutionFolderNode folderNode) { if (!DoEnablePaste(folderNode)) { LoggingService.Warn("SolutionFolderNode.DoPaste: Pasting was not enabled."); return; } ExtTreeNode folderTreeNode = (ExtTreeNode)folderNode; IDataObject dataObject = ClipboardWrapper.GetDataObject(); if (dataObject.GetDataPresent(typeof(ISolutionFolder).ToString())) { string guid = dataObject.GetData(typeof(ISolutionFolder).ToString()).ToString(); ISolutionFolder solutionFolder = folderNode.Solution.GetSolutionFolder(guid); if (solutionFolder != null) { folderNode.Container.AddFolder(solutionFolder); ExtTreeView treeView = (ExtTreeView)folderTreeNode.TreeView; foreach (ExtTreeNode node in treeView.CutNodes) { ExtTreeNode oldParent = node.Parent as ExtTreeNode; node.Remove(); node.AddTo(folderTreeNode); if (oldParent != null) { oldParent.Refresh(); } } ProjectService.SaveSolution(); } } folderTreeNode.Expand(); }
internal static string GetInitialDirectorySuggestion(ISolutionFolderNode solutionFolderNode) { // Detect the correct folder to place the new project in: int projectCount = 0; string initialDirectory = null; foreach (ISolutionFolder folderEntry in solutionFolderNode.Container.Folders) { IProject project = folderEntry as IProject; if (project != null) { if (projectCount == 0) initialDirectory = project.Directory; else initialDirectory = FileUtility.GetCommonBaseDirectory(initialDirectory, project.Directory); projectCount++; } } if (initialDirectory != null) { if (projectCount == 1) { return FileUtility.GetAbsolutePath(initialDirectory, ".."); } else { return initialDirectory; } } else { return solutionFolderNode.Solution.Directory; } }
public override void Run() { AbstractProjectBrowserTreeNode node = ProjectBrowserPad.Instance.ProjectBrowserControl.SelectedNode; ISolutionFolderNode solutionFolderNode = node as ISolutionFolderNode; if (solutionFolderNode != null) { using (OpenFileDialog fdiag = new OpenFileDialog()) { fdiag.AddExtension = true; fdiag.Filter = ProjectService.GetAllProjectsFilter(this, false); fdiag.Multiselect = true; fdiag.CheckFileExists = true; fdiag.InitialDirectory = AddNewProjectToSolution.GetInitialDirectorySuggestion(solutionFolderNode.Folder); if (fdiag.ShowDialog(SD.WinForms.MainWin32Window) == DialogResult.OK) { try { foreach (string fileName in fdiag.FileNames) { solutionFolderNode.Folder.AddExistingProject(FileName.Create(fileName)); } } catch (ProjectLoadException ex) { MessageService.ShowError(ex.Message); } catch (IOException ex) { MessageService.ShowError(ex.Message); } ProjectService.SaveSolution(); } } } }
public static void AddProject(ISolutionFolderNode solutionFolderNode, string fileName) { if (solutionFolderNode == null) throw new ArgumentNullException("solutionFolderNode"); ProjectLoadInformation loadInfo = new ProjectLoadInformation(solutionFolderNode.Solution, fileName, Path.GetFileNameWithoutExtension(fileName)); AddProject(solutionFolderNode, ProjectBindingService.LoadProject(loadInfo)); }
public static void AddProject(ISolutionFolderNode solutionFolderNode, string fileName) { if (solutionFolderNode == null) { throw new ArgumentNullException("solutionFolderNode"); } AddProject(solutionFolderNode, LanguageBindingService.LoadProject(solutionFolderNode.Solution, fileName, Path.GetFileNameWithoutExtension(fileName))); }
public static void AddProject(ISolutionFolderNode solutionFolderNode, IProject newProject) { if (newProject != null) { newProject.Location = FileUtility.GetRelativePath(solutionFolderNode.Solution.Directory, newProject.FileName); ProjectService.AddProject(solutionFolderNode, newProject); NodeBuilders.AddProjectNode((TreeNode)solutionFolderNode, newProject).EnsureVisible(); solutionFolderNode.Solution.ApplySolutionConfigurationAndPlatformToProjects(); } }
public override void DoDragDrop(IDataObject dataObject, DragDropEffects effect) { if (!isInitialized) { Initialize(); isInitialized = true; } if (dataObject.GetDataPresent(typeof(SolutionFolderNode))) { SolutionFolderNode folderNode = (SolutionFolderNode)dataObject.GetData(typeof(SolutionFolderNode)); AbstractProjectBrowserTreeNode parentNode = folderNode.Parent as AbstractProjectBrowserTreeNode; folderNode.Remove(); folderNode.InsertSorted(this); folderNode.EnsureVisible(); this.folder.AddFolder(folderNode.Folder); if (parentNode != null) { parentNode.Refresh(); } } if (dataObject.GetDataPresent(typeof(SolutionItemNode))) { SolutionItemNode solutionItemNode = (SolutionItemNode)dataObject.GetData(typeof(SolutionItemNode)); ISolutionFolderNode folderNode = (ISolutionFolderNode)solutionItemNode.Parent; folderNode.Container.SolutionItems.Items.Remove(solutionItemNode.SolutionItem); Container.SolutionItems.Items.Add(solutionItemNode.SolutionItem); solutionItemNode.Remove(); solutionItemNode.InsertSorted(this); solutionItemNode.EnsureVisible(); if (solutionItemNode.Parent != null) { ((ExtTreeNode)solutionItemNode.Parent).Refresh(); } } if (dataObject.GetDataPresent(typeof(ProjectNode))) { ProjectNode projectNode = (ProjectNode)dataObject.GetData(typeof(ProjectNode)); projectNode.Remove(); projectNode.InsertSorted(this); projectNode.EnsureVisible(); this.folder.AddFolder(projectNode.Project); if (projectNode.Parent != null) { ((ExtTreeNode)projectNode.Parent).Refresh(); } } solution.Save(); }
public static void AddProject(ISolutionFolderNode solutionFolderNode, string fileName) { if (solutionFolderNode == null) { throw new ArgumentNullException("solutionFolderNode"); } ProjectLoadInformation loadInfo = new ProjectLoadInformation(solutionFolderNode.Solution, fileName, Path.GetFileNameWithoutExtension(fileName)); AddProject(solutionFolderNode, ProjectBindingService.LoadProject(loadInfo)); }
public static void AddProject(ISolutionFolderNode solutionFolderNode, IProject newProject) { if (solutionFolderNode.Solution.SolutionFolders.Any( folder => string.Equals(folder.IdGuid, newProject.IdGuid, StringComparison.OrdinalIgnoreCase))) { LoggingService.Warn("ProjectService.AddProject: Duplicate IdGuid detected"); newProject.IdGuid = Guid.NewGuid().ToString().ToUpperInvariant(); } solutionFolderNode.Container.AddFolder(newProject); ParserService.CreateProjectContentForAddedProject(newProject); OnProjectAdded(new ProjectEventArgs(newProject)); }
/// <summary> /// Visists the given visitor with the specified solution folder. /// </summary> public static bool Accept(ISolutionFolderNode solutionFolder, ISolutionVisitor visitor) { if (visitor.VisitEnter(solutionFolder)) { foreach (var node in solutionFolder.Nodes) { if (!node.Accept(visitor)) break; } } return visitor.VisitLeave(solutionFolder); }
public override void Run() { TreeNode node = ProjectBrowserPad.Instance.ProjectBrowserControl.SelectedNode; while (node != null && !(node is ISolutionFolderNode)) { node = node.Parent; } ISolutionFolderNode solutionFolderNode = node as ISolutionFolderNode; if (solutionFolderNode != null) { SD.UIService.ShowNewProjectDialog(solutionFolderNode.Folder); } }
public override void Run() { AbstractProjectBrowserTreeNode node = ProjectBrowserPad.Instance.ProjectBrowserControl.SelectedNode; ISolutionFolderNode solutionFolderNode = node as ISolutionFolderNode; if (node != null) { ISolutionFolder newSolutionFolder = solutionFolderNode.Folder.CreateFolder(ResourceService.GetString("ProjectComponent.NewFolderString")); solutionFolderNode.Solution.Save(); SolutionFolderNode newSolutionFolderNode = new SolutionFolderNode(newSolutionFolder); newSolutionFolderNode.InsertSorted(node); ProjectBrowserPad.Instance.StartLabelEdit(newSolutionFolderNode); } }
/// <summary> /// Visists the given visitor with the specified solution folder. /// </summary> public static bool Accept(ISolutionFolderNode solutionFolder, ISolutionVisitor visitor) { if (visitor.VisitEnter(solutionFolder)) { foreach (var node in solutionFolder.Nodes) { if (!node.Accept(visitor)) { break; } } } return(visitor.VisitLeave(solutionFolder)); }
public override void Run() { AbstractProjectBrowserTreeNode node = ProjectBrowserPad.Instance.ProjectBrowserControl.SelectedNode; ISolutionFolderNode solutionFolderNode = node as ISolutionFolderNode; if (node != null) { using (NewProjectDialog npdlg = new NewProjectDialog(false)) { npdlg.InitialProjectLocationDirectory = GetInitialDirectorySuggestion(solutionFolderNode); // show the dialog to request project type and name if (npdlg.ShowDialog(ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainForm) == DialogResult.OK) { if (npdlg.NewProjectLocation.Length == 0) { MessageService.ShowError("No project has been created, there is nothing to add."); return; } AddExitingProjectToSolution.AddProject(solutionFolderNode, npdlg.NewProjectLocation); ProjectService.SaveSolution(); if (SDLite.UpdateInfo.ExpandNewProjectByDefaut) { IWorkbenchWindow window = WorkbenchSingleton.Workbench.ActiveWorkbenchWindow; if (window != null && window.ActiveViewContent != null) { ProjectBrowserPad.Instance.ProjectBrowserControl.SelectFile(window.ActiveViewContent.PrimaryFileName); } node = ProjectBrowserPad.Instance.ProjectBrowserControl.SelectedNode; if (node is ProjectNode) { node.Expand(); } } } } } }
public override void Run() { AbstractProjectBrowserTreeNode node = ProjectBrowserPad.Instance.ProjectBrowserControl.SelectedNode; ISolutionFolderNode solutionFolderNode = node as ISolutionFolderNode; if (node != null) { using (NewProjectDialog npdlg = new NewProjectDialog(false)) { if (npdlg.ShowDialog(ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainForm) == DialogResult.OK) { if (npdlg.NewProjectLocation.Length == 0) { MessageService.ShowError("No project has been created, there is nothing to add."); return; } AddExitingProjectToSolution.AddProject(solutionFolderNode, npdlg.NewProjectLocation); ProjectService.SaveSolution(); } } } }
internal static string GetInitialDirectorySuggestion(ISolutionFolderNode solutionFolderNode) { // Detect the correct folder to place the new project in: int projectCount = 0; string initialDirectory = null; foreach (ISolutionFolder folderEntry in solutionFolderNode.Container.Folders) { IProject project = folderEntry as IProject; if (project != null) { if (projectCount == 0) { initialDirectory = project.Directory; } else { initialDirectory = FileUtility.GetCommonBaseDirectory(initialDirectory, project.Directory); } projectCount++; } } if (initialDirectory != null) { if (projectCount == 1) { return(FileUtility.GetAbsolutePath(initialDirectory, "..")); } else { return(initialDirectory); } } else { return(solutionFolderNode.Solution.Directory); } }
public override void Run() { AbstractProjectBrowserTreeNode node = ProjectBrowserPad.Instance.ProjectBrowserControl.SelectedNode; ISolutionFolderNode solutionFolderNode = node as ISolutionFolderNode; if (node != null) { using (OpenFileDialog fdiag = new OpenFileDialog()) { fdiag.AddExtension = true; fdiag.Filter = StringParser.Parse("${res:SharpDevelop.FileFilter.AllFiles}|*.*"); fdiag.Multiselect = true; fdiag.CheckFileExists = true; if (fdiag.ShowDialog(ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainForm) == DialogResult.OK) { foreach (string fileName in fdiag.FileNames) { solutionFolderNode.AddItem(fileName); } ProjectService.SaveSolution(); } } } }
public override void Run() { AbstractProjectBrowserTreeNode node = ProjectBrowserPad.Instance.ProjectBrowserControl.SelectedNode; ISolutionFolderNode solutionFolderNode = node as ISolutionFolderNode; if (node != null) { using (OpenFileDialog fdiag = new OpenFileDialog()) { fdiag.AddExtension = true; fdiag.Filter = ProjectService.GetAllProjectsFilter(this); fdiag.Multiselect = true; fdiag.CheckFileExists = true; fdiag.InitialDirectory = AddNewProjectToSolution.GetInitialDirectorySuggestion(solutionFolderNode); if (fdiag.ShowDialog(ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainForm) == DialogResult.OK) { foreach (string fileName in fdiag.FileNames) { AddProject(solutionFolderNode, fileName); } ProjectService.SaveSolution(); } } } }
public static void AddProject(ISolutionFolderNode solutionFolderNode, string fileName) { AddProject(solutionFolderNode, LanguageBindingService.LoadProject(solutionFolderNode.Solution, fileName, Path.GetFileNameWithoutExtension(fileName))); }
/// <summary> /// Adapts a <see cref="ISolutionFolderNode"/> to an <see cref="IVsHierarchy"/>. /// </summary> /// <returns>The <see cref="IVsHierarchy"/> or <see langword="null"/> if conversion is not possible.</returns> public static IVsHierarchy AsVsHierarchy(this ISolutionFolderNode folder) => folder.As <IVsHierarchy>();
/// <summary> /// Adapts a <see cref="ISolutionFolderNode"/> to an <see cref="IVsHierarchyItem"/>. /// </summary> /// <returns>The <see cref="IVsHierarchyItem"/> or <see langword="null"/> if conversion is not possible.</returns> public static IVsHierarchyItem AsVsHierarchyItem(this ISolutionFolderNode folder) => folder.As <IVsHierarchyItem>();
public bool VisitLeave(ISolutionFolderNode solutionFolder) { return(!done); }
/// <summary> /// Ends visiting a solution folder. /// </summary> /// <param name="solutionFolder">The solution folder being visited.</param> /// <returns> /// <see langword="true" /> if the solution folder siblings should be visited; <see langword="false" /> otherwise. /// </returns> public virtual bool VisitLeave(ISolutionFolderNode solutionFolder) { return(true); }
public virtual void Visit(ISolutionFolderNode node) { DefaultVisit(node); }
public bool VisitEnter (ISolutionFolderNode solutionFolder) => true;
public bool VisitLeave(ISolutionFolderNode solutionFolder) { throw new NotSupportedException(); }
/// <summary> /// Ends visiting a solution folder. /// </summary> /// <param name="solutionFolder">The solution folder being visited.</param> /// <returns> /// <see langword="true" /> if the solution folder siblings should be visited; <see langword="false" /> otherwise. /// </returns> public virtual bool VisitLeave(ISolutionFolderNode solutionFolder) => true;
public bool VisitEnter(ISolutionFolderNode solutionFolder) { return(!done); }
public bool VisitLeave(ISolutionFolderNode solutionFolder) { return !done; }
public bool VisitEnter(ISolutionFolderNode solutionFolder) => !done;
public static bool DoEnablePaste(ISolutionFolderNode container) { return(DoEnablePaste(container, ClipboardWrapper.GetDataObject())); }
public bool VisitLeave (ISolutionFolderNode solutionFolder) => true;
public static bool DoEnablePaste(ISolutionFolderNode container) { return DoEnablePaste(container.Folder, SD.Clipboard.GetDataObject()); }
public static bool DoEnablePaste(ISolutionFolderNode container) { IDataObject dataObject = ClipboardWrapper.GetDataObject(); if (dataObject == null) { return false; } if (dataObject.GetDataPresent(typeof(ISolutionFolder).ToString())) { string guid = dataObject.GetData(typeof(ISolutionFolder).ToString()).ToString(); ISolutionFolder solutionFolder = container.Solution.GetSolutionFolder(guid); if (solutionFolder == null || solutionFolder == container) return false; if (solutionFolder is ISolutionFolderContainer) { return solutionFolder.Parent != container && !((ISolutionFolderContainer)solutionFolder).IsAncestorOf(container.Folder); } else { return solutionFolder.Parent != container; } } return false; }
/// <summary> /// Begins visiting a solution folder. /// </summary> /// <param name="solutionFolder">The solution folder being visited.</param> /// <returns> /// <see langword="true" /> if the solution folder children should be visited; <see langword="false" /> otherwise. /// </returns> public virtual bool VisitEnter(ISolutionFolderNode solutionFolder) { return true; }
public static void AddProject(ISolutionFolderNode solutionFolderNode, IProject newProject) { if (solutionFolderNode.Solution.SolutionFolders.Any( folder => string.Equals(folder.IdGuid, newProject.IdGuid, StringComparison.OrdinalIgnoreCase))) { LoggingService.Warn("ProjectService.AddProject: Duplicate IdGuid detected"); newProject.IdGuid = Guid.NewGuid().ToString().ToUpperInvariant(); } solutionFolderNode.Container.AddFolder(newProject); ParserService.CreateProjectContentForAddedProject(newProject); solutionFolderNode.Solution.FixSolutionConfiguration(new IProject[] { newProject }); OnProjectAdded(new ProjectEventArgs(newProject)); }
/// <summary> /// Ends visiting a solution folder. /// </summary> /// <param name="solutionFolder">The solution folder being visited.</param> /// <returns> /// <see langword="true" /> if the solution folder siblings should be visited; <see langword="false" /> otherwise. /// </returns> public virtual bool VisitLeave(ISolutionFolderNode solutionFolder) { return true; }
public bool VisitLeave(ISolutionFolderNode solutionFolder) => !done;
public bool VisitEnter(ISolutionFolderNode solutionFolder) { return !done; }