Browse Source

Fixed SD2-829: Linked file not removed from project browser when deleted

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/2.0@1483 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 19 years ago
parent
commit
77bf824719
  1. 17
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/DefaultFileNodeCommands.cs
  2. 26
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/FileNode.cs

17
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/DefaultFileNodeCommands.cs

@ -50,7 +50,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands @@ -50,7 +50,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
public class ExcludeFileFromProject : AbstractMenuCommand
{
void ExcludeFileNode(FileNode fileNode)
public static void ExcludeFileNode(FileNode fileNode)
{
List<FileNode> dependentNodes = new List<FileNode>();
foreach (TreeNode subNode in fileNode.Nodes) {
@ -60,15 +60,20 @@ namespace ICSharpCode.SharpDevelop.Project.Commands @@ -60,15 +60,20 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
}
dependentNodes.ForEach(ExcludeFileNode);
bool isLink = fileNode.IsLink;
ProjectService.RemoveProjectItem(fileNode.Project, fileNode.ProjectItem);
fileNode.ProjectItem = null;
fileNode.FileNodeStatus = FileNodeStatus.None;
if (fileNode.Parent is ExtTreeNode) {
((ExtTreeNode)fileNode.Parent).UpdateVisibility();
if (isLink) {
fileNode.Remove();
} else {
fileNode.ProjectItem = null;
fileNode.FileNodeStatus = FileNodeStatus.None;
if (fileNode.Parent is ExtTreeNode) {
((ExtTreeNode)fileNode.Parent).UpdateVisibility();
}
}
}
void ExcludeDirectoryNode(DirectoryNode directoryNode)
static void ExcludeDirectoryNode(DirectoryNode directoryNode)
{
if (directoryNode.ProjectItem != null) {
ProjectService.RemoveProjectItem(directoryNode.Project, directoryNode.ProjectItem);

26
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/FileNode.cs

@ -19,7 +19,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -19,7 +19,7 @@ namespace ICSharpCode.SharpDevelop.Project
string fileName = String.Empty;
FileNodeStatus fileNodeStatus = FileNodeStatus.None;
ProjectItem projectItem = null;
public override bool Visible {
get {
return ShowAll || fileNodeStatus != FileNodeStatus.None;
@ -199,20 +199,22 @@ namespace ICSharpCode.SharpDevelop.Project @@ -199,20 +199,22 @@ namespace ICSharpCode.SharpDevelop.Project
public override void Delete()
{
if (FileNodeStatus == FileNodeStatus.Missing) {
FileService.RemoveFile(FileName, false);
Project.Save();
} else {
if (Nodes.Count > 0) {
if (MessageService.AskQuestion(GetQuestionText("${res:ProjectComponent.ContextMenu.DeleteWithDependentFiles.Question}"))) {
DeleteChildNodes();
FileService.RemoveFile(FileName, false);
Project.Save();
}
} else if (MessageService.AskQuestion(GetQuestionText("${res:ProjectComponent.ContextMenu.Delete.Question}"))) {
if (Nodes.Count > 0) {
if (MessageService.AskQuestion(GetQuestionText("${res:ProjectComponent.ContextMenu.DeleteWithDependentFiles.Question}"))) {
DeleteChildNodes();
FileService.RemoveFile(FileName, false);
Project.Save();
}
} else if (!File.Exists(FileName)) {
FileService.RemoveFile(FileName, false);
Project.Save();
} else if (MessageService.AskQuestion(GetQuestionText("${res:ProjectComponent.ContextMenu.Delete.Question}"))) {
FileService.RemoveFile(FileName, false);
if (IsLink) {
// we need to manually remove the link
Commands.ExcludeFileFromProject.ExcludeFileNode(this);
}
Project.Save();
}
}

Loading…
Cancel
Save