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();
        }
Пример #2
0
 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));
 }
Пример #3
0
 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);
 }
Пример #4
0
        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();
                    }
                }
            }
        }
Пример #5
0
        public override void Delete()
        {
            ISolutionFolderNode folderNode = Parent as ISolutionFolderNode;

            folderNode.Container.SolutionItems.Items.Remove(item);
            base.Remove();
        }
Пример #6
0
        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();
        }
Пример #7
0
		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;
			}
		}
Пример #8
0
        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();
                    }
                }
            }
        }
Пример #9
0
		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));
		}
Пример #10
0
 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();
			}
		}
Пример #12
0
        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();
        }
Пример #13
0
 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();
     }
 }
Пример #14
0
        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));
        }
Пример #15
0
 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));
 }
Пример #16
0
        /// <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);
        }
Пример #17
0
        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);
            }
        }
Пример #18
0
        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);
            }
        }
Пример #19
0
        /// <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();
                            }
                        }
                    }
                }
            }
        }
Пример #21
0
        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();
                    }
                }
            }
        }
Пример #22
0
        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);
            }
        }
Пример #23
0
        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();
                    }
                }
            }
        }
Пример #24
0
        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)));
		}
Пример #26
0
 /// <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>();
Пример #27
0
 /// <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>();
Пример #28
0
 public bool VisitLeave(ISolutionFolderNode solutionFolder)
 {
     return(!done);
 }
Пример #29
0
 /// <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);
 }
Пример #31
0
		public bool VisitEnter (ISolutionFolderNode solutionFolder) => true;
		public bool VisitLeave(ISolutionFolderNode solutionFolder)
		{
			throw new NotSupportedException();
		}
Пример #33
0
 /// <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;
Пример #34
0
 public bool VisitEnter(ISolutionFolderNode solutionFolder)
 {
     return(!done);
 }
Пример #35
0
 public static void AddProject(ISolutionFolderNode solutionFolderNode, string fileName)
 {
     AddProject(solutionFolderNode, LanguageBindingService.LoadProject(solutionFolderNode.Solution, fileName, Path.GetFileNameWithoutExtension(fileName)));
 }
 public bool VisitLeave(ISolutionFolderNode solutionFolder)
 {
     return !done;
 }
Пример #37
0
 public bool VisitEnter(ISolutionFolderNode solutionFolder) => !done;
Пример #38
0
		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();
		}
Пример #39
0
 public static bool DoEnablePaste(ISolutionFolderNode container)
 {
     return(DoEnablePaste(container, ClipboardWrapper.GetDataObject()));
 }
Пример #40
0
		public bool VisitLeave (ISolutionFolderNode solutionFolder) => true;
Пример #41
0
		public static bool DoEnablePaste(ISolutionFolderNode container)
		{
			return DoEnablePaste(container.Folder, SD.Clipboard.GetDataObject());
		}
Пример #42
0
		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;
		}
Пример #43
0
		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();
		}
Пример #44
0
 /// <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;
 }
Пример #45
0
		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));
		}
Пример #46
0
 /// <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;
 }
Пример #47
0
 public bool VisitLeave(ISolutionFolderNode solutionFolder) => !done;
 public bool VisitEnter(ISolutionFolderNode solutionFolder)
 {
     return !done;
 }