Index: Core/Common/src/Core.Common.Gui/Core.Common.Gui.csproj =================================================================== diff -u -rd9deb9cd1a014270bb216a10c36b09d594f740d1 -r50437248686b1183bb0f23de244f7a36beef36a6 --- Core/Common/src/Core.Common.Gui/Core.Common.Gui.csproj (.../Core.Common.Gui.csproj) (revision d9deb9cd1a014270bb216a10c36b09d594f740d1) +++ Core/Common/src/Core.Common.Gui/Core.Common.Gui.csproj (.../Core.Common.Gui.csproj) (revision 50437248686b1183bb0f23de244f7a36beef36a6) @@ -123,6 +123,9 @@ True Resources.resx + + UserControl + Index: Core/Common/src/Core.Common.Gui/Forms/ProjectExplorer/ProjectExplorer.Designer.cs =================================================================== diff -u --- Core/Common/src/Core.Common.Gui/Forms/ProjectExplorer/ProjectExplorer.Designer.cs (revision 0) +++ Core/Common/src/Core.Common.Gui/Forms/ProjectExplorer/ProjectExplorer.Designer.cs (revision 50437248686b1183bb0f23de244f7a36beef36a6) @@ -0,0 +1,87 @@ +// Copyright (C) Stichting Deltares 2021. All rights reserved. +// +// This file is part of Riskeer. +// +// Riskeer is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with this program. If not, see . +// +// All names, logos, and references to "Deltares" are registered trademarks of +// Stichting Deltares and remain full property of Stichting Deltares at all times. +// All rights reserved. + +namespace Core.Common.Gui.Forms.ProjectExplorer +{ + partial class ProjectExplorer + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + + base.Dispose(disposing); + } + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ProjectExplorer)); + this.treeViewPanel = new System.Windows.Forms.Panel(); + this.treeViewControl = new Core.Common.Controls.TreeView.TreeViewControl(); + this.treeViewPanel.SuspendLayout(); + this.SuspendLayout(); + // + // treeViewPanel + // + this.treeViewPanel.Controls.Add(this.treeViewControl); + resources.ApplyResources(this.treeViewPanel, "treeViewPanel"); + this.treeViewPanel.Name = "treeViewPanel"; + // + // treeViewControl + // + resources.ApplyResources(this.treeViewControl, "treeViewControl"); + this.treeViewControl.Name = "treeViewControl"; + // + // ProjectExplorer + // + resources.ApplyResources(this, "$this"); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.treeViewPanel); + this.Name = "ProjectExplorer"; + this.treeViewPanel.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Panel treeViewPanel; + private Common.Controls.TreeView.TreeViewControl treeViewControl; + } +} Index: Core/Common/src/Core.Common.Gui/Forms/ProjectExplorer/ProjectExplorer.cs =================================================================== diff -u --- Core/Common/src/Core.Common.Gui/Forms/ProjectExplorer/ProjectExplorer.cs (revision 0) +++ Core/Common/src/Core.Common.Gui/Forms/ProjectExplorer/ProjectExplorer.cs (revision 50437248686b1183bb0f23de244f7a36beef36a6) @@ -0,0 +1,129 @@ +// Copyright (C) Stichting Deltares 2021. All rights reserved. +// +// This file is part of Riskeer. +// +// Riskeer is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with this program. If not, see . +// +// All names, logos, and references to "Deltares" are registered trademarks of +// Stichting Deltares and remain full property of Stichting Deltares at all times. +// All rights reserved. + +using System; +using System.Collections.Generic; +using System.Windows.Forms; +using Core.Common.Controls.TreeView; +using Core.Common.Gui.Commands; +using Core.Common.Gui.Properties; +using Core.Common.Util.Events; + +namespace Core.Common.Gui.Forms.ProjectExplorer +{ + /// + /// This class describes a Project Explorer, which can be used to navigate and open views for elements + /// in the project. + /// + public sealed partial class ProjectExplorer : UserControl, IProjectExplorer + { + private readonly IViewCommands viewCommands; + + public event EventHandler SelectionChanged; + + /// + /// Creates a new instance of . + /// + /// The provider of view related commands. + /// The of which + /// are used to draw nodes. + /// Thrown when either: + /// + /// is null, + /// is null + /// + /// + public ProjectExplorer(IViewCommands viewCommands, IEnumerable treeNodeInfos) + { + if (viewCommands == null) + { + throw new ArgumentNullException(nameof(viewCommands)); + } + + if (treeNodeInfos == null) + { + throw new ArgumentNullException(nameof(treeNodeInfos)); + } + + InitializeComponent(); + + Text = Resources.ProjectExplorer_DisplayName; + + this.viewCommands = viewCommands; + + RegisterTreeNodeInfos(treeNodeInfos); + BindTreeInteractionEvents(); + } + + public object Data + { + get + { + return treeViewControl.Data; + } + set + { + if (!IsDisposed) + { + treeViewControl.Data = value; + } + } + } + + public object Selection + { + get + { + return treeViewControl.SelectedData; + } + } + + private void BindTreeInteractionEvents() + { + treeViewControl.DataDoubleClick += TreeViewControlDataDoubleClick; + treeViewControl.DataDeleted += TreeViewControlDataDeleted; + treeViewControl.SelectedDataChanged += TreeViewControlSelectedDataChanged; + } + + private void RegisterTreeNodeInfos(IEnumerable treeNodeInfos) + { + foreach (TreeNodeInfo info in treeNodeInfos) + { + treeViewControl.RegisterTreeNodeInfo(info); + } + } + + private void TreeViewControlSelectedDataChanged(object sender, EventArgs e) + { + SelectionChanged?.Invoke(this, new EventArgs()); + } + + private void TreeViewControlDataDoubleClick(object sender, EventArgs e) + { + viewCommands.OpenViewForSelection(); + } + + private void TreeViewControlDataDeleted(object sender, EventArgs e) + { + viewCommands.RemoveAllViewsForItem(e.Value); + } + } +} \ No newline at end of file Index: Core/Common/src/Core.Common.Gui/Forms/ProjectExplorer/ProjectExplorer.resx =================================================================== diff -u --- Core/Common/src/Core.Common.Gui/Forms/ProjectExplorer/ProjectExplorer.resx (revision 0) +++ Core/Common/src/Core.Common.Gui/Forms/ProjectExplorer/ProjectExplorer.resx (revision 50437248686b1183bb0f23de244f7a36beef36a6) @@ -0,0 +1,192 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + Fill + + + + 0 + + + + 0, 0 + + + 0 + + + 375, 352 + + + 0 + + + treeViewControl + + + Core.Common.Controls.TreeView.TreeView, Core.Common.Controls.TreeView, Culture=neutral, PublicKeyToken=null + + + treeViewPanel + + + 0 + + + Fill + + + 0, 0 + + + 375, 352 + + + 5 + + + treeViewPanel + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 0 + + + True + + + 6, 13 + + + 375, 352 + + + ProjectExplorer + + + System.Windows.Forms.UserControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file Index: Core/Common/src/Core.Common.Gui/Properties/Resources.Designer.cs =================================================================== diff -u -re63a6c37c6df68f5af5f7bb02b2affc6876e4bee -r50437248686b1183bb0f23de244f7a36beef36a6 --- Core/Common/src/Core.Common.Gui/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision e63a6c37c6df68f5af5f7bb02b2affc6876e4bee) +++ Core/Common/src/Core.Common.Gui/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 50437248686b1183bb0f23de244f7a36beef36a6) @@ -1137,6 +1137,15 @@ } /// + /// Looks up a localized string similar to Projectverkenner. + /// + public static string ProjectExplorer_DisplayName { + get { + return ResourceManager.GetString("ProjectExplorer_DisplayName", resourceCulture); + } + } + + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// public static System.Drawing.Bitmap ProjectIcon { Index: Core/Common/src/Core.Common.Gui/Properties/Resources.resx =================================================================== diff -u -re63a6c37c6df68f5af5f7bb02b2affc6876e4bee -r50437248686b1183bb0f23de244f7a36beef36a6 --- Core/Common/src/Core.Common.Gui/Properties/Resources.resx (.../Resources.resx) (revision e63a6c37c6df68f5af5f7bb02b2affc6876e4bee) +++ Core/Common/src/Core.Common.Gui/Properties/Resources.resx (.../Resources.resx) (revision 50437248686b1183bb0f23de244f7a36beef36a6) @@ -595,4 +595,7 @@ Grafiek + + Projectverkenner + \ No newline at end of file Index: Core/Common/test/Core.Common.Gui.Test/Forms/ProjectExplorer/ProjectExplorerTest.cs =================================================================== diff -u --- Core/Common/test/Core.Common.Gui.Test/Forms/ProjectExplorer/ProjectExplorerTest.cs (revision 0) +++ Core/Common/test/Core.Common.Gui.Test/Forms/ProjectExplorer/ProjectExplorerTest.cs (revision 50437248686b1183bb0f23de244f7a36beef36a6) @@ -0,0 +1,318 @@ +// Copyright (C) Stichting Deltares 2021. All rights reserved. +// +// This file is part of Riskeer. +// +// Riskeer is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with this program. If not, see . +// +// All names, logos, and references to "Deltares" are registered trademarks of +// Stichting Deltares and remain full property of Stichting Deltares at all times. +// All rights reserved. + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Windows.Forms; +using Core.Common.Base.Data; +using Core.Common.Controls.TreeView; +using Core.Common.Gui.Commands; +using Core.Common.Gui.Forms.ProjectExplorer; +using Core.Common.TestUtil; +using Core.Common.Util.Reflection; +using NUnit.Extensions.Forms; +using NUnit.Framework; +using Rhino.Mocks; + +namespace Core.Common.Gui.Test.Forms.ProjectExplorer +{ + [TestFixture] + public class ProjectExplorerTest : NUnitFormTest + { + [Test] + [TestCase(0)] + [TestCase(1)] + public void Constructor_ArgumentsNull_ThrowsArgumentNullException(int paramNullIndex) + { + // Setup + var mocks = new MockRepository(); + IViewCommands viewCommands = paramNullIndex == 0 ? null : mocks.StrictMock(); + IEnumerable treeNodeInfos = paramNullIndex == 1 ? null : Enumerable.Empty(); + + mocks.ReplayAll(); + + // Call + TestDelegate test = () => new Common.Gui.Forms.ProjectExplorer.ProjectExplorer(viewCommands, treeNodeInfos); + + // Assert + Assert.Throws(test); + mocks.VerifyAll(); + } + + [Test] + public void Constructor_NoNullArguments_CreatesNewInstance() + { + // Setup + var mocks = new MockRepository(); + var viewCommands = mocks.StrictMock(); + IEnumerable treeNodeInfos = Enumerable.Empty(); + + mocks.ReplayAll(); + + // Call + using (var explorer = new Common.Gui.Forms.ProjectExplorer.ProjectExplorer(viewCommands, treeNodeInfos)) + { + // Assert + Assert.IsInstanceOf(explorer); + Assert.IsInstanceOf(explorer); + Assert.IsNull(explorer.Data); + } + + mocks.VerifyAll(); + } + + [Test] + public void Data_Always_SetTreeViewControlData() + { + // Setup + var mocks = new MockRepository(); + var viewCommands = mocks.StrictMock(); + var project = mocks.Stub(); + + mocks.ReplayAll(); + + IEnumerable treeNodeInfos = new[] + { + new TreeNodeInfo + { + TagType = typeof(IProject) + } + }; + + using (var explorer = new Common.Gui.Forms.ProjectExplorer.ProjectExplorer(viewCommands, treeNodeInfos)) + { + var treeViewControl = TypeUtils.GetField(explorer, "treeViewControl"); + + // Call + explorer.Data = project; + + // Assert + Assert.AreSame(project, treeViewControl.Data); + } + + mocks.VerifyAll(); + } + + [Test] + public void ProjectDataDeleted_Always_CallsRemoveAllViewsForItemWithTag() + { + // Setup + var mocks = new MockRepository(); + var viewCommands = mocks.StrictMock(); + var project = mocks.Stub(); + + viewCommands.Expect(vc => vc.RemoveAllViewsForItem(project)); + + mocks.ReplayAll(); + + IEnumerable treeNodeInfos = new[] + { + new TreeNodeInfo + { + TagType = typeof(IProject), + CanRemove = (item, parent) => true + } + }; + + DialogBoxHandler = (name, wnd) => + { + var messageBox = new MessageBoxTester(wnd); + messageBox.ClickOk(); + }; + + using (var explorer = new Common.Gui.Forms.ProjectExplorer.ProjectExplorer(viewCommands, treeNodeInfos) + { + Data = project + }) + { + var treeViewControl = TypeUtils.GetField(explorer, "treeViewControl"); + + // Call + treeViewControl.TryRemoveNodeForData(project); + } + + // Assert + mocks.VerifyAll(); + } + + [Test] + [Apartment(ApartmentState.STA)] + public void TreeViewSelectedNodeChanged_Always_SelectionChangedFired() + { + // Setup + var mocks = new MockRepository(); + var viewCommands = mocks.StrictMock(); + + var project = mocks.Stub(); + const string stringA = "testA"; + + mocks.ReplayAll(); + + const string stringB = "testB"; + + IEnumerable treeNodeInfos = new[] + { + new TreeNodeInfo + { + TagType = typeof(IProject), + ChildNodeObjects = o => new object[] + { + stringA, + stringB + } + }, + new TreeNodeInfo + { + TagType = typeof(string) + } + }; + + using (var explorer = new Common.Gui.Forms.ProjectExplorer.ProjectExplorer(viewCommands, treeNodeInfos) + { + Data = project + }) + { + var treeViewControl = TypeUtils.GetField(explorer, "treeViewControl"); + + WindowsFormsTestHelper.Show(treeViewControl); + + var selectionChangedCount = 0; + explorer.SelectionChanged += (sender, args) => selectionChangedCount++; + + // Call + treeViewControl.TrySelectNodeForData(stringA); + + // Assert + Assert.AreEqual(1, selectionChangedCount); + } + + WindowsFormsTestHelper.CloseAll(); + mocks.VerifyAll(); + } + + [Test] + [Apartment(ApartmentState.STA)] + public void TreeViewEnterPress_Always_OpenViewForSelection() + { + // Setup + const string treeIdentifier = "SomeName"; + const string formIdentifier = "SomeForm"; + var mocks = new MockRepository(); + + var viewCommands = mocks.StrictMock(); + viewCommands.Expect(a => a.OpenViewForSelection()); + + var project = mocks.Stub(); + + mocks.ReplayAll(); + + IEnumerable treeNodeInfos = new[] + { + new TreeNodeInfo + { + TagType = typeof(IProject) + } + }; + + using (var explorer = new Common.Gui.Forms.ProjectExplorer.ProjectExplorer(viewCommands, treeNodeInfos) + { + Data = project + }) + { + var form = new Form + { + Name = formIdentifier + }; + form.Controls.Add(explorer); + form.Show(); + + var treeViewControl = TypeUtils.GetField(explorer, "treeViewControl"); + + TypeUtils.GetField(treeViewControl, "treeView").Name = treeIdentifier; + + // Precondition + Assert.AreSame(treeViewControl.SelectedData, project); + + var tester = new TreeViewTester(treeIdentifier); + + // Call + tester.DoubleClick(); + } + + // Assert + mocks.VerifyAll(); + } + + [Test] + [Apartment(ApartmentState.STA)] + public void Selection_Always_ReturnsSelectedNodeData() + { + // Setup + var mocks = new MockRepository(); + var viewCommands = mocks.StrictMock(); + var project = mocks.Stub(); + + mocks.ReplayAll(); + + const string stringA = "testA"; + const string stringB = "testB"; + + IEnumerable treeNodeInfos = new[] + { + new TreeNodeInfo + { + TagType = typeof(IProject), + ChildNodeObjects = o => new object[] + { + stringA, + stringB + } + }, + new TreeNodeInfo + { + TagType = typeof(string) + } + }; + + using (var explorer = new Common.Gui.Forms.ProjectExplorer.ProjectExplorer(viewCommands, treeNodeInfos) + { + Data = project + }) + { + var treeViewControl = TypeUtils.GetField(explorer, "treeViewControl"); + + WindowsFormsTestHelper.Show(treeViewControl); + treeViewControl.TrySelectNodeForData(stringA); + + // Call + object selection = explorer.Selection; + + // Assert + Assert.AreSame(stringA, selection); + } + + WindowsFormsTestHelper.CloseAll(); + mocks.VerifyAll(); + } + } +} \ No newline at end of file Fisheye: Tag 50437248686b1183bb0f23de244f7a36beef36a6 refers to a dead (removed) revision in file `Core/Plugins/src/Core.Plugins.ProjectExplorer/ProjectExplorer.Designer.cs'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 50437248686b1183bb0f23de244f7a36beef36a6 refers to a dead (removed) revision in file `Core/Plugins/src/Core.Plugins.ProjectExplorer/ProjectExplorer.cs'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 50437248686b1183bb0f23de244f7a36beef36a6 refers to a dead (removed) revision in file `Core/Plugins/src/Core.Plugins.ProjectExplorer/ProjectExplorer.resx'. Fisheye: No comparison available. Pass `N' to diff? Index: Core/Plugins/src/Core.Plugins.ProjectExplorer/ProjectExplorerPlugin.cs =================================================================== diff -u -r2247cb12b320db2490950094f19ae92ad546c35c -r50437248686b1183bb0f23de244f7a36beef36a6 --- Core/Plugins/src/Core.Plugins.ProjectExplorer/ProjectExplorerPlugin.cs (.../ProjectExplorerPlugin.cs) (revision 2247cb12b320db2490950094f19ae92ad546c35c) +++ Core/Plugins/src/Core.Plugins.ProjectExplorer/ProjectExplorerPlugin.cs (.../ProjectExplorerPlugin.cs) (revision 50437248686b1183bb0f23de244f7a36beef36a6) @@ -26,6 +26,7 @@ using Core.Common.Controls.TreeView; using Core.Common.Gui; using Core.Common.Gui.Commands; +using Core.Common.Gui.Forms.ProjectExplorer; using Core.Common.Gui.Plugin; using Core.Plugins.ProjectExplorer.Exceptions; using ProjectExplorerResources = Core.Plugins.ProjectExplorer.Properties.Resources; Index: Core/Plugins/src/Core.Plugins.ProjectExplorer/ProjectExplorerViewController.cs =================================================================== diff -u -rcbde09a1860a8a4480b958d6671de3480b995886 -r50437248686b1183bb0f23de244f7a36beef36a6 --- Core/Plugins/src/Core.Plugins.ProjectExplorer/ProjectExplorerViewController.cs (.../ProjectExplorerViewController.cs) (revision cbde09a1860a8a4480b958d6671de3480b995886) +++ Core/Plugins/src/Core.Plugins.ProjectExplorer/ProjectExplorerViewController.cs (.../ProjectExplorerViewController.cs) (revision 50437248686b1183bb0f23de244f7a36beef36a6) @@ -26,6 +26,7 @@ using Core.Common.Controls.TreeView; using Core.Common.Gui; using Core.Common.Gui.Commands; +using Core.Common.Gui.Forms.ProjectExplorer; using Core.Common.Gui.Forms.ViewHost; using Core.Plugins.ProjectExplorer.Properties; @@ -40,7 +41,7 @@ private readonly IEnumerable treeNodeInfos; private readonly IViewCommands viewCommands; - private ProjectExplorer projectExplorer; + private Common.Gui.Forms.ProjectExplorer.ProjectExplorer projectExplorer; /// /// Fired when the project explorer view has been opened. @@ -142,7 +143,7 @@ private void OpenProjectExplorer() { - projectExplorer = new ProjectExplorer(viewCommands, treeNodeInfos); + projectExplorer = new Common.Gui.Forms.ProjectExplorer.ProjectExplorer(viewCommands, treeNodeInfos); viewController.ViewHost.AddToolView(projectExplorer, ToolViewLocation.Left); viewController.ViewHost.SetImage(projectExplorer, Resources.ProjectExplorerIcon); Index: Core/Plugins/test/Core.Plugins.ProjectExplorer.Test/Commands/ToggleProjectExplorerCommandTest.cs =================================================================== diff -u -rcbde09a1860a8a4480b958d6671de3480b995886 -r50437248686b1183bb0f23de244f7a36beef36a6 --- Core/Plugins/test/Core.Plugins.ProjectExplorer.Test/Commands/ToggleProjectExplorerCommandTest.cs (.../ToggleProjectExplorerCommandTest.cs) (revision cbde09a1860a8a4480b958d6671de3480b995886) +++ Core/Plugins/test/Core.Plugins.ProjectExplorer.Test/Commands/ToggleProjectExplorerCommandTest.cs (.../ToggleProjectExplorerCommandTest.cs) (revision 50437248686b1183bb0f23de244f7a36beef36a6) @@ -90,11 +90,11 @@ if (isViewOpen) { - viewHost.Expect(vm => vm.AddToolView(Arg.Is.NotNull, + viewHost.Expect(vm => vm.AddToolView(Arg.Is.NotNull, Arg.Matches(vl => vl == ToolViewLocation.Left))) - .WhenCalled(invocation => toolViewList.Add(invocation.Arguments[0] as ProjectExplorer)); + .WhenCalled(invocation => toolViewList.Add(invocation.Arguments[0] as Common.Gui.Forms.ProjectExplorer.ProjectExplorer)); viewHost.Expect(tvc => tvc.SetImage(null, null)).IgnoreArguments(); - viewHost.Expect(vm => vm.Remove(Arg.Is.TypeOf)); + viewHost.Expect(vm => vm.Remove(Arg.Is.TypeOf)); } var viewController = mocks.StrictMock(); @@ -135,12 +135,12 @@ var viewHost = mocks.StrictMock(); viewHost.Stub(vm => vm.ToolViews).Return(toolViewList); - viewHost.Expect(vm => vm.AddToolView(Arg.Is.NotNull, + viewHost.Expect(vm => vm.AddToolView(Arg.Is.NotNull, Arg.Matches(vl => vl == ToolViewLocation.Left))) - .WhenCalled(invocation => toolViewList.Add(invocation.Arguments[0] as ProjectExplorer)); + .WhenCalled(invocation => toolViewList.Add(invocation.Arguments[0] as Common.Gui.Forms.ProjectExplorer.ProjectExplorer)); viewHost.Stub(vm => vm.SetImage(null, null)).IgnoreArguments(); - viewHost.Expect(tvc => tvc.Remove(Arg.Is.TypeOf)); + viewHost.Expect(tvc => tvc.Remove(Arg.Is.TypeOf)); var viewController = mocks.StrictMock(); viewController.Stub(tvc => tvc.ViewHost).Return(viewHost); Index: Core/Plugins/test/Core.Plugins.ProjectExplorer.Test/ProjectExplorerPluginTest.cs =================================================================== diff -u -r54c889ff0f67cd16eb8371a7e9c468444a4732ba -r50437248686b1183bb0f23de244f7a36beef36a6 --- Core/Plugins/test/Core.Plugins.ProjectExplorer.Test/ProjectExplorerPluginTest.cs (.../ProjectExplorerPluginTest.cs) (revision 54c889ff0f67cd16eb8371a7e9c468444a4732ba) +++ Core/Plugins/test/Core.Plugins.ProjectExplorer.Test/ProjectExplorerPluginTest.cs (.../ProjectExplorerPluginTest.cs) (revision 50437248686b1183bb0f23de244f7a36beef36a6) @@ -78,7 +78,7 @@ gui.Stub(g => g.ViewCommands).Return(mocks.Stub()); gui.Stub(g => g.GetTreeNodeInfos()).Return(Enumerable.Empty()); viewHost.Stub(vm => vm.ToolViews).Return(new IView[0]); - viewHost.Stub(vm => vm.AddToolView(Arg.Is.TypeOf, Arg.Matches(vl => vl == ToolViewLocation.Left))); + viewHost.Stub(vm => vm.AddToolView(Arg.Is.TypeOf, Arg.Matches(vl => vl == ToolViewLocation.Left))); viewHost.Stub(vm => vm.SetImage(null, null)).IgnoreArguments(); gui.Stub(g => g.ViewHost).Return(viewHost); gui.Expect(g => g.ProjectOpened += null).IgnoreArguments(); @@ -111,7 +111,7 @@ gui.Stub(g => g.ViewCommands).Return(mocks.Stub()); gui.Stub(g => g.GetTreeNodeInfos()).Return(Enumerable.Empty()); viewHost.Stub(vm => vm.ToolViews).Return(new IView[0]); - viewHost.Stub(vm => vm.AddToolView(Arg.Is.TypeOf, Arg.Matches(vl => vl == ToolViewLocation.Left))); + viewHost.Stub(vm => vm.AddToolView(Arg.Is.TypeOf, Arg.Matches(vl => vl == ToolViewLocation.Left))); viewHost.Stub(vm => vm.SetImage(null, null)).IgnoreArguments(); gui.Stub(g => g.ViewHost).Return(viewHost); gui.Stub(g => g.ProjectOpened += null).IgnoreArguments(); @@ -150,7 +150,7 @@ gui.Stub(g => g.ViewCommands).Return(mocks.Stub()); gui.Stub(g => g.GetTreeNodeInfos()).Return(Enumerable.Empty()); viewHost.Stub(vm => vm.ToolViews).Return(new IView[0]); - viewHost.Stub(vm => vm.AddToolView(Arg.Is.TypeOf, Arg.Matches(vl => vl == ToolViewLocation.Left))); + viewHost.Stub(vm => vm.AddToolView(Arg.Is.TypeOf, Arg.Matches(vl => vl == ToolViewLocation.Left))); viewHost.Stub(vm => vm.SetImage(null, null)).IgnoreArguments(); gui.Stub(g => g.ViewHost).Return(viewHost); gui.Stub(g => g.ProjectOpened += null).IgnoreArguments(); @@ -241,11 +241,11 @@ // Activate var toolViews = new List(); viewHost.Stub(vm => vm.ToolViews).Return(toolViews); - viewHost.Expect(vm => vm.AddToolView(Arg.Is.NotNull, Arg.Matches(vl => vl == ToolViewLocation.Left))).WhenCalled(invocation => toolViews.Add(invocation.Arguments[0] as ProjectExplorer)); + viewHost.Expect(vm => vm.AddToolView(Arg.Is.NotNull, Arg.Matches(vl => vl == ToolViewLocation.Left))).WhenCalled(invocation => toolViews.Add(invocation.Arguments[0] as Common.Gui.Forms.ProjectExplorer.ProjectExplorer)); viewHost.Expect(vm => vm.SetImage(null, null)).IgnoreArguments(); // Dispose - viewHost.Expect(tvc => tvc.Remove(Arg.Is.NotNull)); + viewHost.Expect(tvc => tvc.Remove(Arg.Is.NotNull)); gui.Expect(g => g.ProjectOpened += null).IgnoreArguments(); gui.Expect(g => g.ProjectOpened -= null).IgnoreArguments(); Fisheye: Tag 50437248686b1183bb0f23de244f7a36beef36a6 refers to a dead (removed) revision in file `Core/Plugins/test/Core.Plugins.ProjectExplorer.Test/ProjectExplorerTest.cs'. Fisheye: No comparison available. Pass `N' to diff? Index: Core/Plugins/test/Core.Plugins.ProjectExplorer.Test/ProjectExplorerViewControllerTest.cs =================================================================== diff -u -rcbde09a1860a8a4480b958d6671de3480b995886 -r50437248686b1183bb0f23de244f7a36beef36a6 --- Core/Plugins/test/Core.Plugins.ProjectExplorer.Test/ProjectExplorerViewControllerTest.cs (.../ProjectExplorerViewControllerTest.cs) (revision cbde09a1860a8a4480b958d6671de3480b995886) +++ Core/Plugins/test/Core.Plugins.ProjectExplorer.Test/ProjectExplorerViewControllerTest.cs (.../ProjectExplorerViewControllerTest.cs) (revision 50437248686b1183bb0f23de244f7a36beef36a6) @@ -68,11 +68,11 @@ var toolViewList = new List(); viewHost.Stub(vm => vm.ToolViews).Return(toolViewList); - viewHost.Expect(vm => vm.AddToolView(Arg.Is.NotNull, + viewHost.Expect(vm => vm.AddToolView(Arg.Is.NotNull, Arg.Matches(vl => vl == ToolViewLocation.Left))) - .WhenCalled(invocation => toolViewList.Add(invocation.Arguments[0] as ProjectExplorer)); + .WhenCalled(invocation => toolViewList.Add(invocation.Arguments[0] as Common.Gui.Forms.ProjectExplorer.ProjectExplorer)); viewHost.Expect(vm => vm.SetImage(null, null)).IgnoreArguments(); - viewHost.Expect(vm => vm.Remove(Arg.Is.TypeOf)); + viewHost.Expect(vm => vm.Remove(Arg.Is.TypeOf)); var viewController = mocks.StrictMock(); viewController.Stub(tvc => tvc.ViewHost).Return(viewHost); @@ -101,7 +101,7 @@ var viewHost = mocks.Stub(); viewHost.Stub(vm => vm.ToolViews).Return(new List()); - viewHost.Stub(vm => vm.AddToolView(Arg.Is.TypeOf, Arg.Matches(vl => vl == ToolViewLocation.Left))); + viewHost.Stub(vm => vm.AddToolView(Arg.Is.TypeOf, Arg.Matches(vl => vl == ToolViewLocation.Left))); viewHost.Expect(vm => vm.SetImage(null, null)).IgnoreArguments(); var viewController = mocks.StrictMock(); @@ -138,11 +138,11 @@ if (isOpen) { - viewHost.Expect(vm => vm.AddToolView(Arg.Is.NotNull, + viewHost.Expect(vm => vm.AddToolView(Arg.Is.NotNull, Arg.Matches(vl => vl == ToolViewLocation.Left))) - .WhenCalled(invocation => toolViewList.Add(invocation.Arguments[0] as ProjectExplorer)); + .WhenCalled(invocation => toolViewList.Add(invocation.Arguments[0] as Common.Gui.Forms.ProjectExplorer.ProjectExplorer)); viewHost.Expect(vm => vm.SetImage(null, null)).IgnoreArguments(); - viewHost.Expect(vm => vm.Remove(Arg.Is.TypeOf)); + viewHost.Expect(vm => vm.Remove(Arg.Is.TypeOf)); } mocks.ReplayAll(); @@ -175,11 +175,11 @@ var toolViewList = new List(); viewHost.Stub(vm => vm.ToolViews).Return(toolViewList); - viewHost.Expect(vm => vm.AddToolView(Arg.Is.NotNull, + viewHost.Expect(vm => vm.AddToolView(Arg.Is.NotNull, Arg.Matches(vl => vl == ToolViewLocation.Left))) - .WhenCalled(invocation => toolViewList.Add(invocation.Arguments[0] as ProjectExplorer)); + .WhenCalled(invocation => toolViewList.Add(invocation.Arguments[0] as Common.Gui.Forms.ProjectExplorer.ProjectExplorer)); viewHost.Expect(vm => vm.SetImage(null, null)).IgnoreArguments(); - viewHost.Expect(vm => vm.Remove(Arg.Is.TypeOf)); + viewHost.Expect(vm => vm.Remove(Arg.Is.TypeOf)); var viewController = mocks.Stub(); viewController.Stub(tvc => tvc.ViewHost).Return(viewHost);