Browse Source

Support opening files from PowerShell scripts that use DTE.ItemOperations.OpenFile.

pull/15/head
Matt Ward 14 years ago
parent
commit
8fae88d020
  1. 1
      src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
  2. 12
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/DTE.cs
  3. 22
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ItemOperations.cs
  4. 1
      src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementFileService.cs
  5. 10
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementFileService.cs
  6. 19
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/DTETests.cs
  7. 7
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeFileService.cs

1
src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj

@ -71,6 +71,7 @@ @@ -71,6 +71,7 @@
<Compile Include="Src\AggregateExceptionErrorMessage.cs" />
<Compile Include="Src\Design\FakePackageManagementProject.cs" />
<Compile Include="Src\EnvDTE\DTE.cs" />
<Compile Include="Src\EnvDTE\ItemOperations.cs" />
<Compile Include="Src\EnvDTE\ProjectObject.cs" />
<Compile Include="Src\EnvDTE\Properties.cs" />
<Compile Include="Src\EnvDTE\Property.cs" />

12
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/DTE.cs

@ -8,15 +8,21 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -8,15 +8,21 @@ namespace ICSharpCode.PackageManagement.EnvDTE
public class DTE
{
IPackageManagementProjectService projectService;
IPackageManagementFileService fileService;
public DTE()
: this(new PackageManagementProjectService())
: this(new PackageManagementProjectService(), new PackageManagementFileService())
{
}
public DTE(IPackageManagementProjectService projectService)
public DTE(
IPackageManagementProjectService projectService,
IPackageManagementFileService fileService)
{
this.projectService = projectService;
this.fileService = fileService;
ItemOperations = new ItemOperations(fileService);
}
public Solution Solution {
@ -27,5 +33,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -27,5 +33,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE
return null;
}
}
public ItemOperations ItemOperations { get; private set; }
}
}

22
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ItemOperations.cs

@ -0,0 +1,22 @@ @@ -0,0 +1,22 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
namespace ICSharpCode.PackageManagement.EnvDTE
{
public class ItemOperations
{
IPackageManagementFileService fileService;
public ItemOperations(IPackageManagementFileService fileService)
{
this.fileService = fileService;
}
public void OpenFile(string fileName)
{
fileService.OpenFile(fileName);
}
}
}

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

@ -9,5 +9,6 @@ namespace ICSharpCode.PackageManagement @@ -9,5 +9,6 @@ namespace ICSharpCode.PackageManagement
{
void RemoveFile(string path);
void RemoveDirectory(string path);
void OpenFile(string fileName);
}
}

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

@ -28,5 +28,15 @@ namespace ICSharpCode.PackageManagement @@ -28,5 +28,15 @@ namespace ICSharpCode.PackageManagement
FileService.RemoveFile(path, true);
}
}
public void OpenFile(string fileName)
{
if (WorkbenchSingleton.InvokeRequired) {
Action<string> action = OpenFile;
WorkbenchSingleton.SafeThreadAsyncCall<string>(action, fileName);
} else {
FileService.OpenFile(fileName);
}
}
}
}

19
src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/DTETests.cs

@ -4,8 +4,9 @@ @@ -4,8 +4,9 @@
using System;
using ICSharpCode.PackageManagement.Design;
using ICSharpCode.PackageManagement.EnvDTE;
using SD = ICSharpCode.SharpDevelop.Project;
using NUnit.Framework;
using PackageManagement.Tests.Helpers;
using SD = ICSharpCode.SharpDevelop.Project;
namespace PackageManagement.Tests.EnvDTE
{
@ -14,12 +15,14 @@ namespace PackageManagement.Tests.EnvDTE @@ -14,12 +15,14 @@ namespace PackageManagement.Tests.EnvDTE
{
DTE dte;
FakePackageManagementProjectService fakeProjectService;
FakeFileService fakeFileService;
void CreateDTE()
{
fakeProjectService = new FakePackageManagementProjectService();
fakeProjectService.OpenSolution = new SD.Solution();
dte = new DTE(fakeProjectService);
fakeFileService = new FakeFileService(null);
dte = new DTE(fakeProjectService, fakeFileService);
}
[Test]
@ -44,5 +47,17 @@ namespace PackageManagement.Tests.EnvDTE @@ -44,5 +47,17 @@ namespace PackageManagement.Tests.EnvDTE
Assert.IsNull(solution);
}
[Test]
public void ItemOperationsOpenFile_FileNamePassed_OpensFileInSharpDevelop()
{
CreateDTE();
string expectedFileName = @"d:\temp\readme.txt";
dte.ItemOperations.OpenFile(expectedFileName);
string actualFileName = fakeFileService.FileNamePassedToOpenFile;
Assert.AreEqual(expectedFileName, actualFileName);
}
}
}

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

@ -38,5 +38,12 @@ namespace PackageManagement.Tests.Helpers @@ -38,5 +38,12 @@ namespace PackageManagement.Tests.Helpers
ProjectItem item = project.Items[0];
ProjectService.RemoveProjectItem(project, item);
}
public string FileNamePassedToOpenFile;
public void OpenFile(string fileName)
{
FileNamePassedToOpenFile = fileName;
}
}
}

Loading…
Cancel
Save