Browse Source

Fixed some bugs in the project browser (Solution Folders and Solution Items)

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@774 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 20 years ago
parent
commit
45e773b985
  1. 34
      AddIns/ICSharpCode.SharpDevelop.addin
  2. 14
      src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
  3. 2
      src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeView.cs
  4. 77
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/SolutionNodeCommands.cs
  5. 11
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionFolderNode.cs
  6. 7
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionItemNode.cs
  7. 9
      src/Main/Base/Project/Src/Services/File/FileService.cs
  8. 26
      src/Main/Base/Project/Src/Services/IconService.cs

34
AddIns/ICSharpCode.SharpDevelop.addin

@ -149,34 +149,34 @@ @@ -149,34 +149,34 @@
<Path path = "/SharpDevelop/Pads/ProjectBrowser/ContextMenu/SolutionNode">
<MenuItem id = "Build"
label = "&amp;Build"
label = "${res:XML.MainMenu.BuildMenu.BuildSolution}"
shortcut = "F8"
icon = "Icons.16x16.BuildCombine"
class = "ICSharpCode.SharpDevelop.Project.Commands.Build"/>
<MenuItem id = "Rebuild"
label = "&amp;Rebuild"
label = "${res:XML.MainMenu.BuildMenu.RebuildSolution}"
shortcut = "Alt|F8"
class = "ICSharpCode.SharpDevelop.Project.Commands.Rebuild"/>
<MenuItem id = "&amp;Clean"
<MenuItem id = "${res:XML.MainMenu.BuildMenu.CleanSolution}"
label = "Clean"
class = "ICSharpCode.SharpDevelop.Project.Commands.Clean"/>
<MenuItem id = "CombineBuildGroupSeparator" type = "Separator"/>
<MenuItem id = "CombineAddMenu" label = "${res:ProjectComponent.ContextMenu.AddMenu}" type = "Menu" >
<MenuItem id = "CombineAddMenu" label = "${res:ProjectComponent.ContextMenu.AddMenu}" type = "Menu">
<MenuItem id = "AddNewProjectToSolution"
label = "&amp;New Project..."
label = "${res:ProjectComponent.ContextMenu.NewProject}"
icon = "Icons.16x16.NewProjectIcon"
class = "ICSharpCode.SharpDevelop.Project.Commands.AddNewProjectToSolution"/>
<MenuItem id = "AddExitingProjectToSolution"
label = "&amp;Existing Project..."
label = "${res:ProjectComponent.ContextMenu.ExistingProject}"
class = "ICSharpCode.SharpDevelop.Project.Commands.AddExitingProjectToSolution"/>
<MenuItem id = "Separator1" type = "Separator" />
<MenuItem id = "AddItem"
label = "Add &amp;Item..."
label = "${res:ProjectComponent.ContextMenu.AddItem}"
class = "ICSharpCode.SharpDevelop.Project.Commands.AddExistingItemToSolution"/>
<MenuItem id = "AddNewSolutionFolderToSolution"
icon = "ProjectBrowser.SolutionFolder.CreateNew"
label = "New Solution &amp;Folder"
label = "${res:ProjectComponent.ContextMenu.NewSolutionFolder}"
class = "ICSharpCode.SharpDevelop.Project.Commands.AddNewSolutionFolderToSolution"/>
</MenuItem>
@ -197,23 +197,7 @@ @@ -197,23 +197,7 @@
</Path>
<Path path = "/SharpDevelop/Pads/ProjectBrowser/ContextMenu/SolutionFolderNode">
<MenuItem id = "CombineAddMenu" label = "${res:ProjectComponent.ContextMenu.AddMenu}" type = "Menu">
<MenuItem id = "AddNewProjectToSolution"
label = "${res:ProjectComponent.ContextMenu.NewProject}"
icon = "Icons.16x16.NewProjectIcon"
class = "ICSharpCode.SharpDevelop.Project.Commands.AddNewProjectToSolution"/>
<MenuItem id = "AddExitingProjectToSolution"
label = "${res:ProjectComponent.ContextMenu.ExistingProject}"
class = "ICSharpCode.SharpDevelop.Project.Commands.AddExitingProjectToSolution"/>
<MenuItem id = "Separator1" type = "Separator" />
<MenuItem id = "AddItem"
label = "${res:ProjectComponent.ContextMenu.AddItem}"
class = "ICSharpCode.SharpDevelop.Project.Commands.AddExistingItemToSolution"/>
<MenuItem id = "AddNewSolutionFolderToSolution"
icon = "ProjectBrowser.SolutionFolder.CreateNew"
label = "${res:ProjectComponent.ContextMenu.NewSolutionFolder}"
class = "ICSharpCode.SharpDevelop.Project.Commands.AddNewSolutionFolderToSolution"/>
</MenuItem>
<Include id = "CombineAddMenu" item="/SharpDevelop/Pads/ProjectBrowser/ContextMenu/SolutionNode/CombineAddMenu"/>
<MenuItem id = "AddSeparator" type = "Separator"/>
<MenuItem id = "Cut"

