Index: Ringtoets/Common/src/Ringtoets.Common.Data/Commentable.cs
===================================================================
diff -u
--- Ringtoets/Common/src/Ringtoets.Common.Data/Commentable.cs (revision 0)
+++ Ringtoets/Common/src/Ringtoets.Common.Data/Commentable.cs (revision 306b732e03a09bf7dcd66e37dc1db8fa281b1480)
@@ -0,0 +1,31 @@
+// Copyright (C) Stichting Deltares 2016. All rights reserved.
+//
+// This file is part of Ringtoets.
+//
+// Ringtoets is free software: you can redistribute it and/or modify
+// it under the terms of the GNU 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 General Public License for more details.
+//
+// You should have received a copy of the GNU 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 Ringtoets.Common.Data
+{
+ ///
+ /// This class represents a simple property.
+ ///
+ public class Commentable : ICommentable
+ {
+ public string Comments { get; set; }
+ }
+}
\ No newline at end of file
Index: Ringtoets/Common/src/Ringtoets.Common.Data/FailureMechanism/FailureMechanismBase.cs
===================================================================
diff -u -re1e06d9c01df6f4855fef96316760e7e82d62e70 -r306b732e03a09bf7dcd66e37dc1db8fa281b1480
--- Ringtoets/Common/src/Ringtoets.Common.Data/FailureMechanism/FailureMechanismBase.cs (.../FailureMechanismBase.cs) (revision e1e06d9c01df6f4855fef96316760e7e82d62e70)
+++ Ringtoets/Common/src/Ringtoets.Common.Data/FailureMechanism/FailureMechanismBase.cs (.../FailureMechanismBase.cs) (revision 306b732e03a09bf7dcd66e37dc1db8fa281b1480)
@@ -57,6 +57,9 @@
Code = failureMechanismCode;
sections = new List();
IsRelevant = true;
+ InputComments = new Commentable();
+ OutputComments = new Commentable();
+ NotRelevantComments = new Commentable();
}
public double Contribution
@@ -91,8 +94,12 @@
public string Comments { get; set; }
- public string OutputComments { get; set; }
+ public Commentable InputComments { get; private set; }
+ public Commentable OutputComments { get; private set; }
+
+ public Commentable NotRelevantComments { get; private set; }
+
public bool IsRelevant { get; set; }
public virtual void AddSection(FailureMechanismSection section)
Index: Ringtoets/Common/src/Ringtoets.Common.Data/FailureMechanism/IFailureMechanism.cs
===================================================================
diff -u -re1e06d9c01df6f4855fef96316760e7e82d62e70 -r306b732e03a09bf7dcd66e37dc1db8fa281b1480
--- Ringtoets/Common/src/Ringtoets.Common.Data/FailureMechanism/IFailureMechanism.cs (.../IFailureMechanism.cs) (revision e1e06d9c01df6f4855fef96316760e7e82d62e70)
+++ Ringtoets/Common/src/Ringtoets.Common.Data/FailureMechanism/IFailureMechanism.cs (.../IFailureMechanism.cs) (revision 306b732e03a09bf7dcd66e37dc1db8fa281b1480)
@@ -49,11 +49,21 @@
string Code { get; }
///
- /// Gets or sets the comments associated with the output of the data object.
+ /// Gets the comments associated with the input of the data object.
///
- string OutputComments { get; set; }
+ Commentable InputComments { get; }
+
+ ///
+ /// Gets the comments associated with the output of the data object.
+ ///
+ Commentable OutputComments { get; }
///
+ /// Gets the comments associated when the failure mechanism is set to be not relevant.
+ ///
+ Commentable NotRelevantComments { get; }
+
+ ///
/// Gets or sets a value indicating whether this failure mechanism is relevant.
///
bool IsRelevant { get; set; }
Index: Ringtoets/Common/src/Ringtoets.Common.Data/Ringtoets.Common.Data.csproj
===================================================================
diff -u -re38a7c2baca2872af6319d535c6468133ea31fbc -r306b732e03a09bf7dcd66e37dc1db8fa281b1480
--- Ringtoets/Common/src/Ringtoets.Common.Data/Ringtoets.Common.Data.csproj (.../Ringtoets.Common.Data.csproj) (revision e38a7c2baca2872af6319d535c6468133ea31fbc)
+++ Ringtoets/Common/src/Ringtoets.Common.Data/Ringtoets.Common.Data.csproj (.../Ringtoets.Common.Data.csproj) (revision 306b732e03a09bf7dcd66e37dc1db8fa281b1480)
@@ -42,6 +42,7 @@
+
Index: Ringtoets/Common/src/Ringtoets.Common.Forms/Views/CommentView.cs
===================================================================
diff -u -rda4ca78323eaccee879c224875a506aa3b9fdf54 -r306b732e03a09bf7dcd66e37dc1db8fa281b1480
--- Ringtoets/Common/src/Ringtoets.Common.Forms/Views/CommentView.cs (.../CommentView.cs) (revision da4ca78323eaccee879c224875a506aa3b9fdf54)
+++ Ringtoets/Common/src/Ringtoets.Common.Forms/Views/CommentView.cs (.../CommentView.cs) (revision 306b732e03a09bf7dcd66e37dc1db8fa281b1480)
@@ -27,7 +27,7 @@
namespace Ringtoets.Common.Forms.Views
{
///
- /// This class represents a simple view with a rich text editor, to which data can be added.
+ /// This class represents a simple view with a rich text editor, to which data can be added.
///
public partial class CommentView : UserControl, IView
{
Index: Ringtoets/Common/test/Ringtoets.Common.Data.Test/FailureMechanism/FailureMechanismBaseTest.cs
===================================================================
diff -u -re1e06d9c01df6f4855fef96316760e7e82d62e70 -r306b732e03a09bf7dcd66e37dc1db8fa281b1480
--- Ringtoets/Common/test/Ringtoets.Common.Data.Test/FailureMechanism/FailureMechanismBaseTest.cs (.../FailureMechanismBaseTest.cs) (revision e1e06d9c01df6f4855fef96316760e7e82d62e70)
+++ Ringtoets/Common/test/Ringtoets.Common.Data.Test/FailureMechanism/FailureMechanismBaseTest.cs (.../FailureMechanismBaseTest.cs) (revision 306b732e03a09bf7dcd66e37dc1db8fa281b1480)
@@ -78,7 +78,9 @@
Assert.AreEqual(name, failureMechanism.Name);
Assert.AreEqual(code, failureMechanism.Code);
Assert.IsNull(failureMechanism.Comments);
- Assert.IsNull(failureMechanism.OutputComments);
+ Assert.IsNotNull(failureMechanism.InputComments);
+ Assert.IsNotNull(failureMechanism.OutputComments);
+ Assert.IsNotNull(failureMechanism.NotRelevantComments);
Assert.IsTrue(failureMechanism.IsRelevant);
CollectionAssert.IsEmpty(failureMechanism.Sections);
}
Index: Ringtoets/Integration/src/Ringtoets.Integration.Plugin/RingtoetsPlugin.cs
===================================================================
diff -u -r52cdf6d3134a95bad594aa61c9ef062a97b1a2ab -r306b732e03a09bf7dcd66e37dc1db8fa281b1480
--- Ringtoets/Integration/src/Ringtoets.Integration.Plugin/RingtoetsPlugin.cs (.../RingtoetsPlugin.cs) (revision 52cdf6d3134a95bad594aa61c9ef062a97b1a2ab)
+++ Ringtoets/Integration/src/Ringtoets.Integration.Plugin/RingtoetsPlugin.cs (.../RingtoetsPlugin.cs) (revision 306b732e03a09bf7dcd66e37dc1db8fa281b1480)
@@ -1027,6 +1027,9 @@
private static IEnumerable GetCommentableElements(IFailureMechanism failureMechanism)
{
yield return failureMechanism;
+ yield return failureMechanism.InputComments;
+ yield return failureMechanism.OutputComments;
+ yield return failureMechanism.NotRelevantComments;
foreach (ICalculation commentableCalculation in failureMechanism.Calculations)
{
yield return commentableCalculation;
@@ -1113,7 +1116,7 @@
{
return new object[]
{
- new CommentContext(nodeData.WrappedData)
+ new CommentContext(nodeData.WrappedData.NotRelevantComments)
};
}
@@ -1122,7 +1125,7 @@
return new ArrayList
{
new FailureMechanismSectionsContext(nodeData, assessmentSection),
- new CommentContext(nodeData)
+ new CommentContext(nodeData.InputComments)
};
}
@@ -1143,7 +1146,7 @@
var macrostabilityOutwards = nodeData as IHasSectionResults;
var stabilityPointConstruction = nodeData as IHasSectionResults;
- var failureMechanismSectionResultContexts = new object[1];
+ var failureMechanismSectionResultContexts = new object[2];
if (duneErosion != null)
{
failureMechanismSectionResultContexts[0] =
@@ -1214,6 +1217,7 @@
failureMechanismSectionResultContexts[0] =
new FailureMechanismSectionResultContext(stabilityPointConstruction.SectionResults, nodeData);
}
+ failureMechanismSectionResultContexts[1] = new CommentContext(nodeData.OutputComments);
return failureMechanismSectionResultContexts;
}
@@ -1241,7 +1245,7 @@
{
var builder = new RingtoetsContextMenuBuilder(Gui.Get(nodeData, treeViewControl));
- return builder.AddToggleRelevancyOfFailureMechanismItem(nodeData, null)
+ return builder.AddToggleRelevancyOfFailureMechanismItem(nodeData, RemoveAllViewsForItem)
.AddSeparator()
.AddExpandAllItem()
.AddCollapseAllItem()
Index: Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/TreeNodeInfos/FailureMechanismContextTreeNodeInfoTest.cs
===================================================================
diff -u -r267dd861d69e6952235fb997a426aec5efdbf432 -r306b732e03a09bf7dcd66e37dc1db8fa281b1480
--- Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/TreeNodeInfos/FailureMechanismContextTreeNodeInfoTest.cs (.../FailureMechanismContextTreeNodeInfoTest.cs) (revision 267dd861d69e6952235fb997a426aec5efdbf432)
+++ Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/TreeNodeInfos/FailureMechanismContextTreeNodeInfoTest.cs (.../FailureMechanismContextTreeNodeInfoTest.cs) (revision 306b732e03a09bf7dcd66e37dc1db8fa281b1480)
@@ -183,13 +183,17 @@
Assert.AreSame(failureMechanism, failureMechanismSectionsContext.WrappedData);
Assert.AreSame(assessmentSection, failureMechanismSectionsContext.ParentAssessmentSection);
- var commentContext = (CommentContext) inputFolder.Contents[1];
- Assert.IsNotNull(commentContext);
- Assert.AreSame(failureMechanism, commentContext.WrappedData);
+ var inputCommentContext = (CommentContext) inputFolder.Contents[1];
+ Assert.IsNotNull(inputCommentContext);
+ Assert.AreSame(failureMechanism.InputComments, inputCommentContext.WrappedData);
var outputFolder = (CategoryTreeFolder) children[1];
Assert.AreEqual("Oordeel", outputFolder.Name);
Assert.AreEqual(TreeFolderCategory.Output, outputFolder.Category);
+
+ var outputCommentContext = (CommentContext) outputFolder.Contents[0];
+ Assert.IsNotNull(outputCommentContext);
+ Assert.AreSame(failureMechanism.OutputComments, outputCommentContext.WrappedData);
}
mocks.VerifyAll();
}
@@ -256,7 +260,7 @@
// Assert
Assert.AreEqual(1, children.Length);
var commentContext = (CommentContext) children[0];
- Assert.AreSame(failureMechanism, commentContext.WrappedData);
+ Assert.AreSame(failureMechanism.NotRelevantComments, commentContext.WrappedData);
}
mocks.VerifyAll();
}
@@ -452,9 +456,13 @@
var assessmentSection = mocks.Stub();
var failureMechanismContext = new FailureMechanismContext(failureMechanism, assessmentSection);
+ var viewCommands = mocks.StrictMock();
+ viewCommands.Expect(vs => vs.RemoveAllViewsForItem(failureMechanismContext));
+
var menuBuilder = new CustomItemsOnlyContextMenuBuilder();
var gui = mocks.StrictMock();
+ gui.Stub(g => g.ViewCommands).Return(viewCommands);
gui.Stub(g => g.ProjectOpened += null).IgnoreArguments();
gui.Stub(g => g.ProjectOpened -= null).IgnoreArguments();
@@ -498,6 +506,8 @@
var failureMechanism = mocks.StrictMultiMock>(typeof(IFailureMechanism));
failureMechanism.Expect(fm => ((IFailureMechanism) fm).IsRelevant).Return(true);
failureMechanism.Expect(fm => fm.SectionResults).Return(new List()).Repeat.Any();
+ failureMechanism.Expect(fm => ((IFailureMechanism) fm).InputComments).Return(new Commentable());
+ failureMechanism.Expect(fm => ((IFailureMechanism) fm).OutputComments).Return(new Commentable());
var failureMechanismContext = mocks.Stub>(failureMechanism, assessmentSection);
mocks.ReplayAll();
Index: Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/ViewInfos/CommentViewInfoTest.cs
===================================================================
diff -u -rf64dceaa32788bad28dcf09f4a1c3150595f1327 -r306b732e03a09bf7dcd66e37dc1db8fa281b1480
--- Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/ViewInfos/CommentViewInfoTest.cs (.../CommentViewInfoTest.cs) (revision f64dceaa32788bad28dcf09f4a1c3150595f1327)
+++ Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/ViewInfos/CommentViewInfoTest.cs (.../CommentViewInfoTest.cs) (revision 306b732e03a09bf7dcd66e37dc1db8fa281b1480)
@@ -179,7 +179,7 @@
}
[Test]
- public void CloseForData_ViewDataIsOtherInstanceThenDeletedAssessmentSection_ReturnFalse()
+ public void CloseForData_ViewDataIsOtherInstanceThanDeletedAssessmentSection_ReturnFalse()
{
// Setup
var deletedAssessmentSection = mocks.Stub();
@@ -240,6 +240,9 @@
var deletedFailureMechanism = mocks.Stub();
deletedFailureMechanism.Stub(fm => fm.Calculations).Return(Enumerable.Empty());
+ deletedFailureMechanism.Stub(fm => fm.InputComments).Return(new Commentable());
+ deletedFailureMechanism.Stub(fm => fm.OutputComments).Return(new Commentable());
+ deletedFailureMechanism.Stub(fm => fm.NotRelevantComments).Return(new Commentable());
var deletedAssessmentSection = mocks.Stub();
deletedAssessmentSection.Stub(s => s.GetFailureMechanisms()).Return(new[]
@@ -273,6 +276,9 @@
{
calculation
});
+ failureMechanism.Stub(fm => fm.InputComments).Return(new Commentable());
+ failureMechanism.Stub(fm => fm.OutputComments).Return(new Commentable());
+ failureMechanism.Stub(fm => fm.NotRelevantComments).Return(new Commentable());
var assessmentSection = mocks.Stub();
assessmentSection.Stub(s => s.GetFailureMechanisms()).Return(new[]
@@ -308,6 +314,9 @@
{
deletedCalculation
});
+ deletedfailureMechanism.Stub(fm => fm.InputComments).Return(new Commentable());
+ deletedfailureMechanism.Stub(fm => fm.OutputComments).Return(new Commentable());
+ deletedfailureMechanism.Stub(fm => fm.NotRelevantComments).Return(new Commentable());
var deletedAssessmentSection = mocks.Stub();
deletedAssessmentSection.Stub(s => s.GetFailureMechanisms()).Return(new[]
@@ -331,6 +340,142 @@
}
[Test]
+ public void CloseForData_ViewDataIsInputCommentableOfDeletedAssessmentSection_ReturnTrue()
+ {
+ // Setup
+ var commentable = new Commentable();
+
+ var failureMechanism = mocks.Stub();
+ failureMechanism.Stub(fm => fm.Calculations).Return(Enumerable.Empty());
+ failureMechanism.Stub(fm => fm.InputComments).Return(commentable);
+ failureMechanism.Stub(fm => fm.OutputComments).Return(new Commentable());
+ failureMechanism.Stub(fm => fm.NotRelevantComments).Return(new Commentable());
+
+ var assessmentSection = mocks.Stub();
+ assessmentSection.Stub(s => s.GetFailureMechanisms()).Return(new[]
+ {
+ failureMechanism
+ });
+
+ mocks.ReplayAll();
+
+ using (var view = new CommentView
+ {
+ Data = commentable
+ })
+ {
+ // Call
+ var closeForData = info.CloseForData(view, assessmentSection);
+
+ // Assert
+ Assert.IsTrue(closeForData);
+ }
+ mocks.VerifyAll();
+ }
+
+ [Test]
+ public void CloseForData_ViewDataIsCommentableButNotOfDeletedAssessmentSection_ReturnFalse()
+ {
+ // Setup
+ var viewDataCommentable = new Commentable();
+
+ var failureMechanism = mocks.Stub();
+ failureMechanism.Stub(fm => fm.Calculations).Return(Enumerable.Empty());
+ failureMechanism.Stub(fm => fm.InputComments).Return(new Commentable());
+ failureMechanism.Stub(fm => fm.OutputComments).Return(new Commentable());
+ failureMechanism.Stub(fm => fm.NotRelevantComments).Return(new Commentable());
+
+ var assessmentSection = mocks.Stub();
+ assessmentSection.Stub(s => s.GetFailureMechanisms()).Return(new[]
+ {
+ failureMechanism
+ });
+
+ mocks.ReplayAll();
+
+ using (var view = new CommentView
+ {
+ Data = viewDataCommentable
+ })
+ {
+ // Call
+ var closeForData = info.CloseForData(view, assessmentSection);
+
+ // Assert
+ Assert.IsFalse(closeForData);
+ }
+ mocks.VerifyAll();
+ }
+
+ [Test]
+ public void CloseForData_ViewDataIsOutputCommentableOfDeletedAssessmentSection_ReturnTrue()
+ {
+ // Setup
+ var commentable = new Commentable();
+
+ var failureMechanism = mocks.Stub();
+ failureMechanism.Stub(fm => fm.Calculations).Return(Enumerable.Empty());
+ failureMechanism.Stub(fm => fm.InputComments).Return(new Commentable());
+ failureMechanism.Stub(fm => fm.OutputComments).Return(commentable);
+ failureMechanism.Stub(fm => fm.NotRelevantComments).Return(new Commentable());
+
+ var assessmentSection = mocks.Stub();
+ assessmentSection.Stub(s => s.GetFailureMechanisms()).Return(new[]
+ {
+ failureMechanism
+ });
+
+ mocks.ReplayAll();
+
+ using (var view = new CommentView
+ {
+ Data = commentable
+ })
+ {
+ // Call
+ var closeForData = info.CloseForData(view, assessmentSection);
+
+ // Assert
+ Assert.IsTrue(closeForData);
+ }
+ mocks.VerifyAll();
+ }
+
+ [Test]
+ public void CloseForData_ViewDataIsNotRelevantCommentableOfDeletedAssessmentSection_ReturnTrue()
+ {
+ // Setup
+ var commentable = new Commentable();
+
+ var failureMechanism = mocks.Stub();
+ failureMechanism.Stub(fm => fm.Calculations).Return(Enumerable.Empty());
+ failureMechanism.Stub(fm => fm.InputComments).Return(new Commentable());
+ failureMechanism.Stub(fm => fm.OutputComments).Return(new Commentable());
+ failureMechanism.Stub(fm => fm.NotRelevantComments).Return(commentable);
+
+ var assessmentSection = mocks.Stub();
+ assessmentSection.Stub(s => s.GetFailureMechanisms()).Return(new[]
+ {
+ failureMechanism
+ });
+
+ mocks.ReplayAll();
+
+ using (var view = new CommentView
+ {
+ Data = commentable
+ })
+ {
+ // Call
+ var closeForData = info.CloseForData(view, assessmentSection);
+
+ // Assert
+ Assert.IsTrue(closeForData);
+ }
+ mocks.VerifyAll();
+ }
+
+ [Test]
public void CloseForData_ViewDataIsCalculationOfDeletedFailureMechanismContext_ReturnTrue()
{
// Setup
@@ -343,6 +488,9 @@
{
calculation
});
+ failureMechanism.Stub(fm => fm.InputComments).Return(new Commentable());
+ failureMechanism.Stub(fm => fm.OutputComments).Return(new Commentable());
+ failureMechanism.Stub(fm => fm.NotRelevantComments).Return(new Commentable());
mocks.ReplayAll();
@@ -375,6 +523,9 @@
{
deletedCalculation
});
+ deletedfailureMechanism.Stub(fm => fm.InputComments).Return(new Commentable());
+ deletedfailureMechanism.Stub(fm => fm.OutputComments).Return(new Commentable());
+ deletedfailureMechanism.Stub(fm => fm.NotRelevantComments).Return(new Commentable());
mocks.ReplayAll();
@@ -403,6 +554,9 @@
{
calculation
});
+ failureMechanism.Stub(fm => fm.InputComments).Return(new Commentable());
+ failureMechanism.Stub(fm => fm.OutputComments).Return(new Commentable());
+ failureMechanism.Stub(fm => fm.NotRelevantComments).Return(new Commentable());
mocks.ReplayAll();
@@ -433,6 +587,9 @@
{
deletedCalculation
});
+ failureMechanism.Stub(fm => fm.InputComments).Return(new Commentable());
+ failureMechanism.Stub(fm => fm.OutputComments).Return(new Commentable());
+ failureMechanism.Stub(fm => fm.NotRelevantComments).Return(new Commentable());
mocks.ReplayAll();
@@ -451,6 +608,34 @@
}
[Test]
+ public void CloseForData_ViewDataIsCommentableButNotOfDeletedFailureMechanism_ReturnFalse()
+ {
+ // Setup
+ var viewDataCommentable = new Commentable();
+
+ var failureMechanism = mocks.Stub();
+ failureMechanism.Stub(fm => fm.Calculations).Return(Enumerable.Empty());
+ failureMechanism.Stub(fm => fm.InputComments).Return(new Commentable());
+ failureMechanism.Stub(fm => fm.OutputComments).Return(new Commentable());
+ failureMechanism.Stub(fm => fm.NotRelevantComments).Return(new Commentable());
+
+ mocks.ReplayAll();
+
+ using (var view = new CommentView
+ {
+ Data = viewDataCommentable
+ })
+ {
+ // Call
+ var closeForData = info.CloseForData(view, failureMechanism);
+
+ // Assert
+ Assert.IsFalse(closeForData);
+ }
+ mocks.VerifyAll();
+ }
+
+ [Test]
public void CloseForData_ViewCorrespondingToRemovedCalculationItem_ReturnsTrue()
{
// Setup