Browse Source

Fixed SD2-840: Adding existing item to unknown project type throws a null reference exception

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/2.0@1470 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 19 years ago
parent
commit
7ec05ca194
  1. 134
      AddIns/ICSharpCode.SharpDevelop.addin
  2. 10
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/FolderNodeCommands.cs
  3. 4
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/DirectoryNode.cs
  4. 2
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/ProjectNode.cs

134
AddIns/ICSharpCode.SharpDevelop.addin

@ -298,25 +298,7 @@ @@ -298,25 +298,7 @@
<MenuItem id = "AddSeparator" type = "Separator"/>
<Include id = "ProjectActions" path="/SharpDevelop/Pads/ProjectBrowser/ContextMenu/ProjectActions"/>
<MenuItem id = "Separator2" type = "Separator"/>
<MenuItem id = "Cut"
label = "${res:XML.MainMenu.EditMenu.Cut}"
type = "Item"
icon = "Icons.16x16.CutIcon"
class = "ICSharpCode.SharpDevelop.Project.Commands.CutProjectBrowserNode"/>
<MenuItem id = "Paste"
label = "${res:XML.MainMenu.EditMenu.Paste}"
type = "Item"
icon = "Icons.16x16.PasteIcon"
class = "ICSharpCode.SharpDevelop.Project.Commands.PasteProjectBrowserNode"/>
<MenuItem id = "Remove"
label = "${res:Global.RemoveButtonText}"
type = "Item"
icon = "Icons.16x16.DeleteIcon"
class = "ICSharpCode.SharpDevelop.Project.Commands.DeleteProjectBrowserNode"/>
<MenuItem id = "Rename"
label = "${res:ProjectComponent.ContextMenu.Rename}"
shortcut = "F2"
class = "ICSharpCode.SharpDevelop.Project.Commands.RenameEntryEvent"/>
<Include id="inc" path="/SharpDevelop/Pads/ProjectBrowser/ContextMenu/CutPasteRemoveRename"/>
<MenuItem id = "CutCopyPasteSeparator" type = "Separator"/>
<MenuItem id = "Properties"
icon = "Icons.16x16.PropertiesIcon"
@ -324,6 +306,14 @@ @@ -324,6 +306,14 @@
class = "ICSharpCode.SharpDevelop.Project.Commands.ShowPropertiesForNode"/>
</Path>
<Path name="/SharpDevelop/Pads/ProjectBrowser/ContextMenu/MissingProjectNode">
<Include id="inc" path="/SharpDevelop/Pads/ProjectBrowser/ContextMenu/CutPasteRemoveRename"/>
</Path>
<Path name="/SharpDevelop/Pads/ProjectBrowser/ContextMenu/UnknownProjectNode">
<Include id="inc" path="/SharpDevelop/Pads/ProjectBrowser/ContextMenu/CutPasteRemoveRename"/>
</Path>
<Path name="/SharpDevelop/Pads/ProjectBrowser/ContextMenu/ProjectActions">
<Condition name="IsProcessRunning" isprocessrunning="False" isdebugging="False" action="Disable">
<MenuItem id = "Run"
@ -415,30 +405,7 @@ @@ -415,30 +405,7 @@
<MenuItem id = "ExcludeSeparator" type = "Separator" />
</ComplexCondition>
<MenuItem id = "Cut"
label = "${res:XML.MainMenu.EditMenu.Cut}"
type = "Item"
icon = "Icons.16x16.CutIcon"
class = "ICSharpCode.SharpDevelop.Project.Commands.CutProjectBrowserNode"/>
<MenuItem id = "Copy"
label = "${res:XML.MainMenu.EditMenu.Copy}"
type = "Item"
icon = "Icons.16x16.CopyIcon"
class = "ICSharpCode.SharpDevelop.Project.Commands.CopyProjectBrowserNode"/>
<MenuItem id = "Paste"
label = "${res:XML.MainMenu.EditMenu.Paste}"
type = "Item"
icon = "Icons.16x16.PasteIcon"
class = "ICSharpCode.SharpDevelop.Project.Commands.PasteProjectBrowserNode"/>
<MenuItem id = "Delete"
label = "${res:XML.MainMenu.EditMenu.Delete}"
type = "Item"
icon = "Icons.16x16.DeleteIcon"
class = "ICSharpCode.SharpDevelop.Project.Commands.DeleteProjectBrowserNode"/>
<MenuItem id = "Rename"
label = "${res:ProjectComponent.ContextMenu.Rename}"
shortcut = "F2"
class = "ICSharpCode.SharpDevelop.Project.Commands.RenameEntryEvent"/>
<Include id="CutCopyPasteDeleteRename" path="/SharpDevelop/Pads/ProjectBrowser/ContextMenu/CutCopyPasteDeleteRename"/>
<MenuItem id = "RenameSeparator" type = "Separator" />
<MenuItem id = "Properties"
icon = "Icons.16x16.PropertiesIcon"
@ -447,6 +414,62 @@ @@ -447,6 +414,62 @@
</ComplexCondition>
</Path>
<Path name = "/SharpDevelop/Pads/ProjectBrowser/ContextMenu/CutPasteRemoveRename">
<MenuItem id = "Cut"
label = "${res:XML.MainMenu.EditMenu.Cut}"
type = "Item"
icon = "Icons.16x16.CutIcon"
loadclasslazy = "false"
class = "ICSharpCode.SharpDevelop.Project.Commands.CutProjectBrowserNode"/>
<MenuItem id = "Paste"
label = "${res:XML.MainMenu.EditMenu.Paste}"
type = "Item"
icon = "Icons.16x16.PasteIcon"
loadclasslazy = "false"
class = "ICSharpCode.SharpDevelop.Project.Commands.PasteProjectBrowserNode"/>
<MenuItem id = "Remove"
label = "${res:Global.RemoveButtonText}"
type = "Item"
icon = "Icons.16x16.DeleteIcon"
loadclasslazy = "false"
class = "ICSharpCode.SharpDevelop.Project.Commands.DeleteProjectBrowserNode"/>
<MenuItem id = "Rename"
label = "${res:ProjectComponent.ContextMenu.Rename}"
shortcut = "F2"
class = "ICSharpCode.SharpDevelop.Project.Commands.RenameEntryEvent"/>
</Path>
<Path name = "/SharpDevelop/Pads/ProjectBrowser/ContextMenu/CutCopyPasteDeleteRename">
<MenuItem id = "Cut"
label = "${res:XML.MainMenu.EditMenu.Cut}"
type = "Item"
icon = "Icons.16x16.CutIcon"
loadclasslazy = "false"
class = "ICSharpCode.SharpDevelop.Project.Commands.CutProjectBrowserNode"/>
<MenuItem id = "Copy"
label = "${res:XML.MainMenu.EditMenu.Copy}"
type = "Item"
icon = "Icons.16x16.CopyIcon"
loadclasslazy = "false"
class = "ICSharpCode.SharpDevelop.Project.Commands.CopyProjectBrowserNode"/>
<MenuItem id = "Paste"
label = "${res:XML.MainMenu.EditMenu.Paste}"
type = "Item"
icon = "Icons.16x16.PasteIcon"
loadclasslazy = "false"
class = "ICSharpCode.SharpDevelop.Project.Commands.PasteProjectBrowserNode"/>
<MenuItem id = "Delete"
label = "${res:XML.MainMenu.EditMenu.Delete}"
type = "Item"
icon = "Icons.16x16.DeleteIcon"
loadclasslazy = "false"
class = "ICSharpCode.SharpDevelop.Project.Commands.DeleteProjectBrowserNode"/>
<MenuItem id = "Rename"
label = "${res:ProjectComponent.ContextMenu.Rename}"
shortcut = "F2"
class = "ICSharpCode.SharpDevelop.Project.Commands.RenameEntryEvent"/>
</Path>
<Path name = "/SharpDevelop/Pads/ProjectBrowser/ContextMenu/FolderNode">
<Condition name = "Ownerstate" ownerstate = "Missing">
<MenuItem id = "CreateMissing"
@ -499,30 +522,7 @@ @@ -499,30 +522,7 @@
<MenuItem id = "ExcludeSeparator" type = "Separator" />
</ComplexCondition>
<MenuItem id = "Cut"
label = "${res:XML.MainMenu.EditMenu.Cut}"
type = "Item"
icon = "Icons.16x16.CutIcon"
class = "ICSharpCode.SharpDevelop.Project.Commands.CutProjectBrowserNode"/>
<MenuItem id = "Copy"
label = "${res:XML.MainMenu.EditMenu.Copy}"
type = "Item"
icon = "Icons.16x16.CopyIcon"
class = "ICSharpCode.SharpDevelop.Project.Commands.CopyProjectBrowserNode"/>
<MenuItem id = "Paste"
label = "${res:XML.MainMenu.EditMenu.Paste}"
icon = "Icons.16x16.PasteIcon"
type = "Item"
class = "ICSharpCode.SharpDevelop.Project.Commands.PasteProjectBrowserNode"/>
<MenuItem id = "Delete"
label = "${res:XML.MainMenu.EditMenu.Delete}"
type = "Item"
icon = "Icons.16x16.DeleteIcon"
class = "ICSharpCode.SharpDevelop.Project.Commands.DeleteProjectBrowserNode"/>
<MenuItem id = "Rename"
label = "${res:ProjectComponent.ContextMenu.Rename}"
shortcut = "F2"
class = "ICSharpCode.SharpDevelop.Project.Commands.RenameEntryEvent"/>
<Include id="CutCopyPasteDeleteRename" path="/SharpDevelop/Pads/ProjectBrowser/ContextMenu/CutCopyPasteDeleteRename"/>
</ComplexCondition>
</Path>

