diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/AspNet.Mvc.csproj b/src/AddIns/BackendBindings/AspNet.Mvc/Project/AspNet.Mvc.csproj
index 3c1b0ab02b..ee00ee3a48 100644
--- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/AspNet.Mvc.csproj
+++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/AspNet.Mvc.csproj
@@ -56,12 +56,14 @@
+
+
diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/AddMvcViewToProjectCommand.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/AddMvcViewToProjectCommand.cs
index 2542f6d29a..c628b42dec 100644
--- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/AddMvcViewToProjectCommand.cs
+++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/AddMvcViewToProjectCommand.cs
@@ -27,8 +27,7 @@ namespace ICSharpCode.AspNet.Mvc
protected virtual object CreateDataContext()
{
SelectedMvcViewFolder selectedFolder = GetSelectedFolder();
- var generator = new MvcViewFileGenerator();
- return new AddMvcViewToProjectViewModel(selectedFolder, generator);
+ return new AddMvcViewToProjectViewModel(selectedFolder);
}
SelectedMvcViewFolder GetSelectedFolder()
diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/AddMvcViewToProjectViewModel.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/AddMvcViewToProjectViewModel.cs
index 850e00740d..dfe3390f38 100644
--- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/AddMvcViewToProjectViewModel.cs
+++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/AddMvcViewToProjectViewModel.cs
@@ -11,15 +11,26 @@ namespace ICSharpCode.AspNet.Mvc
{
IMvcViewFileGenerator viewGenerator;
ISelectedMvcViewFolder selectedViewFolder;
+ IMvcFileService fileService;
MvcViewFileName viewFileName = new MvcViewFileName();
bool closed;
+ public AddMvcViewToProjectViewModel(ISelectedMvcViewFolder selectedViewFolder)
+ : this(
+ selectedViewFolder,
+ new MvcViewFileGenerator(),
+ new MvcFileService())
+ {
+ }
+
public AddMvcViewToProjectViewModel(
ISelectedMvcViewFolder selectedViewFolder,
- IMvcViewFileGenerator viewGenerator)
+ IMvcViewFileGenerator viewGenerator,
+ IMvcFileService fileService)
{
this.selectedViewFolder = selectedViewFolder;
this.viewGenerator = viewGenerator;
+ this.fileService = fileService;
this.viewFileName.ViewFolder = selectedViewFolder.Path;
CreateCommands();
@@ -49,6 +60,7 @@ namespace ICSharpCode.AspNet.Mvc
{
GenerateMvcViewFile();
AddMvcViewFileToProject();
+ OpenMvcViewFileCreated();
IsClosed = true;
}
@@ -75,6 +87,12 @@ namespace ICSharpCode.AspNet.Mvc
string fileName = viewFileName.GetFileName();
selectedViewFolder.AddFileToProject(fileName);
}
+
+ void OpenMvcViewFileCreated()
+ {
+ string path = viewFileName.GetPath();
+ fileService.OpenFile(path);
+ }
}
}
diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/IMvcFileService.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/IMvcFileService.cs
new file mode 100644
index 0000000000..30f1ae8b5c
--- /dev/null
+++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/IMvcFileService.cs
@@ -0,0 +1,12 @@
+// 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.AspNet.Mvc
+{
+ public interface IMvcFileService
+ {
+ void OpenFile(string fileName);
+ }
+}
diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcFileService.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcFileService.cs
new file mode 100644
index 0000000000..75e8030173
--- /dev/null
+++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcFileService.cs
@@ -0,0 +1,16 @@
+// 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;
+using ICSharpCode.SharpDevelop;
+
+namespace ICSharpCode.AspNet.Mvc
+{
+ public class MvcFileService : IMvcFileService
+ {
+ public void OpenFile(string fileName)
+ {
+ FileService.OpenFile(fileName);
+ }
+ }
+}
diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Test/AspNet.Mvc.Tests.csproj b/src/AddIns/BackendBindings/AspNet.Mvc/Test/AspNet.Mvc.Tests.csproj
index 1fabade83b..7b3c2b195d 100644
--- a/src/AddIns/BackendBindings/AspNet.Mvc/Test/AspNet.Mvc.Tests.csproj
+++ b/src/AddIns/BackendBindings/AspNet.Mvc/Test/AspNet.Mvc.Tests.csproj
@@ -44,6 +44,7 @@
Configuration\GlobalAssemblyInfo.cs
+
diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/FakeMvcFileService.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/FakeMvcFileService.cs
new file mode 100644
index 0000000000..845c156322
--- /dev/null
+++ b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/FakeMvcFileService.cs
@@ -0,0 +1,18 @@
+// 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;
+using ICSharpCode.AspNet.Mvc;
+
+namespace AspNet.Mvc.Tests.Helpers
+{
+ public class FakeMvcFileService : IMvcFileService
+ {
+ public string FileNamePassedToOpenFile;
+
+ public void OpenFile(string fileName)
+ {
+ FileNamePassedToOpenFile = fileName;
+ }
+ }
+}
diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/AddMvcViewToProjectViewModelTests.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/AddMvcViewToProjectViewModelTests.cs
index e7ce7cf98b..f1becb4aab 100644
--- a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/AddMvcViewToProjectViewModelTests.cs
+++ b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/AddMvcViewToProjectViewModelTests.cs
@@ -17,6 +17,7 @@ namespace AspNet.Mvc.Tests
FakeMvcViewFileGenerator fakeViewGenerator;
FakeSelectedMvcViewFolder fakeSelectedMvcViewFolder;
List propertyChangedEvents;
+ FakeMvcFileService fakeFileService;
void CreateViewModel()
{
@@ -29,9 +30,11 @@ namespace AspNet.Mvc.Tests
fakeSelectedMvcViewFolder = new FakeSelectedMvcViewFolder();
fakeSelectedMvcViewFolder.Path = path;
fakeViewGenerator = new FakeMvcViewFileGenerator();
+ fakeFileService = new FakeMvcFileService();
viewModel = new AddMvcViewToProjectViewModel(
fakeSelectedMvcViewFolder,
- fakeViewGenerator);
+ fakeViewGenerator,
+ fakeFileService);
}
void MonitorPropertyChangedEvents()
@@ -149,5 +152,20 @@ namespace AspNet.Mvc.Tests
Assert.IsTrue(fired);
}
+
+ [Test]
+ public void AddMvcView_FileIsGenerated_FileIsOpened()
+ {
+ CreateViewModel();
+ viewModel.ViewName = "Index";
+ fakeSelectedMvcViewFolder.ProjectLanguage = "C#";
+ fakeSelectedMvcViewFolder.Path = @"d:\projects\MyAspMvcProject\Views\Home";
+ viewModel.AddMvcView();
+
+ string fileNameOpened = fakeFileService.FileNamePassedToOpenFile;
+ string expectedFileNameOpened = @"d:\projects\MyAspMvcProject\Views\Home\Index.aspx";
+
+ Assert.AreEqual(expectedFileNameOpened, fileNameOpened);
+ }
}
}