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); + } } }