Browse Source

Implement EnvDTE.ProjectItem.Document

The T4MVC template checks the ProjectItem.Document property to see if it has been opened.
pull/28/head
Matt Ward 14 years ago
parent
commit
d67c82e1f1
  1. 5
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Document.cs
  2. 5
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Project.cs
  3. 16
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItem.cs
  4. 1
      src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementFileService.cs
  5. 9
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementFileService.cs
  6. 36
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectItemTests.cs
  7. 14
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeFileService.cs

5
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Document.cs

@ -7,13 +7,16 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -7,13 +7,16 @@ namespace ICSharpCode.PackageManagement.EnvDTE
{
public class Document
{
public Document()
public Document(string fileName)
{
this.FullName = fileName;
}
public virtual bool Saved {
get { throw new NotImplementedException(); }
set { throw new NotImplementedException(); }
}
public string FullName { get; private set; }
}
}

5
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Project.cs

@ -289,5 +289,10 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -289,5 +289,10 @@ namespace ICSharpCode.PackageManagement.EnvDTE
}
return null;
}
internal bool IsFileOpen(string fileName)
{
return fileService.IsOpen(fileName);
}
}
}

16
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItem.cs

@ -167,11 +167,23 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -167,11 +167,23 @@ namespace ICSharpCode.PackageManagement.EnvDTE
public virtual string FileNames(short index)
{
return projectItem.FileName;
return FileName;
}
string FileName {
get { return projectItem.FileName; }
}
public Document Document {
get { throw new NotImplementedException(); }
get { return GetOpenDocument(); }
}
Document GetOpenDocument()
{
if (ContainingProject.IsFileOpen(FileName)) {
return new Document(FileName);
}
return null;
}
public Window Open(string viewKind)

1
src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementFileService.cs

@ -10,6 +10,7 @@ namespace ICSharpCode.PackageManagement @@ -10,6 +10,7 @@ namespace ICSharpCode.PackageManagement
{
void RemoveFile(string path);
void RemoveDirectory(string path);
bool IsOpen(string fileName);
void OpenFile(string fileName);
void CopyFile(string oldFileName, string newFileName);
bool FileExists(string fileName);

9
src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementFileService.cs

@ -41,6 +41,15 @@ namespace ICSharpCode.PackageManagement @@ -41,6 +41,15 @@ namespace ICSharpCode.PackageManagement
}
}
public bool IsOpen(string fileName)
{
if (WorkbenchSingleton.InvokeRequired) {
return WorkbenchSingleton.SafeThreadFunction(() => IsOpen(fileName));
} else {
return FileService.IsOpen(fileName);
}
}
public void CopyFile(string oldFileName, string newFileName)
{
if (WorkbenchSingleton.InvokeRequired) {

36
src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectItemTests.cs

@ -5,7 +5,9 @@ using System; @@ -5,7 +5,9 @@ using System;
using System.Collections;
using System.Collections.Generic;
using ICSharpCode.PackageManagement.EnvDTE;
using ICSharpCode.SharpDevelop.Gui;
using DTE = ICSharpCode.PackageManagement.EnvDTE;
using Rhino.Mocks;
using NUnit.Framework;
using PackageManagement.Tests.Helpers;
@ -27,6 +29,12 @@ namespace PackageManagement.Tests.EnvDTE @@ -27,6 +29,12 @@ namespace PackageManagement.Tests.EnvDTE
fakeFileService = project.FakeFileService;
}
void OpenFileInSharpDevelop(string fileName)
{
IViewContent view = MockRepository.GenerateStub<IViewContent>();
fakeFileService.AddOpenView(view, fileName);
}
[Test]
public void ProjectItems_ProjectHasOneFileInsideSrcDirectory_ReturnsOneFileForSrcDirectory()
{
@ -230,5 +238,33 @@ namespace PackageManagement.Tests.EnvDTE @@ -230,5 +238,33 @@ namespace PackageManagement.Tests.EnvDTE
Assert.AreEqual(@"d:\projects\MyProject\src", fileName);
}
[Test]
public void Document_ProjectItemNotOpenInSharpDevelop_ReturnsNull()
{
CreateProjectItems();
msbuildProject.FileName = @"d:\projects\MyProject\MyProject.csproj";
msbuildProject.AddFile(@"program.cs");
ProjectItem item = projectItems.Item("program.cs");
Document document = item.Document;
Assert.IsNull(document);
}
[Test]
public void Document_ProjectItemOpenInSharpDevelop_ReturnsOpenDocumentForFile()
{
CreateProjectItems();
msbuildProject.FileName = @"d:\projects\MyProject\MyProject.csproj";
msbuildProject.AddFile(@"program.cs");
ProjectItem item = projectItems.Item("program.cs");
string projectItemFileName = @"d:\projects\MyProject\program.cs";
OpenFileInSharpDevelop(projectItemFileName);
Document document = item.Document;
Assert.AreEqual(projectItemFileName, document.FullName);
}
}
}

14
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeFileService.cs

@ -5,8 +5,10 @@ using System; @@ -5,8 +5,10 @@ using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using ICSharpCode.PackageManagement;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Project;
namespace PackageManagement.Tests.Helpers
@ -123,5 +125,17 @@ namespace PackageManagement.Tests.Helpers @@ -123,5 +125,17 @@ namespace PackageManagement.Tests.Helpers
FileNamePassedToGetCompilationUnit = fileName;
return CompilationUnitToReturnFromGetCompilationUnit;
}
public bool IsOpen(string fileName)
{
return openViews.ContainsKey(fileName);
}
Dictionary<string, IViewContent> openViews = new Dictionary<string, IViewContent>();
public void AddOpenView(IViewContent view, string fileName)
{
openViews.Add(fileName, view);
}
}
}

Loading…
Cancel
Save