10
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/FolderNodeCommands.cs

@ -35,10 +35,12 @@ namespace ICSharpCode.SharpDevelop.Project.Commands @@ -35,10 +35,12 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
{
if (project != null) {
LanguageBindingDescriptor languageCodon = LanguageBindingService.GetCodonPerLanguageName(project.Language);
for (int i = 0; i < fileFilters.Length; ++i) {
for (int j = 0; j < languageCodon.Supportedextensions.Length; ++j) {
if (fileFilters[i].ToUpperInvariant().IndexOf(languageCodon.Supportedextensions[j].ToUpperInvariant()) >= 0) {
return i + 1;
if (languageCodon != null) {
for (int i = 0; i < fileFilters.Length; ++i) {
for (int j = 0; j < languageCodon.Supportedextensions.Length; ++j) {
if (fileFilters[i].ToUpperInvariant().IndexOf(languageCodon.Supportedextensions[j].ToUpperInvariant()) >= 0) {
return i + 1;
}
}
}
}

4
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/DirectoryNode.cs

@ -544,14 +544,14 @@ namespace ICSharpCode.SharpDevelop.Project @@ -544,14 +544,14 @@ namespace ICSharpCode.SharpDevelop.Project
}
if (dataObject.GetDataPresent(typeof(FileNode))) {
FileOperationClipboardObject clipboardObject = (FileOperationClipboardObject)dataObject.GetData(typeof(FileNode).ToString());
return !FileUtility.IsEqualFileName(Directory, clipboardObject.FileName) && !FileUtility.IsEqualFileName(Directory, Path.GetDirectoryName(clipboardObject.FileName)) && File.Exists(clipboardObject.FileName);
return File.Exists(clipboardObject.FileName);
}
if (dataObject.GetDataPresent(typeof(DirectoryNode))) {
FileOperationClipboardObject clipboardObject = (FileOperationClipboardObject)dataObject.GetData(typeof(DirectoryNode).ToString());
if (FileUtility.IsBaseDirectory(clipboardObject.FileName, Directory)) {
return false;
}
return !FileUtility.IsEqualFileName(Directory, clipboardObject.FileName) && !FileUtility.IsEqualFileName(Directory, Path.GetDirectoryName(clipboardObject.FileName)) && System.IO.Directory.Exists(clipboardObject.FileName);
return System.IO.Directory.Exists(clipboardObject.FileName);
}
return false;
}

2
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/ProjectNode.cs

@ -56,8 +56,10 @@ namespace ICSharpCode.SharpDevelop.Project @@ -56,8 +56,10 @@ namespace ICSharpCode.SharpDevelop.Project
if (project is MissingProject) {
OpenedImage = ClosedImage = "ProjectBrowser.MissingProject";
this.ContextmenuAddinTreePath = "/SharpDevelop/Pads/ProjectBrowser/ContextMenu/MissingProjectNode";
} else if (project is UnknownProject) {
OpenedImage = ClosedImage = "ProjectBrowser.ProjectWarning";
this.ContextmenuAddinTreePath = "/SharpDevelop/Pads/ProjectBrowser/ContextMenu/UnknownProjectNode";
} else {
OpenedImage = ClosedImage = IconService.GetImageForProjectType(project.Language);
}

Loading…
Cancel
Save