FileProjectItem CreateNewFile(DirectoryNode upper, string fileName) { upper.Expanding(); FileNode fileNode = new FileNode(fileName, FileNodeStatus.InProject); fileNode.AddTo(upper); fileNode.EnsureVisible(); return(IncludeFileInProject.IncludeFileNode(fileNode)); }
public static void AddDependentItemsToProject(Func <IEnumerable <FileProjectItem> > itemAdder) { DirectoryNode dir = ProjectBrowserPad.Instance.ProjectBrowserControl.SelectedDirectoryNode; if (dir == null) { return; } FileNode fileNode = ProjectBrowserPad.Instance.ProjectBrowserControl.SelectedNode as FileNode; if (fileNode == null) { LoggingService.Warn("ProjectBrowser: AddNewDependentItemsToProject called on node that is not a FileNode, but: " + fileNode); return; } LoggingService.Debug("ProjectBrowser: AddNewDependentItemsToProject on '" + fileNode.FileName + "'"); // Attention: base.AddNewItems may recreate the subnodes, // thus invalidating fileNode. var addedItems = itemAdder(); if (addedItems == null) { return; } fileNode = dir.AllNodes.OfType <FileNode>().Single(node => FileUtility.IsEqualFileName(node.FileName, fileNode.FileName)); // Find the file nodes that correspond to the added items which // do not already have a dependency. var dict = addedItems .Where(fpi => String.IsNullOrEmpty(fpi.DependentUpon)) .ToDictionary( fpi => dir.AllNodes.OfType <FileNode>().Single( node => node.ProjectItem == fpi ) ); if (dict.Count == 0) { return; } foreach (KeyValuePair <FileNode, FileProjectItem> pair in dict) { LoggingService.Debug("ProjectBrowser: AddNewDependentItemsToProject: Creating dependency for '" + pair.Value.FileName + "' upon '" + fileNode.FileName + "'"); pair.Value.DependentUpon = Path.GetFileName(fileNode.FileName); pair.Key.Remove(); pair.Key.FileNodeStatus = FileNodeStatus.BehindFile; pair.Key.InsertSorted(fileNode); } fileNode.Project.Save(); FileNode primaryAddedNode = dict.Keys.First(); primaryAddedNode.EnsureVisible(); primaryAddedNode.TreeView.SelectedNode = primaryAddedNode; }
FileProjectItem CreateNewFile(DirectoryNode upper, string fileName) { upper.Expanding(); FileNode fileNode = new FileNode(fileName, FileNodeStatus.InProject); fileNode.AddTo(upper); fileNode.EnsureVisible(); return IncludeFileInProject.IncludeFileNode(fileNode); }