14
src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj

@ -15,7 +15,6 @@ @@ -15,7 +15,6 @@
<AssemblyOriginatorKeyMode>File</AssemblyOriginatorKeyMode>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>True</DebugSymbols>
<Optimize>False</Optimize>
<DefineConstants>DEBUG</DefineConstants>
<CheckForOverflowUnderflow>True</CheckForOverflowUnderflow>
@ -23,12 +22,18 @@ @@ -23,12 +22,18 @@
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugSymbols>False</DebugSymbols>
<Optimize>True</Optimize>
<CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
<OutputPath>..\..\..\..\bin\</OutputPath>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<DebugType>Full</DebugType>
<DebugSymbols>true</DebugSymbols>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
<DebugSymbols>False</DebugSymbols>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Data" />
@ -745,6 +750,9 @@ @@ -745,6 +750,9 @@
<Folder Include="Src\Gui\Components\AutoHide" />
<Folder Include="Src\Gui\TreeGrid" />
<Folder Include="Src\Gui\Pads\TaskList" />
<Content Include="..\..\..\..\AddIns\ICSharpCode.SharpDevelop.addin">
<Link>ICSharpCode.SharpDevelop.addin</Link>
</Content>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
</Project>
</Project>

2
src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeView.cs

@ -170,7 +170,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -170,7 +170,7 @@ namespace ICSharpCode.SharpDevelop.Gui
e.CancelEdit = true;
ExtTreeNode node = e.Node as ExtTreeNode;
if (node != null) {
if (node != null && e.Label != null) {
node.AfterLabelEdit(e.Label);
}
SortParentNodes(e.Node);

77
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/SolutionNodeCommands.cs

@ -81,55 +81,6 @@ namespace ICSharpCode.SharpDevelop.Project.Commands @@ -81,55 +81,6 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
}
}
}
// public class AddNewSolutionToSolution : AbstractMenuCommand
// {
// public override void Run()
// {
//// ProjectBrowserView browser = (ProjectBrowserView)Owner;
//// CombineBrowserNode node = browser.SelectedNode as CombineBrowserNode;
////
//// if (node != null) {
//// using (NewProjectDialog npdlg = new NewProjectDialog(false)) {
//// if (npdlg.ShowDialog(ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainForm) == DialogResult.OK) {
//// node.Nodes.Add(ProjectBrowserView.BuildCombineTreeNode((Combine)node.Combine.AddEntry(npdlg.NewCombineLocation)));
//// ProjectService.SaveCombine();
//// }
//// }
//// }
// }
// }
//
//
// public class AddSolutionToSolution : AbstractMenuCommand
// {
// public override void Run()
// {
//// ProjectBrowserView browser = (ProjectBrowserView)Owner;
//// CombineBrowserNode node = browser.SelectedNode as CombineBrowserNode;
////
//// if (node != null) {
//// using (OpenFileDialog fdiag = new OpenFileDialog()) {
//// fdiag.AddExtension = true;
////
//// fdiag.Filter = StringParser.Parse("${res:SharpDevelop.FileFilter.CombineFiles}|*.cmbx|${res:SharpDevelop.FileFilter.AllFiles}|*.*");
//// fdiag.Multiselect = false;
//// fdiag.CheckFileExists = true;
//// if (fdiag.ShowDialog(ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainForm) == DialogResult.OK) {
//// object obj = node.Combine.AddEntry(fdiag.FileName);
//// if(obj != null) {
//// if (obj is IProject) {
//// node.Nodes.Add(ProjectBrowserView.BuildProjectTreeNode((IProject)obj));
//// } else {
//// node.Nodes.Add(ProjectBrowserView.BuildCombineTreeNode((Combine)obj));
//// }
//// ProjectService.SaveCombine();
//// }
//// }
//// }
//// }
// }
// }
public class AddExistingItemToSolution : AbstractMenuCommand
{
@ -161,7 +112,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands @@ -161,7 +112,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
AbstractProjectBrowserTreeNode node = ProjectBrowserPad.Instance.ProjectBrowserControl.SelectedNode;
ISolutionFolderNode solutionFolderNode = node as ISolutionFolderNode;
if (node != null) {
SolutionFolder newSolutionFolder = solutionFolderNode.Solution.CreateFolder("New Folder");
SolutionFolder newSolutionFolder = solutionFolderNode.Solution.CreateFolder(ResourceService.GetString("ProjectComponent.NewFolderString"));
solutionFolderNode.Container.AddFolder(newSolutionFolder);
solutionFolderNode.Solution.Save();
@ -171,30 +122,4 @@ namespace ICSharpCode.SharpDevelop.Project.Commands @@ -171,30 +122,4 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
}
}
}
// This will be part of the SolutionNode.ShowProperties() method:
// public class CombineOptions : AbstractMenuCommand
// {
// public override void Run()
// {
//
// ProjectBrowserView browser = (ProjectBrowserView)Owner;
// CombineBrowserNode node = browser.SelectedNode as CombineBrowserNode;
//
// if (node != null) {
// Properties defaultProperties = new Properties();
// defaultProperties.Set("Combine", node.Combine);
// using (TreeViewOptions optionsDialog = new TreeViewOptions(defaultProperties,
// AddInTree.GetTreeNode("/SharpDevelop/Workbench/CombineOptions"))) {
//// optionsDialog.Size = new Size(700, 450);
// optionsDialog.FormBorderStyle = FormBorderStyle.FixedDialog;
//
// optionsDialog.Owner = (Form)WorkbenchSingleton.Workbench;
// optionsDialog.ShowDialog(ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainForm);
// ProjectService.SaveCombine();
// }
// }
// }
// }
}

