Browse Source

Fixed moving linked files in the project pad and other minor bugs.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@783 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 20 years ago
parent
commit
2e13b56e1d
  1. 16
      src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Services/DesignerResourceService.cs
  2. 28
      src/AddIns/Misc/NAntAddIn/Project/Src/Gui/NAntPadContent.cs
  3. 2
      src/Libraries/ICSharpCode.TextEditor/Project/Resources/Boo.xshd
  4. 3
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/DefaultFileNodeCommands.cs
  5. 21
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/FolderNodeCommands.cs
  6. 159
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/DirectoryNode.cs
  7. 11
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/FileNode.cs
  8. 4
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionItemNode.cs
  9. 9
      src/Main/Base/Project/Src/Project/Items/ProjectItem.cs
  10. 73
      src/Main/Base/Project/Src/Project/Solution/Solution.cs
  11. 17
      src/Main/Base/Project/Src/Services/ParserService/ParserService.cs
  12. 18
      src/Main/Base/Project/Src/Services/ProjectService/ProjectService.cs

16
src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Services/DesignerResourceService.cs

@ -168,19 +168,9 @@ namespace ICSharpCode.FormDesigner.Services @@ -168,19 +168,9 @@ namespace ICSharpCode.FormDesigner.Services
IProject GetProject()
{
if (_project != null)
return _project;
if (ProjectService.OpenSolution != null) {
LoggingService.Warn(FileName);
foreach (IProject project in ProjectService.OpenSolution.Projects) {
if (project.IsFileInProject(FileName)) {
LoggingService.Warn("use project " + project.Name);
_project = project;
return project;
}
}
}
return null;
if (_project == null)
_project = ProjectService.GetProject(FileName);
return _project;
}
#region System.ComponentModel.Design.IResourceService interface implementation

28
src/AddIns/Misc/NAntAddIn/Project/Src/Gui/NAntPadContent.cs

