Index: Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingData.cs =================================================================== diff -u -r78aece3188a23a908e7c0a47e53e5facd1c7edb5 -r7c544bdc0a35c6f193d1e786b8c001e9977c50d1 --- Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingData.cs (.../PipingData.cs) (revision 78aece3188a23a908e7c0a47e53e5facd1c7edb5) +++ Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingData.cs (.../PipingData.cs) (revision 7c544bdc0a35c6f193d1e786b8c001e9977c50d1) @@ -195,6 +195,17 @@ public PipingOutput Output { get; set; } /// + /// Gets a value indicating whether the has . + /// + public bool HasOutput + { + get + { + return Output != null; + } + } + + /// /// Clears the . /// public void ClearOutput() Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingCalculationInputsNodePresenter.cs =================================================================== diff -u -r78aece3188a23a908e7c0a47e53e5facd1c7edb5 -r7c544bdc0a35c6f193d1e786b8c001e9977c50d1 --- Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingCalculationInputsNodePresenter.cs (.../PipingCalculationInputsNodePresenter.cs) (revision 78aece3188a23a908e7c0a47e53e5facd1c7edb5) +++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingCalculationInputsNodePresenter.cs (.../PipingCalculationInputsNodePresenter.cs) (revision 7c544bdc0a35c6f193d1e786b8c001e9977c50d1) @@ -109,6 +109,21 @@ RunActivityAction(new PipingCalculationActivity(pipingData)); }); + var clearOutputItem = contextMenu.AddMenuItem(Resources.Clear_output, + null, + Resources.PipingOutputClear, + (o, args) => + { + pipingData.ClearOutput(); + pipingData.NotifyObservers(); + }); + + if (!pipingData.HasOutput) + { + clearOutputItem.Enabled = false; + clearOutputItem.ToolTipText = Resources.ClearOutput_No_output_to_clear; + } + return contextMenu; } Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingOutputNodePresenter.cs =================================================================== diff -u -r78aece3188a23a908e7c0a47e53e5facd1c7edb5 -r7c544bdc0a35c6f193d1e786b8c001e9977c50d1 --- Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingOutputNodePresenter.cs (.../PipingOutputNodePresenter.cs) (revision 78aece3188a23a908e7c0a47e53e5facd1c7edb5) +++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingOutputNodePresenter.cs (.../PipingOutputNodePresenter.cs) (revision 7c544bdc0a35c6f193d1e786b8c001e9977c50d1) @@ -10,7 +10,7 @@ protected override void UpdateNode(ITreeNode parentNode, ITreeNode node, PipingOutput nodeData) { node.Text = Resources.PipingOutput_DisplayName; - node.Image = Resources.PipingIcon; + node.Image = Resources.PipingOutputIcon; } protected override bool CanRemove(object parentNodeData, PipingOutput nodeData) Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/Properties/Resources.Designer.cs =================================================================== diff -u -r6068726f0aa9bd51834c05eecb34fb0d3ecaf27e -r7c544bdc0a35c6f193d1e786b8c001e9977c50d1 --- Ringtoets/Piping/src/Ringtoets.Piping.Forms/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 6068726f0aa9bd51834c05eecb34fb0d3ecaf27e) +++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 7c544bdc0a35c6f193d1e786b8c001e9977c50d1) @@ -1,7 +1,7 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:4.0.30319.18444 +// Runtime Version:4.0.30319.34209 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -79,6 +79,24 @@ } /// + /// Looks up a localized string similar to Wis uitvoer. + /// + public static string Clear_output { + get { + return ResourceManager.GetString("Clear_output", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to De berekening heeft geen uitvoer om te wissen.. + /// + public static string ClearOutput_No_output_to_clear { + get { + return ResourceManager.GetString("ClearOutput_No_output_to_clear", resourceCulture); + } + } + + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// public static System.Drawing.Bitmap FolderIcon { @@ -784,6 +802,26 @@ } /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + public static System.Drawing.Bitmap PipingOutputClear { + get { + object obj = ResourceManager.GetObject("PipingOutputClear", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + public static System.Drawing.Bitmap PipingOutputIcon { + get { + object obj = ResourceManager.GetObject("PipingOutputIcon", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// /// Looks up a localized string similar to Het niveau van de onderkant van dit profiel.. /// public static string PipingSoilProfile_Bottom_Description { Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/Properties/Resources.resx =================================================================== diff -u -r6068726f0aa9bd51834c05eecb34fb0d3ecaf27e -r7c544bdc0a35c6f193d1e786b8c001e9977c50d1 --- Ringtoets/Piping/src/Ringtoets.Piping.Forms/Properties/Resources.resx (.../Resources.resx) (revision 6068726f0aa9bd51834c05eecb34fb0d3ecaf27e) +++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/Properties/Resources.resx (.../Resources.resx) (revision 7c544bdc0a35c6f193d1e786b8c001e9977c50d1) @@ -457,4 +457,16 @@ De verschuiving van de lognormale verdeling. + + ..\Resources\table.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + De berekening heeft geen uitvoer om te wissen. + + + Wis uitvoer + + + ..\Resources\table_delete.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/Resources/table.png =================================================================== diff -u Binary files differ Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/Resources/table_delete.png =================================================================== diff -u Binary files differ Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/Ringtoets.Piping.Forms.csproj =================================================================== diff -u -r5076e379f409c3b5ba41eb98256e3dd5d140571c -r7c544bdc0a35c6f193d1e786b8c001e9977c50d1 --- Ringtoets/Piping/src/Ringtoets.Piping.Forms/Ringtoets.Piping.Forms.csproj (.../Ringtoets.Piping.Forms.csproj) (revision 5076e379f409c3b5ba41eb98256e3dd5d140571c) +++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/Ringtoets.Piping.Forms.csproj (.../Ringtoets.Piping.Forms.csproj) (revision 7c544bdc0a35c6f193d1e786b8c001e9977c50d1) @@ -155,6 +155,8 @@ + + Index: Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingDataTest.cs =================================================================== diff -u -r78aece3188a23a908e7c0a47e53e5facd1c7edb5 -r7c544bdc0a35c6f193d1e786b8c001e9977c50d1 --- Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingDataTest.cs (.../PipingDataTest.cs) (revision 78aece3188a23a908e7c0a47e53e5facd1c7edb5) +++ Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingDataTest.cs (.../PipingDataTest.cs) (revision 7c544bdc0a35c6f193d1e786b8c001e9977c50d1) @@ -173,5 +173,31 @@ // Assert Assert.IsNull(data.Output); } + + [Test] + public void HasOutput_OutputNull_ReturnsFalse() + { + // Setup + var data = new PipingData + { + Output = null + }; + + // Call & Assert + Assert.IsFalse(data.HasOutput); + } + + [Test] + public void HasOutput_OutputSet_ReturnsTrue() + { + // Setup + var data = new PipingData + { + Output = new TestPipingOutput() + }; + + // Call & Assert + Assert.IsTrue(data.HasOutput); + } } } \ No newline at end of file Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingCalculationInputsNodePresenterTest.cs =================================================================== diff -u -r5076e379f409c3b5ba41eb98256e3dd5d140571c -r7c544bdc0a35c6f193d1e786b8c001e9977c50d1 --- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingCalculationInputsNodePresenterTest.cs (.../PipingCalculationInputsNodePresenterTest.cs) (revision 5076e379f409c3b5ba41eb98256e3dd5d140571c) +++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingCalculationInputsNodePresenterTest.cs (.../PipingCalculationInputsNodePresenterTest.cs) (revision 7c544bdc0a35c6f193d1e786b8c001e9977c50d1) @@ -287,11 +287,12 @@ } [Test] - public void GetContextMenu_Always_ContextMenuWithOneItemForCalculate() + public void GetContextMenu_WithPipingData_ContextMenuWithThreeItems() { // Setup var nodeMock = mockRepository.StrictMock(); var dataMock = mockRepository.StrictMock(); + dataMock.PipingData = new PipingData(); var nodePresenter = new PipingCalculationInputsNodePresenter(); @@ -302,17 +303,73 @@ // Assert Assert.IsNotNull(contextMenu); - Assert.AreEqual(2, contextMenu.Items.Count); + Assert.AreEqual(3, contextMenu.Items.Count); Assert.AreEqual(WtiFormsResources.Validate, contextMenu.Items[0].Text); ToolStripItem calculatePipingItem = contextMenu.Items[1]; Assert.AreEqual(WtiFormsResources.Calculate, calculatePipingItem.Text); Assert.AreEqual(16, calculatePipingItem.Image.Height); Assert.AreEqual(16, calculatePipingItem.Image.Width); + + ToolStripItem clearOutputItem = contextMenu.Items[2]; + Assert.AreEqual(WtiFormsResources.Clear_output, clearOutputItem.Text); + Assert.AreEqual(16, clearOutputItem.Image.Height); + Assert.AreEqual(16, clearOutputItem.Image.Width); mockRepository.VerifyAll(); // Expect no calls on arguments } [Test] + public void GetContextMenu_PipingDataWithoutOutput_ContextMenuItemClearOutputDisabled() + { + // Setup + var nodeMock = mockRepository.StrictMock(); + var dataMock = mockRepository.StrictMock(); + dataMock.PipingData = new PipingData(); + + var nodePresenter = new PipingCalculationInputsNodePresenter(); + + mockRepository.ReplayAll(); + + // Call + ContextMenuStrip contextMenu = nodePresenter.GetContextMenu(nodeMock, dataMock); + + // Assert + Assert.IsNotNull(contextMenu); + Assert.AreEqual(3, contextMenu.Items.Count); + + ToolStripItem clearOutputItem = contextMenu.Items[2]; + Assert.IsFalse(clearOutputItem.Enabled); + mockRepository.VerifyAll(); // Expect no calls on arguments + } + + [Test] + public void GetContextMenu_PipingDataWithOutput_ContextMenuItemClearOutputEnabled() + { + // Setup + var nodeMock = mockRepository.StrictMock(); + var dataMock = mockRepository.StrictMock(); + dataMock.PipingData = new PipingData + { + Output = new TestPipingOutput() + }; + + var nodePresenter = new PipingCalculationInputsNodePresenter(); + + mockRepository.ReplayAll(); + + // Call + ContextMenuStrip contextMenu = nodePresenter.GetContextMenu(nodeMock, dataMock); + + // Assert + Assert.IsNotNull(contextMenu); + Assert.AreEqual(3, contextMenu.Items.Count); + + ToolStripItem clearOutputItem = contextMenu.Items[2]; + Assert.IsTrue(clearOutputItem.Enabled); + mockRepository.VerifyAll(); // Expect no calls on arguments + } + + [Test] public void OnPropertyChange_Always_DoNothing() { // Setup Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingOutputNodePresenterTest.cs =================================================================== diff -u -r78aece3188a23a908e7c0a47e53e5facd1c7edb5 -r7c544bdc0a35c6f193d1e786b8c001e9977c50d1 --- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingOutputNodePresenterTest.cs (.../PipingOutputNodePresenterTest.cs) (revision 78aece3188a23a908e7c0a47e53e5facd1c7edb5) +++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingOutputNodePresenterTest.cs (.../PipingOutputNodePresenterTest.cs) (revision 7c544bdc0a35c6f193d1e786b8c001e9977c50d1) @@ -1,8 +1,6 @@ using System; -using System.ComponentModel; using System.Windows.Forms; using Core.Common.Controls; -using Core.Common.Utils.Collections; using NUnit.Framework; using Rhino.Mocks; using Ringtoets.Piping.Calculation.TestUtil; @@ -11,7 +9,6 @@ using Ringtoets.Piping.Forms.NodePresenters; using Ringtoets.Piping.Forms.PresentationObjects; using Ringtoets.Piping.Forms.Test.Helper; -using WtiFormsResources = Ringtoets.Piping.Forms.Properties.Resources; namespace Ringtoets.Piping.Forms.Test.NodePresenters { @@ -54,18 +51,17 @@ } [Test] - public void GetContextMenu_Always_ReturnsNull() + public void GetContextMenu_PipingOutput_ReturnsNull() { // Setup var mocks = new MockRepository(); var nodeMock = mocks.StrictMock(); - var dataMock = mocks.StrictMock(); mocks.ReplayAll(); var nodePresenter = new PipingOutputNodePresenter(); // Call - ContextMenuStrip contextMenu = nodePresenter.GetContextMenu(nodeMock, dataMock); + ContextMenuStrip contextMenu = nodePresenter.GetContextMenu(nodeMock, new TestPipingOutput()); // Assert Assert.IsNull(contextMenu);