11
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionFolderNode.cs

@ -102,7 +102,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -102,7 +102,7 @@ namespace ICSharpCode.SharpDevelop.Project
SolutionFolderNode folderNode = new SolutionFolderNode(solution, (SolutionFolder)treeObject);
folderNode.AddTo(this);
} else {
LoggingService.Warn("SolutionFolderNode.Initialize(): unknown tree object : " + treeObject);
MessageService.ShowWarning("SolutionFolderNode.Initialize(): unknown tree object : " + treeObject);
}
}
@ -157,7 +157,14 @@ namespace ICSharpCode.SharpDevelop.Project @@ -157,7 +157,14 @@ namespace ICSharpCode.SharpDevelop.Project
if (dataObject.GetDataPresent(typeof(ISolutionFolder).ToString())) {
string guid = dataObject.GetData(typeof(ISolutionFolder).ToString()).ToString();
ISolutionFolder solutionFolder = container.Solution.GetSolutionFolder(guid);
return solutionFolder.Parent != container;
if (solutionFolder == container)
return false;
if (solutionFolder is ISolutionFolderContainer) {
return solutionFolder.Parent != container
&& !((ISolutionFolderContainer)solutionFolder).IsAncestorOf(container.Folder);
} else {
return solutionFolder.Parent != container;
}
}
return false;
}

7
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionItemNode.cs

@ -28,7 +28,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -28,7 +28,7 @@ namespace ICSharpCode.SharpDevelop.Project
public string FileName {
get {
return Path.Combine(Path.GetDirectoryName(solution.FileName), item.Location);
return Path.Combine(solution.Directory, item.Location);
}
}
@ -125,10 +125,9 @@ namespace ICSharpCode.SharpDevelop.Project @@ -125,10 +125,9 @@ namespace ICSharpCode.SharpDevelop.Project
if (!FileService.CheckFileName(newName)) {
return;
}
Text = newName;
string newFileName = Path.Combine(solution.Directory, newName);
FileService.RenameFile(FileUtility.GetAbsolutePath(solution.Directory, item.Name), newFileName, false);
string newFileName = Path.Combine(Path.GetDirectoryName(this.FileName), newName);
FileService.RenameFile(this.FileName, newFileName, false);
ProjectService.SaveSolution();
}
public override object AcceptVisitor(ProjectBrowserTreeNodeVisitor visitor, object data)

9
src/Main/Base/Project/Src/Services/File/FileService.cs