@ -211,38 +211,12 @@ namespace ICSharpCode.NAntAddIn.Gui @@ -211,38 +211,12 @@ namespace ICSharpCode.NAntAddIn.Gui
void AddBuildFile(string fileName)
{
IProject project = FindProjectContainingFile(fileName);
IProject project = ProjectService.GetProject(fileName);
if (project != null) {
treeView.AddBuildFile(project.Name, fileName);
}
}
IProject FindProjectContainingFile(string fileName)
{
// Try selected project first.
IProject project = ProjectService.CurrentProject;
if (project != null) {
if (!project.IsFileInProject(fileName)) {
// Try all project's in the solution.
project = FindProjectContainingFile(fileName, ProjectService.OpenSolution);
}
}
return project;
}
IProject FindProjectContainingFile(string fileName, Solution solution)
{
foreach (IProject project in solution.Projects) {
if (project.IsFileInProject(fileName)) {
return project;
}
}
return null;
}
void ProjectItemAdded(object sender, ProjectItemEventArgs e)
{
LoggingService.Debug("ProjectItemAdded.");

2
src/Libraries/ICSharpCode.TextEditor/Project/Resources/Boo.xshd

@ -271,7 +271,7 @@ @@ -271,7 +271,7 @@
<Key word="mixin"/>
<Key word="callable"/>
<Key word="do" />
<Key word="of" >
<Key word="of" />
</KeyWords>
</RuleSet>

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

@ -107,7 +107,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands @@ -107,7 +107,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
public class IncludeFileInProject : AbstractMenuCommand
{
public static void IncludeFileNode(FileNode fileNode)
public static FileProjectItem IncludeFileNode(FileNode fileNode)
{
if (fileNode.Parent is FileNode) {
if (((FileNode)fileNode.Parent).FileNodeStatus != FileNodeStatus.InProject) {
@ -134,6 +134,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands @@ -134,6 +134,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
((ExtTreeNode)fileNode.Parent).UpdateVisibility();
}
fileNode.Project.Save();
return newItem;
}
public static ItemType GetDefaultItemType(IProject project, string fileName)

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

@ -38,16 +38,18 @@ namespace ICSharpCode.SharpDevelop.Project.Commands @@ -38,16 +38,18 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
return 0;
}
public static void CopyDirectory(string directoryName, DirectoryNode node)
public static void CopyDirectory(string directoryName, DirectoryNode node, bool includeInProject)
{
string copiedFileName = Path.Combine(node.Directory, Path.GetFileName(directoryName));
if (!FileUtility.IsEqualFileName(directoryName, copiedFileName)) {
FileUtility.DeepCopy(directoryName, copiedFileName, true);
DirectoryNode newNode = new DirectoryNode(copiedFileName);
newNode.AddTo(node);
if (includeInProject) {
IncludeFileInProject.IncludeDirectoryNode(newNode, false);
}
newNode.Expanding();
IncludeFileInProject.IncludeDirectoryNode(newNode, true);
} else {
} else if (includeInProject) {
foreach (TreeNode childNode in node.Nodes) {
if (childNode is DirectoryNode) {
DirectoryNode directoryNode = (DirectoryNode)childNode;
@ -59,7 +61,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands @@ -59,7 +61,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
}
}
public static void CopyFile(string fileName, DirectoryNode node, bool includeInProject)
public static FileProjectItem CopyFile(string fileName, DirectoryNode node, bool includeInProject)
{
string copiedFileName = Path.Combine(node.Directory, Path.GetFileName(fileName));
if (!FileUtility.IsEqualFileName(fileName, copiedFileName)) {
@ -67,7 +69,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands @@ -67,7 +69,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
FileNode newNode = new FileNode(copiedFileName);
newNode.AddTo(node);
if (includeInProject) {
IncludeFileInProject.IncludeFileNode(newNode);
return IncludeFileInProject.IncludeFileNode(newNode);
}
} else if (includeInProject) {
FileNode fileNode;
@ -75,16 +77,15 @@ namespace ICSharpCode.SharpDevelop.Project.Commands @@ -75,16 +77,15 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
if (childNode is FileNode) {
fileNode = (FileNode)childNode;
if (FileUtility.IsEqualFileName(fileNode.FileName, copiedFileName)) {
IncludeFileInProject.IncludeFileNode(fileNode);
return;
return IncludeFileInProject.IncludeFileNode(fileNode);
}
}
}
fileNode = new FileNode(fileName);
fileNode.AddTo(node);
IncludeFileInProject.IncludeFileNode(fileNode);
return IncludeFileInProject.IncludeFileNode(fileNode);
}
return null;
}
public override void Run()
@ -124,7 +125,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands @@ -124,7 +125,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
FileNode fileNode = new FileNode(relFileName, FileNodeStatus.InProject);
FileProjectItem fileProjectItem = new FileProjectItem(node.Project, IncludeFileInProject.GetDefaultItemType(node.Project, fileName));
fileProjectItem.Include = relFileName;
fileProjectItem.Properties.Set("Link", Path.GetFileName(fileName));
fileProjectItem.Properties.Set("Link", Path.Combine(node.RelativePath, Path.GetFileName(fileName)));
fileNode.ProjectItem = fileProjectItem;
fileNode.AddTo(node);
ProjectService.AddProjectItem(node.Project, fileProjectItem);

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

@ -11,12 +11,12 @@ using System.Collections.Generic; @@ -11,12 +11,12 @@ using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
using ICSharpCode.SharpDevelop.Project.Commands;
using ICSharpCode.Core;
namespace ICSharpCode.SharpDevelop.Project
{
[Serializable]
public class FileOperationClipboardObject : System.MarshalByRefObject
{
string fileName;
@ -36,6 +36,23 @@ namespace ICSharpCode.SharpDevelop.Project @@ -36,6 +36,23 @@ namespace ICSharpCode.SharpDevelop.Project
this.fileName = fileName;
this.performMove = performMove;
}
public static IDataObject CreateDataObject(FileNode node, bool performMove)
{
return new DataObject(typeof(FileNode).ToString(), new FileOperationClipboardObject(node.FileName, performMove));
}
public static IDataObject CreateDataObject(SolutionItemNode node, bool performMove)
{
return new DataObject(typeof(SolutionItemNode).ToString(),
new FileOperationClipboardObject(node.FileName, performMove));
}
public static IDataObject CreateDataObject(DirectoryNode node, bool performMove)
{
return new DataObject(typeof(DirectoryNode).ToString(),
new FileOperationClipboardObject(node.Directory, performMove));
}
}
public enum SpecialFolder {
@ -213,6 +230,23 @@ namespace ICSharpCode.SharpDevelop.Project @@ -213,6 +230,23 @@ namespace ICSharpCode.SharpDevelop.Project
SetIcon();
}
void RecreateSubNodes()
{
if (autoClearNodes) {
Nodes.Clear();
} else {
List<TreeNode> removedNodes = new List<TreeNode>();
foreach (TreeNode node in Nodes) {
if (node is FileNode || node is DirectoryNode)
removedNodes.Add(node);
}
foreach (TreeNode node in removedNodes) {
Nodes.Remove(node);
}
}
Initialize();
}
protected override void Initialize()
{
if (removeMe != null) {
@ -458,31 +492,27 @@ namespace ICSharpCode.SharpDevelop.Project @@ -458,31 +492,27 @@ namespace ICSharpCode.SharpDevelop.Project
foreach (string fileName in files) {
if (System.IO.Directory.Exists(fileName)) {
if (!FileUtility.IsBaseDirectory(fileName, Directory)) {
ICSharpCode.SharpDevelop.Project.Commands.AddExistingItemsToProject.CopyDirectory(fileName, this);
CopyDirectoryHere(fileName, false);
}
} else {
ICSharpCode.SharpDevelop.Project.Commands.AddExistingItemsToProject.CopyFile(fileName, this, true);
CopyFileHere(fileName, false);
}
}
} else if (dataObject.GetDataPresent(typeof(FileNode))) {
FileOperationClipboardObject clipboardObject = (FileOperationClipboardObject)dataObject.GetData(typeof(FileNode).ToString());
if (File.Exists(clipboardObject.FileName)) {
ICSharpCode.SharpDevelop.Project.Commands.AddExistingItemsToProject.CopyFile(clipboardObject.FileName, this, true);
CopyFileHere(clipboardObject.FileName, clipboardObject.PerformMove);
if (clipboardObject.PerformMove) {
string copiedFileName = Path.Combine(Directory, Path.GetFileName(clipboardObject.FileName));
if (!FileUtility.IsEqualFileName(clipboardObject.FileName, copiedFileName)) {
FileService.RemoveFile(clipboardObject.FileName, false);
}
dataObject.SetData(null);
}
}
} else if (dataObject.GetDataPresent(typeof(DirectoryNode))) {
FileOperationClipboardObject clipboardObject = (FileOperationClipboardObject)dataObject.GetData(typeof(DirectoryNode).ToString());
if (System.IO.Directory.Exists(clipboardObject.FileName)) {
ICSharpCode.SharpDevelop.Project.Commands.AddExistingItemsToProject.CopyDirectory(clipboardObject.FileName, this);
CopyDirectoryHere(clipboardObject.FileName, clipboardObject.PerformMove);
if (clipboardObject.PerformMove) {
FileService.RemoveFile(clipboardObject.FileName, true);
dataObject.SetData(null);
}
}
@ -490,6 +520,87 @@ namespace ICSharpCode.SharpDevelop.Project @@ -490,6 +520,87 @@ namespace ICSharpCode.SharpDevelop.Project
ProjectService.SaveSolution();
}
public void CopyDirectoryHere(string fileName, bool performMove)
{
AddExistingItemsToProject.CopyDirectory(fileName, this, true);
if (performMove) {
FileService.RemoveFile(fileName, true);
}
}
public void CopyDirectoryHere(DirectoryNode node, bool performMove)
{
if (node.FileNodeStatus == FileNodeStatus.None) {
AddExistingItemsToProject.CopyDirectory(node.Directory, this, true);
if (performMove) {
FileService.RemoveFile(node.Directory, true);
}
} else {
CopyDirectoryHere(node.Directory, performMove);
}
}
public void CopyFileHere(string fileName, bool performMove)
{
string shortFileName = Path.GetFileName(fileName);
string copiedFileName = Path.Combine(Directory, shortFileName);
if (FileUtility.IsEqualFileName(fileName, copiedFileName))
return;
FileProjectItem newItem = AddExistingItemsToProject.CopyFile(fileName, this, true);
IProject sourceProject = Solution.FindProjectContainingFile(fileName);
if (sourceProject != null) {
string sourceDirectory = Path.GetDirectoryName(fileName);
bool dependendElementsCopied = false;
foreach (ProjectItem item in sourceProject.Items.ToArray()) {
FileProjectItem fileItem = item as FileProjectItem;
if (fileItem == null)
continue;
if (newItem != null && FileUtility.IsEqualFileName(fileItem.FileName, fileName)) {
fileItem.CopyExtraPropertiesTo(newItem);
}
if (!string.Equals(fileItem.DependentUpon, shortFileName, StringComparison.OrdinalIgnoreCase))
continue;
string itemPath = Path.Combine(sourceProject.Directory, fileItem.VirtualName);
if (!FileUtility.IsEqualFileName(sourceDirectory, Path.GetDirectoryName(itemPath)))
continue;
// this file is dependend on the file being copied/moved: copy it, too
CopyFileHere(itemPath, performMove);
dependendElementsCopied = true;
}
if (dependendElementsCopied)
RecreateSubNodes();
}
if (performMove) {
FileService.RemoveFile(fileName, false);
}
}
public void CopyFileHere(FileNode node, bool performMove)
{
if (node.FileNodeStatus == FileNodeStatus.None) {
AddExistingItemsToProject.CopyFile(node.FileName, this, false);
if (performMove) {
FileService.RemoveFile(node.FileName, false);
}
} else if (node.IsLink) {
string relFileName = FileUtility.GetRelativePath(Project.Directory, node.FileName);
FileNode fileNode = new FileNode(relFileName, FileNodeStatus.InProject);
FileProjectItem fileProjectItem = new FileProjectItem(Project, IncludeFileInProject.GetDefaultItemType(Project, node.FileName));
fileProjectItem.Include = relFileName;
fileProjectItem.Properties.Set("Link", Path.Combine(RelativePath, Path.GetFileName(node.FileName)));
fileNode.ProjectItem = fileProjectItem;
fileNode.AddTo(this);
ProjectService.AddProjectItem(Project, fileProjectItem);
if (performMove) {
ProjectService.RemoveProjectItem(node.Project, node.ProjectItem);
node.Remove();
}
} else {
CopyFileHere(node.FileName, performMove);
}
}
public override bool EnableCopy {
get {
return true;
@ -497,7 +608,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -497,7 +608,7 @@ namespace ICSharpCode.SharpDevelop.Project
}
public override void Copy()
{
ClipboardWrapper.SetDataObject(new DataObject(typeof(DirectoryNode).ToString(), new FileOperationClipboardObject(Directory, false)));
ClipboardWrapper.SetDataObject(FileOperationClipboardObject.CreateDataObject(this, false));
}
public override bool EnableCut {
@ -509,7 +620,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -509,7 +620,7 @@ namespace ICSharpCode.SharpDevelop.Project
public override void Cut()
{
DoPerformCut = true;
ClipboardWrapper.SetDataObject(new DataObject(typeof(DirectoryNode).ToString(), new FileOperationClipboardObject(Directory, true)));
ClipboardWrapper.SetDataObject(FileOperationClipboardObject.CreateDataObject(this, true));
}
#endregion
@ -556,29 +667,23 @@ namespace ICSharpCode.SharpDevelop.Project @@ -556,29 +667,23 @@ namespace ICSharpCode.SharpDevelop.Project
PerformInitialization();
Expand();
try {
if (dataObject.GetDataPresent(DataFormats.FileDrop)) {
if (dataObject.GetDataPresent(typeof(FileNode))) {
FileNode fileNode = (FileNode)dataObject.GetData(typeof(FileNode));
CopyFileHere(fileNode, effect == DragDropEffects.Move);
} else if (dataObject.GetDataPresent(typeof(DirectoryNode))) {
DirectoryNode directoryNode = (DirectoryNode)dataObject.GetData(typeof(DirectoryNode));
CopyDirectoryHere(directoryNode, effect == DragDropEffects.Move);
} else if (dataObject.GetDataPresent(DataFormats.FileDrop)) {
string[] files = (string[])dataObject.GetData(DataFormats.FileDrop);
foreach (string fileName in files) {
if (System.IO.Directory.Exists(fileName)) {
if (!FileUtility.IsBaseDirectory(fileName, Directory)) {
ICSharpCode.SharpDevelop.Project.Commands.AddExistingItemsToProject.CopyDirectory(fileName, this);
CopyDirectoryHere(fileName, false);
}
} else {
ICSharpCode.SharpDevelop.Project.Commands.AddExistingItemsToProject.CopyFile(fileName, this, true);
CopyFileHere(fileName, false);
}
}
} else if (dataObject.GetDataPresent(typeof(FileNode))) {
FileNode fileNode = (FileNode)dataObject.GetData(typeof(FileNode));
ICSharpCode.SharpDevelop.Project.Commands.AddExistingItemsToProject.CopyFile(fileNode.FileName, this, fileNode.FileNodeStatus != FileNodeStatus.None);
if (effect == DragDropEffects.Move) {
FileService.RemoveFile(fileNode.FileName, false);
}
} else if (dataObject.GetDataPresent(typeof(DirectoryNode))) {
DirectoryNode directoryNode = (DirectoryNode)dataObject.GetData(typeof(DirectoryNode));
ICSharpCode.SharpDevelop.Project.Commands.AddExistingItemsToProject.CopyDirectory(directoryNode.Directory, this);
if (effect == DragDropEffects.Move) {
FileService.RemoveFile(directoryNode.Directory, true);
}
}
ProjectService.SaveSolution();

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

@ -66,6 +66,11 @@ namespace ICSharpCode.SharpDevelop.Project @@ -66,6 +66,11 @@ namespace ICSharpCode.SharpDevelop.Project
}
}
}
public bool IsLink {
get {
return projectItem is FileProjectItem && (projectItem as FileProjectItem).IsLink;
}
}
void SetIcon()
{
switch (fileNodeStatus) {
@ -73,7 +78,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -73,7 +78,7 @@ namespace ICSharpCode.SharpDevelop.Project
SetIcon("ProjectBrowser.GhostFile");
break;
case FileNodeStatus.InProject:
if (projectItem is FileProjectItem && (projectItem as FileProjectItem).IsLink)
if (IsLink)
SetIcon("ProjectBrowser.CodeBehind");
else
SetIcon(IconService.GetImageForFile(FileName));
@ -198,7 +203,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -198,7 +203,7 @@ namespace ICSharpCode.SharpDevelop.Project
public override void Copy()
{
ClipboardWrapper.SetDataObject(new DataObject(typeof(FileNode).ToString(), new FileOperationClipboardObject(FileName, false)));
ClipboardWrapper.SetDataObject(FileOperationClipboardObject.CreateDataObject(this, false));
}
public override bool EnableCut {
@ -210,7 +215,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -210,7 +215,7 @@ namespace ICSharpCode.SharpDevelop.Project
public override void Cut()
{
DoPerformCut = true;
ClipboardWrapper.SetDataObject(new DataObject(typeof(FileNode).ToString(), new FileOperationClipboardObject(FileName, true)));
ClipboardWrapper.SetDataObject(FileOperationClipboardObject.CreateDataObject(this, true));
}

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

@ -101,7 +101,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -101,7 +101,7 @@ namespace ICSharpCode.SharpDevelop.Project
public override void Copy()
{
DoPerformCut = true;
ClipboardWrapper.SetDataObject(new DataObject(typeof(SolutionItemNode).ToString(), new FileOperationClipboardObject(Path.Combine(Solution.Directory, item.Name), false)));
ClipboardWrapper.SetDataObject(FileOperationClipboardObject.CreateDataObject(this, false));
}
public override bool EnableCut {
@ -113,7 +113,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -113,7 +113,7 @@ namespace ICSharpCode.SharpDevelop.Project
public override void Cut()
{
DoPerformCut = true;
ClipboardWrapper.SetDataObject(new DataObject(typeof(SolutionItemNode).ToString(), new FileOperationClipboardObject(Path.Combine(Solution.Directory, item.Name), true)));
ClipboardWrapper.SetDataObject(FileOperationClipboardObject.CreateDataObject(this, true));
}
#endregion

9
src/Main/Base/Project/Src/Project/Items/ProjectItem.cs

@ -75,6 +75,13 @@ namespace ICSharpCode.SharpDevelop.Project @@ -75,6 +75,13 @@ namespace ICSharpCode.SharpDevelop.Project
}
}
public virtual void CopyExtraPropertiesTo(ProjectItem item)
{
string newInclude = item.Include;
item.Properties.Merge(this.Properties);
item.Include = newInclude;
}
[Browsable(false)]
public PropertyGroup Properties {
get {
@ -148,7 +155,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -148,7 +155,7 @@ namespace ICSharpCode.SharpDevelop.Project
}
while (reader.Read()) {
switch (reader.NodeType) {
case XmlNodeType.EndElement:
case XmlNodeType.EndElement:
if (reader.LocalName == "ItemGroup") {
return;
}

73
src/Main/Base/Project/Src/Project/Solution/Solution.cs

@ -28,17 +28,27 @@ namespace ICSharpCode.SharpDevelop.Project @@ -28,17 +28,27 @@ namespace ICSharpCode.SharpDevelop.Project
string fileName = String.Empty;
public class ProjectEnumerator {
Solution solution;
public ProjectEnumerator(Solution solution)
{
this.solution = solution;
public IProject FindProjectContainingFile(string fileName)
{
IProject currentProject = ProjectService.CurrentProject;
if (currentProject != null && currentProject.IsFileInProject(fileName))
return currentProject;
// Try all project's in the solution.
foreach (IProject project in Projects) {
if (project.IsFileInProject(fileName)) {
return project;
}
}
public IEnumerator<IProject> GetEnumerator()
{
return null;
}
[Browsable(false)]
public IEnumerable<IProject> Projects {
get {
Stack<ISolutionFolder> stack = new Stack<ISolutionFolder>();
foreach (ISolutionFolder solutionFolder in solution.Folders) {
foreach (ISolutionFolder solutionFolder in Folders) {
stack.Push(solutionFolder);
}
@ -58,26 +68,13 @@ namespace ICSharpCode.SharpDevelop.Project @@ -58,26 +68,13 @@ namespace ICSharpCode.SharpDevelop.Project
}
}
}
ProjectEnumerator projectEnumerator;
[Browsable(false)]
public ProjectEnumerator Projects {
public IEnumerable<ISolutionFolderContainer> SolutionFolderContainers {
get {
return projectEnumerator;
}
}
public class SolutionFolderContainerEnumerator {
Solution solution;
public SolutionFolderContainerEnumerator(Solution solution)
{
this.solution = solution;
}
public IEnumerator<ISolutionFolderContainer> GetEnumerator()
{
Stack<ISolutionFolder> stack = new Stack<ISolutionFolder>();
foreach (ISolutionFolder solutionFolder in solution.Folders) {
foreach (ISolutionFolder solutionFolder in Folders) {
stack.Push(solutionFolder);
}
@ -94,25 +91,13 @@ namespace ICSharpCode.SharpDevelop.Project @@ -94,25 +91,13 @@ namespace ICSharpCode.SharpDevelop.Project
}
}
}
SolutionFolderContainerEnumerator solutionFolderContainerEnumerator;
[Browsable(false)]
public SolutionFolderContainerEnumerator SolutionFolderContainers {
public IEnumerable<ISolutionFolder> SolutionFolders {
get {
return solutionFolderContainerEnumerator;
}
}
public class SolutionFolderEnumerator {
Solution solution;
public SolutionFolderEnumerator(Solution solution)
{
this.solution = solution;
}
public IEnumerator<ISolutionFolder> GetEnumerator()
{
Stack<ISolutionFolder> stack = new Stack<ISolutionFolder>();
foreach (ISolutionFolder solutionFolder in solution.Folders) {
foreach (ISolutionFolder solutionFolder in Folders) {
stack.Push(solutionFolder);
}
@ -130,13 +115,6 @@ namespace ICSharpCode.SharpDevelop.Project @@ -130,13 +115,6 @@ namespace ICSharpCode.SharpDevelop.Project
}
}
}
SolutionFolderEnumerator solutionFolderEnumerator;
[Browsable(false)]
public SolutionFolderEnumerator SolutionFolders {
get {
return solutionFolderEnumerator;
}
}
[Browsable(false)]
public IProject StartupProject {
@ -220,9 +198,6 @@ namespace ICSharpCode.SharpDevelop.Project @@ -220,9 +198,6 @@ namespace ICSharpCode.SharpDevelop.Project
public Solution()
{
preferences = new SolutionPreferences(this);
solutionFolderEnumerator = new SolutionFolderEnumerator(this);
solutionFolderContainerEnumerator = new SolutionFolderContainerEnumerator(this);
projectEnumerator = new ProjectEnumerator(this);
}
public ISolutionFolder GetSolutionFolder(string guid)

17
src/Main/Base/Project/Src/Services/ParserService/ParserService.cs

@ -391,10 +391,10 @@ namespace ICSharpCode.Core @@ -391,10 +391,10 @@ namespace ICSharpCode.Core
string file = WorkbenchSingleton.Workbench.ActiveWorkbenchWindow.ViewContent.FileName
?? WorkbenchSingleton.Workbench.ActiveWorkbenchWindow.ViewContent.UntitledName;
if (file != null) {
LanguageProperties language = GetParser(file).Language;
if (language != null) {
defaultProjectContent.Language = language;
defaultProjectContent.DefaultImports = language.CreateDefaultImports(defaultProjectContent);
IParser parser = GetParser(file);
if (parser != null && parser.Language != null) {
defaultProjectContent.Language = parser.Language;
defaultProjectContent.DefaultImports = parser.Language.CreateDefaultImports(defaultProjectContent);
}
}
}
@ -417,12 +417,9 @@ namespace ICSharpCode.Core @@ -417,12 +417,9 @@ namespace ICSharpCode.Core
if (fileContent == null) {
if (ProjectService.OpenSolution != null) {
foreach (IProject project in ProjectService.OpenSolution.Projects) {
if (project.IsFileInProject(fileName)) {
fileContent = project.GetParseableFileContent(fileName);
break;
}
}
IProject project = ProjectService.OpenSolution.FindProjectContainingFile(fileName);
if (project != null)
fileContent = project.GetParseableFileContent(fileName);
}
}
try {

18
src/Main/Base/Project/Src/Services/ProjectService/ProjectService.cs

@ -39,13 +39,10 @@ namespace ICSharpCode.SharpDevelop.Project @@ -39,13 +39,10 @@ namespace ICSharpCode.SharpDevelop.Project
public static IProject GetProject(string filename)
{
filename = Path.GetFullPath(filename).ToLower();
foreach (IProject project in OpenSolution.Projects) {
if (FileUtility.IsEqualFileName(project.FileName, filename)) {
return project;
}
}
return null;
if (openSolution == null)
return null;
else
return openSolution.FindProjectContainingFile(filename);
}
static bool initialized;
@ -168,12 +165,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -168,12 +165,7 @@ namespace ICSharpCode.SharpDevelop.Project
if (fileName == null) {
return;
}
foreach (IProject project in OpenSolution.Projects) {
if (project.IsFileInProject(fileName)) {
CurrentProject = project;
break;
}
}
CurrentProject = GetProject(fileName) ?? CurrentProject;
}
/// <summary>

Loading…
Cancel
Save