@ -161,14 +161,14 @@ namespace ICSharpCode.Core @@ -161,14 +161,14 @@ namespace ICSharpCode.Core
OnFileRemoved(new FileEventArgs(fileName, isDirectory));
}
public static void RenameFile(string oldName, string newName, bool isDirectory)
public static bool RenameFile(string oldName, string newName, bool isDirectory)
{
if (FileUtility.IsEqualFileName(oldName, newName))
return;
return false;
FileRenamingEventArgs eargs = new FileRenamingEventArgs(oldName, newName, isDirectory);
OnFileRenaming(eargs);
if (eargs.Cancel)
return;
return false;
if (!eargs.OperationAlreadyDone) {
try {
if (isDirectory) {
@ -186,10 +186,11 @@ namespace ICSharpCode.Core @@ -186,10 +186,11 @@ namespace ICSharpCode.Core
} else {
MessageService.ShowError(e, "Can't rename file " + oldName);
}
return;
return false;
}
}
OnFileRenamed(new FileRenameEventArgs(oldName, newName, isDirectory));
return true;
}
public static IViewContent JumpToFilePosition(string fileName, int line, int column)

26
src/Main/Base/Project/Src/Services/IconService.cs

@ -48,12 +48,12 @@ namespace ICSharpCode.Core @@ -48,12 +48,12 @@ namespace ICSharpCode.Core
public static Bitmap GetGhostBitmap(string name)
{
ColorMatrix clrMatrix = new ColorMatrix(new float[][] {
new float[] {1, 0, 0, 0, 0},
new float[] {0, 1, 0, 0, 0},
new float[] {0, 0, 1, 0, 0},
new float[] {0, 0, 0, 0.5f, 0},
new float[] {0, 0, 0, 0, 1}
});
new float[] {1, 0, 0, 0, 0},
new float[] {0, 1, 0, 0, 0},
new float[] {0, 0, 1, 0, 0},
new float[] {0, 0, 0, 0.5f, 0},
new float[] {0, 0, 0, 0, 1}
});
ImageAttributes imgAttributes = new ImageAttributes();
imgAttributes.SetColorMatrix(clrMatrix,
@ -63,9 +63,10 @@ namespace ICSharpCode.Core @@ -63,9 +63,10 @@ namespace ICSharpCode.Core
Bitmap bitmap = GetBitmap(name);
Bitmap ghostBitmap = new Bitmap(bitmap.Width, bitmap.Height, PixelFormat.Format32bppArgb);
Graphics g = Graphics.FromImage(ghostBitmap);
g.FillRectangle(SystemBrushes.Window, new Rectangle(0, 0, bitmap.Width, bitmap.Height));
g.DrawImage(bitmap, new Rectangle(0, 0, bitmap.Width, bitmap.Height), 0, 0,bitmap.Width, bitmap.Height, GraphicsUnit.Pixel, imgAttributes);
using (Graphics g = Graphics.FromImage(ghostBitmap)) {
g.FillRectangle(SystemBrushes.Window, new Rectangle(0, 0, bitmap.Width, bitmap.Height));
g.DrawImage(bitmap, new Rectangle(0, 0, bitmap.Width, bitmap.Height), 0, 0,bitmap.Width, bitmap.Height, GraphicsUnit.Pixel, imgAttributes);
}
return ghostBitmap;
}
@ -96,7 +97,8 @@ namespace ICSharpCode.Core @@ -96,7 +97,8 @@ namespace ICSharpCode.Core
public static string GetImageForFile(string fileName)
{
string extension = Path.GetExtension(fileName).ToUpper();
string extension = Path.GetExtension(fileName).ToUpperInvariant();
if (extension.Length == 0) extension = ".TXT";
if (extensionHashtable.ContainsKey(extension)) {
return extensionHashtable[extension];
}
@ -109,7 +111,7 @@ namespace ICSharpCode.Core @@ -109,7 +111,7 @@ namespace ICSharpCode.Core
extensionHashtable[".CMBX"] = "Icons.16x16.CombineIcon";
extensionHashtable[".SLN"] = "Icons.16x16.CombineIcon";
IconDescriptor[] icons = (IconDescriptor[])treeNode.BuildChildItems(null).ToArray(typeof(IconDescriptor));
for (int i = 0; i < icons.Length; ++i) {
IconDescriptor iconCodon = icons[i];
@ -117,7 +119,7 @@ namespace ICSharpCode.Core @@ -117,7 +119,7 @@ namespace ICSharpCode.Core
if (iconCodon.Extensions != null) {
foreach (string ext in iconCodon.Extensions) {
extensionHashtable[ext.ToUpper()] = imageName;
extensionHashtable[ext.ToUpperInvariant()] = imageName;
}
}

Loading…
Cancel
Save