Index: Ringtoets/Common/src/Ringtoets.Common.Forms/TreeNodeInfos/RingtoetsContextMenuBuilder.cs
===================================================================
diff -u -r578037b5080f7a4820286ea02c6b4c322a8b1b09 -r37fdad457c3ca89b8d5483bf2796b1ccb11ffdd5
--- Ringtoets/Common/src/Ringtoets.Common.Forms/TreeNodeInfos/RingtoetsContextMenuBuilder.cs (.../RingtoetsContextMenuBuilder.cs) (revision 578037b5080f7a4820286ea02c6b4c322a8b1b09)
+++ Ringtoets/Common/src/Ringtoets.Common.Forms/TreeNodeInfos/RingtoetsContextMenuBuilder.cs (.../RingtoetsContextMenuBuilder.cs) (revision 37fdad457c3ca89b8d5483bf2796b1ccb11ffdd5)
@@ -54,7 +54,7 @@
/// The itself.
public RingtoetsContextMenuBuilder AddCreateCalculationGroupItem(CalculationGroup calculationGroup)
{
- contextMenuBuilder.AddCustomItem(ringtoetsContextMenuItemFactory.CreateAddCalculationGroupItem(calculationGroup));
+ contextMenuBuilder.AddCustomItem(RingtoetsContextMenuItemFactory.CreateAddCalculationGroupItem(calculationGroup));
return this;
}
@@ -70,7 +70,7 @@
Action addCalculationAction)
where TCalculationContext : ICalculationContext
{
- contextMenuBuilder.AddCustomItem(ringtoetsContextMenuItemFactory.CreateAddCalculationItem(calculationGroupContext, addCalculationAction));
+ contextMenuBuilder.AddCustomItem(RingtoetsContextMenuItemFactory.CreateAddCalculationItem(calculationGroupContext, addCalculationAction));
return this;
}
@@ -81,7 +81,7 @@
/// The itself.
public RingtoetsContextMenuBuilder AddClearAllCalculationOutputInGroupItem(CalculationGroup calculationGroup)
{
- contextMenuBuilder.AddCustomItem(ringtoetsContextMenuItemFactory.CreateClearAllCalculationOutputInGroupItem(calculationGroup));
+ contextMenuBuilder.AddCustomItem(RingtoetsContextMenuItemFactory.CreateClearAllCalculationOutputInGroupItem(calculationGroup));
return this;
}
@@ -92,14 +92,16 @@
/// The calculation group to perform all calculations for.
/// The calculation group context belonging to the calculation group.
/// The action that performs all calculations.
+ /// The func that checks if the item is enabled.
/// The itself.
public RingtoetsContextMenuBuilder AddPerformAllCalculationsInGroupItem(
CalculationGroup calculationGroup,
TCalculationContext calculationGroupContext,
- Action calculateAllAction)
+ Action calculateAllAction,
+ Func isEnabledFunc)
where TCalculationContext : ICalculationContext
{
- contextMenuBuilder.AddCustomItem(ringtoetsContextMenuItemFactory.CreatePerformAllCalculationsInGroupItem(calculationGroup, calculationGroupContext, calculateAllAction));
+ contextMenuBuilder.AddCustomItem(RingtoetsContextMenuItemFactory.CreatePerformAllCalculationsInGroupItem(calculationGroup, calculationGroupContext, calculateAllAction, isEnabledFunc));
return this;
}
@@ -121,7 +123,7 @@
where TCalculationContext : ICalculationContext
where TCalculation : ICalculation
{
- contextMenuBuilder.AddCustomItem(ringtoetsContextMenuItemFactory.CreatePerformCalculationItem(calculation, calculationContext, calculateAction, isEnabledFunc));
+ contextMenuBuilder.AddCustomItem(RingtoetsContextMenuItemFactory.CreatePerformCalculationItem(calculation, calculationContext, calculateAction, isEnabledFunc));
return this;
}
@@ -132,7 +134,7 @@
/// The itself.
public RingtoetsContextMenuBuilder AddClearCalculationOutputItem(ICalculation calculation)
{
- contextMenuBuilder.AddCustomItem(ringtoetsContextMenuItemFactory.CreateClearCalculationOutputItem(calculation));
+ contextMenuBuilder.AddCustomItem(RingtoetsContextMenuItemFactory.CreateClearCalculationOutputItem(calculation));
return this;
}
@@ -143,7 +145,7 @@
/// The itself.
public RingtoetsContextMenuBuilder AddDisabledChangeRelevancyItem(IFailureMechanismContext failureMechanismContext)
{
- contextMenuBuilder.AddCustomItem(ringtoetsContextMenuItemFactory.CreateDisabledChangeRelevancyItem(failureMechanismContext));
+ contextMenuBuilder.AddCustomItem(RingtoetsContextMenuItemFactory.CreateDisabledChangeRelevancyItem(failureMechanismContext));
return this;
}
@@ -170,7 +172,7 @@
Action calculateAllAction)
where TFailureMechanismContext : IFailureMechanismContext
{
- contextMenuBuilder.AddCustomItem(ringtoetsContextMenuItemFactory.CreatePerformAllCalculationsInFailureMechanismItem(failureMechanismContext, calculateAllAction));
+ contextMenuBuilder.AddCustomItem(RingtoetsContextMenuItemFactory.CreatePerformAllCalculationsInFailureMechanismItem(failureMechanismContext, calculateAllAction));
return this;
}
Index: Ringtoets/Common/src/Ringtoets.Common.Forms/TreeNodeInfos/RingtoetsContextMenuItemFactory.cs
===================================================================
diff -u -r578037b5080f7a4820286ea02c6b4c322a8b1b09 -r37fdad457c3ca89b8d5483bf2796b1ccb11ffdd5
--- Ringtoets/Common/src/Ringtoets.Common.Forms/TreeNodeInfos/RingtoetsContextMenuItemFactory.cs (.../RingtoetsContextMenuItemFactory.cs) (revision 578037b5080f7a4820286ea02c6b4c322a8b1b09)
+++ Ringtoets/Common/src/Ringtoets.Common.Forms/TreeNodeInfos/RingtoetsContextMenuItemFactory.cs (.../RingtoetsContextMenuItemFactory.cs) (revision 37fdad457c3ca89b8d5483bf2796b1ccb11ffdd5)
@@ -43,7 +43,7 @@
///
/// The calculation group to add the new calculation groups to.
/// The created .
- public StrictContextMenuItem CreateAddCalculationGroupItem(CalculationGroup calculationGroup)
+ public static StrictContextMenuItem CreateAddCalculationGroupItem(CalculationGroup calculationGroup)
{
return new StrictContextMenuItem(
Resources.CalculationGroup_Add_CalculationGroup,
@@ -59,7 +59,7 @@
/// The calculation group context belonging to the calculation group.
/// The action for adding a calculation to the calculation group.
/// The created .
- public StrictContextMenuItem CreateAddCalculationItem(
+ public static StrictContextMenuItem CreateAddCalculationItem(
TCalculationContext calculationGroupContext,
Action addCalculationAction)
where TCalculationContext : ICalculationContext
@@ -76,7 +76,7 @@
///
/// The calculation group to clear the output for.
/// The created .
- public StrictContextMenuItem CreateClearAllCalculationOutputInGroupItem(CalculationGroup calculationGroup)
+ public static StrictContextMenuItem CreateClearAllCalculationOutputInGroupItem(CalculationGroup calculationGroup)
{
var clearAllItem = new StrictContextMenuItem(
Resources.Clear_all_output,
@@ -100,19 +100,29 @@
/// The calculation group to perform all calculations for.
/// The calculation group context belonging to the calculation group.
/// The action that performs all calculations.
+ /// The func that checks if the item is enabled.
/// The created .
- public StrictContextMenuItem CreatePerformAllCalculationsInGroupItem(
+ public static StrictContextMenuItem CreatePerformAllCalculationsInGroupItem(
CalculationGroup calculationGroup,
TCalculationContext calculationGroupContext,
- Action calculateAllAction)
+ Action calculateAllAction,
+ Func isEnabledFunc)
where TCalculationContext : ICalculationContext
{
var performAllItem = new StrictContextMenuItem(
Resources.Calculate_all,
Resources.CalculationGroup_CalculateAll_ToolTip,
Resources.CalculateAllIcon,
- (o, args) => calculateAllAction(calculationGroup, calculationGroupContext));
+ (o, args) => calculateAllAction(calculationGroup, calculationGroupContext))
+ {
+ Enabled = isEnabledFunc(calculationGroupContext)
+ };
+ if (!performAllItem.Enabled)
+ {
+ return performAllItem;
+ }
+
if (!calculationGroup.GetCalculations().Any())
{
performAllItem.Enabled = false;
@@ -132,7 +142,7 @@
/// The action that performs the calculation.
/// The func that checks if the item is enabled.
/// The created .
- public StrictContextMenuItem CreatePerformCalculationItem(
+ public static StrictContextMenuItem CreatePerformCalculationItem(
TCalculation calculation,
TCalculationContext calculationContext,
Action calculateAction,
@@ -155,7 +165,7 @@
///
/// The calculation to clear the output for.
/// The created .
- public StrictContextMenuItem CreateClearCalculationOutputItem(ICalculation calculation)
+ public static StrictContextMenuItem CreateClearCalculationOutputItem(ICalculation calculation)
{
var clearOutputItem = new StrictContextMenuItem(
Resources.Clear_output,
@@ -177,7 +187,7 @@
///
/// The failure mechanism context belonging to the failure mechanism.
/// The created .
- public StrictContextMenuItem CreateDisabledChangeRelevancyItem(IFailureMechanismContext failureMechanismContext)
+ public static StrictContextMenuItem CreateDisabledChangeRelevancyItem(IFailureMechanismContext failureMechanismContext)
{
return new StrictContextMenuItem(
Resources.FailureMechanismContextMenuStrip_Is_relevant,
@@ -218,7 +228,7 @@
/// The failure mechanism to perform all calculations for.
/// The action that performs all calculations.
/// The created .
- public StrictContextMenuItem CreatePerformAllCalculationsInFailureMechanismItem(
+ public static StrictContextMenuItem CreatePerformAllCalculationsInFailureMechanismItem(
TFailureMechanismContext failureMechanismContext,
Action calculateAllAction)
where TFailureMechanismContext : IFailureMechanismContext
Index: Ringtoets/Common/test/Ringtoets.Common.Forms.Test/TreeNodeInfos/RingtoetsContextMenuBuilderTest.cs
===================================================================
diff -u -r578037b5080f7a4820286ea02c6b4c322a8b1b09 -r37fdad457c3ca89b8d5483bf2796b1ccb11ffdd5
--- Ringtoets/Common/test/Ringtoets.Common.Forms.Test/TreeNodeInfos/RingtoetsContextMenuBuilderTest.cs (.../RingtoetsContextMenuBuilderTest.cs) (revision 578037b5080f7a4820286ea02c6b4c322a8b1b09)
+++ Ringtoets/Common/test/Ringtoets.Common.Forms.Test/TreeNodeInfos/RingtoetsContextMenuBuilderTest.cs (.../RingtoetsContextMenuBuilderTest.cs) (revision 37fdad457c3ca89b8d5483bf2796b1ccb11ffdd5)
@@ -201,7 +201,7 @@
var ringtoetsContextMenuBuilder = new RingtoetsContextMenuBuilder(contextMenuBuilder);
// Call
- var result = ringtoetsContextMenuBuilder.AddPerformAllCalculationsInGroupItem(calculationGroup, calculationGroupContext, null).Build();
+ var result = ringtoetsContextMenuBuilder.AddPerformAllCalculationsInGroupItem(calculationGroup, calculationGroupContext, null, context => true).Build();
// Assert
Assert.IsInstanceOf(result);
@@ -234,7 +234,7 @@
var ringtoetsContextMenuBuilder = new RingtoetsContextMenuBuilder(contextMenuBuilder);
// Call
- var result = ringtoetsContextMenuBuilder.AddPerformAllCalculationsInGroupItem(calculationGroup, calculationGroupContext, null).Build();
+ var result = ringtoetsContextMenuBuilder.AddPerformAllCalculationsInGroupItem(calculationGroup, calculationGroupContext, null, context => true).Build();
// Assert
Assert.IsInstanceOf(result);
@@ -250,7 +250,7 @@
}
[Test]
- public void AddPerformAllCalculationsInGroupItem_WhenBuild_ItemAddedToContextMenu()
+ public void AddPerformCalculationItem_WhenBuildWithAllValidData_ItemAddedToContextMenuEnabled()
{
// Setup
var mocks = new MockRepository();
@@ -283,6 +283,40 @@
}
[Test]
+ public void AddPerformCalculationItem_WhenBuildWithoutAllValidData_ItemAddedToContextMenuDisabled()
+ {
+ // Setup
+ var mocks = new MockRepository();
+ var applicationFeatureCommandsMock = mocks.StrictMock();
+ var exportImportHandlerMock = mocks.StrictMock();
+ var viewCommandsMock = mocks.StrictMock();
+ var treeViewControlMock = mocks.StrictMock();
+ var failureMechanisMock = mocks.StrictMock();
+
+ mocks.ReplayAll();
+
+ var calculation = new TestCalculation();
+ var calculationContext = new TestCalculationContext(calculation, failureMechanisMock);
+ var contextMenuBuilder = new ContextMenuBuilder(applicationFeatureCommandsMock, exportImportHandlerMock, viewCommandsMock, calculation, treeViewControlMock);
+ var ringtoetsContextMenuBuilder = new RingtoetsContextMenuBuilder(contextMenuBuilder);
+
+ // Call
+ var result = ringtoetsContextMenuBuilder.AddPerformCalculationItem(calculation, calculationContext, null, context => false).Build();
+
+ // Assert
+ Assert.IsInstanceOf(result);
+ Assert.AreEqual(1, result.Items.Count);
+
+ TestHelper.AssertContextMenuStripContainsItem(result, 0,
+ RingtoetsFormsResources.Calculate,
+ RingtoetsFormsResources.Calculate_ToolTip,
+ RingtoetsFormsResources.CalculateIcon,
+ false);
+
+ mocks.VerifyAll();
+ }
+
+ [Test]
public void AddClearCalculationOutputItem_WhenBuildWithCalculationWithOutput_ItemAddedToContextMenuEnabled()
{
// Setup
Index: Ringtoets/Common/test/Ringtoets.Common.Forms.Test/TreeNodeInfos/RingtoetsContextMenuItemFactoryTest.cs
===================================================================
diff -u -r578037b5080f7a4820286ea02c6b4c322a8b1b09 -r37fdad457c3ca89b8d5483bf2796b1ccb11ffdd5
--- Ringtoets/Common/test/Ringtoets.Common.Forms.Test/TreeNodeInfos/RingtoetsContextMenuItemFactoryTest.cs (.../RingtoetsContextMenuItemFactoryTest.cs) (revision 578037b5080f7a4820286ea02c6b4c322a8b1b09)
+++ Ringtoets/Common/test/Ringtoets.Common.Forms.Test/TreeNodeInfos/RingtoetsContextMenuItemFactoryTest.cs (.../RingtoetsContextMenuItemFactoryTest.cs) (revision 37fdad457c3ca89b8d5483bf2796b1ccb11ffdd5)
@@ -52,7 +52,7 @@
var calculationGroup = new CalculationGroup();
// Call
- var toolStripItem = factory.CreateAddCalculationGroupItem(calculationGroup);
+ var toolStripItem = RingtoetsContextMenuItemFactory.CreateAddCalculationGroupItem(calculationGroup);
// Assert
Assert.AreEqual(RingtoetsFormsResources.CalculationGroup_Add_CalculationGroup, toolStripItem.Text);
@@ -76,7 +76,7 @@
// Precondition
Assert.AreEqual(1, calculationGroup.Children.Count);
- var toolStripItem = factory.CreateAddCalculationGroupItem(calculationGroup);
+ var toolStripItem = RingtoetsContextMenuItemFactory.CreateAddCalculationGroupItem(calculationGroup);
// Call
toolStripItem.PerformClick();
@@ -102,7 +102,7 @@
var calculationGroupContext = new TestCalculationGroupContext(calculationGroup, failureMechanismMock);
// Call
- var toolStripItem = factory.CreateAddCalculationItem(calculationGroupContext, context => { });
+ var toolStripItem = RingtoetsContextMenuItemFactory.CreateAddCalculationItem(calculationGroupContext, context => { });
// Assert
Assert.AreEqual(RingtoetsFormsResources.CalculationGroup_Add_Calculation, toolStripItem.Text);
@@ -125,7 +125,7 @@
var counter = 0;
var calculationGroup = new CalculationGroup();
var calculationGroupContext = new TestCalculationGroupContext(calculationGroup, failureMechanismMock);
- var toolStripItem = factory.CreateAddCalculationItem(calculationGroupContext, context => counter++);
+ var toolStripItem = RingtoetsContextMenuItemFactory.CreateAddCalculationItem(calculationGroupContext, context => counter++);
// Call
toolStripItem.PerformClick();
@@ -156,7 +156,7 @@
};
// Call
- var toolStripItem = factory.CreateClearAllCalculationOutputInGroupItem(calculationGroup);
+ var toolStripItem = RingtoetsContextMenuItemFactory.CreateClearAllCalculationOutputInGroupItem(calculationGroup);
// Assert
Assert.AreEqual(RingtoetsFormsResources.Clear_all_output, toolStripItem.Text);
@@ -187,7 +187,7 @@
};
// Call
- var toolStripItem = factory.CreateClearAllCalculationOutputInGroupItem(calculationGroup);
+ var toolStripItem = RingtoetsContextMenuItemFactory.CreateClearAllCalculationOutputInGroupItem(calculationGroup);
// Assert
Assert.AreEqual(RingtoetsFormsResources.Clear_all_output, toolStripItem.Text);
@@ -244,7 +244,7 @@
}
};
- var toolStripItem = factory.CreateClearAllCalculationOutputInGroupItem(calculationGroup);
+ var toolStripItem = RingtoetsContextMenuItemFactory.CreateClearAllCalculationOutputInGroupItem(calculationGroup);
// Call
toolStripItem.PerformClick();
@@ -293,7 +293,7 @@
}
};
- var toolStripItem = factory.CreateClearAllCalculationOutputInGroupItem(calculationGroup);
+ var toolStripItem = RingtoetsContextMenuItemFactory.CreateClearAllCalculationOutputInGroupItem(calculationGroup);
// Call
toolStripItem.PerformClick();
@@ -322,7 +322,7 @@
var calculationGroupContext = new TestCalculationGroupContext(calculationGroup, failureMechanismMock);
// Call
- var toolStripItem = factory.CreatePerformAllCalculationsInGroupItem(calculationGroup, calculationGroupContext, null);
+ var toolStripItem = RingtoetsContextMenuItemFactory.CreatePerformAllCalculationsInGroupItem(calculationGroup, calculationGroupContext, null, context => true);
// Assert
Assert.AreEqual(RingtoetsFormsResources.Calculate_all, toolStripItem.Text);
@@ -346,7 +346,7 @@
var calculationGroupContext = new TestCalculationGroupContext(calculationGroup, failureMechanismMock);
// Call
- var toolStripItem = factory.CreatePerformAllCalculationsInGroupItem(calculationGroup, calculationGroupContext, null);
+ var toolStripItem = RingtoetsContextMenuItemFactory.CreatePerformAllCalculationsInGroupItem(calculationGroup, calculationGroupContext, null, context => true);
// Assert
Assert.AreEqual(RingtoetsFormsResources.Calculate_all, toolStripItem.Text);
@@ -358,6 +358,68 @@
}
[Test]
+ public void CreatePerformAllCalculationsInGroupItem_IsEnabledFuncTrue_CreatesDecoratedAndEnabledItem()
+ {
+ // Setup
+ var mocks = new MockRepository();
+ var failureMechanismMock = mocks.StrictMock();
+
+ mocks.ReplayAll();
+
+ var calculation = new TestCalculation();
+ var calculationGroup = new CalculationGroup
+ {
+ Children =
+ {
+ calculation
+ }
+ };
+ var calculationGroupContext = new TestCalculationGroupContext(calculationGroup, failureMechanismMock);
+
+ // Call
+ var toolStripItem = RingtoetsContextMenuItemFactory.CreatePerformAllCalculationsInGroupItem(calculationGroup, calculationGroupContext, null, context => true);
+
+ // Assert
+ Assert.AreEqual(RingtoetsFormsResources.Calculate_all, toolStripItem.Text);
+ Assert.AreEqual(RingtoetsFormsResources.CalculationGroup_CalculateAll_ToolTip, toolStripItem.ToolTipText);
+ TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.CalculateAllIcon, toolStripItem.Image);
+ Assert.IsTrue(toolStripItem.Enabled);
+
+ mocks.VerifyAll();
+ }
+
+ [Test]
+ public void CreatePerformAllCalculationsInGroupItem_IsEnabledFuncFalse_CreatesDecoratedAndEnabledItem()
+ {
+ // Setup
+ var mocks = new MockRepository();
+ var failureMechanismMock = mocks.StrictMock();
+
+ mocks.ReplayAll();
+
+ var calculation = new TestCalculation();
+ var calculationGroup = new CalculationGroup
+ {
+ Children =
+ {
+ calculation
+ }
+ };
+ var calculationGroupContext = new TestCalculationGroupContext(calculationGroup, failureMechanismMock);
+
+ // Call
+ var toolStripItem = RingtoetsContextMenuItemFactory.CreatePerformAllCalculationsInGroupItem(calculationGroup, calculationGroupContext, null, context => false);
+
+ // Assert
+ Assert.AreEqual(RingtoetsFormsResources.Calculate_all, toolStripItem.Text);
+ Assert.AreEqual(RingtoetsFormsResources.CalculationGroup_CalculateAll_ToolTip, toolStripItem.ToolTipText);
+ TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.CalculateAllIcon, toolStripItem.Image);
+ Assert.IsFalse(toolStripItem.Enabled);
+
+ mocks.VerifyAll();
+ }
+
+ [Test]
public void CreatePerformAllCalculationsInGroupItem_PerformClickOnCreatedItem_PerformAllCalculationMethodPerformed()
{
// Setup
@@ -378,7 +440,7 @@
var calculationGroupContext = new TestCalculationGroupContext(calculationGroup, failureMechanisMock);
- var toolStripItem = factory.CreatePerformAllCalculationsInGroupItem(calculationGroup, calculationGroupContext, (group, context) => counter++);
+ var toolStripItem = RingtoetsContextMenuItemFactory.CreatePerformAllCalculationsInGroupItem(calculationGroup, calculationGroupContext, (group, context) => counter++, context => true);
// Call
toolStripItem.PerformClick();
@@ -402,7 +464,7 @@
var calculationContext = new TestCalculationContext(calculation, failureMechanismMock);
// Call
- var toolStripItem = factory.CreatePerformCalculationItem(calculation, calculationContext, null, context => true);
+ var toolStripItem = RingtoetsContextMenuItemFactory.CreatePerformCalculationItem(calculation, calculationContext, null, context => true);
// Assert
Assert.AreEqual(RingtoetsFormsResources.Calculate, toolStripItem.Text);
@@ -426,7 +488,7 @@
var calculationContext = new TestCalculationContext(calculation, failureMechanisMock);
// Call
- var toolStripItem = factory.CreatePerformCalculationItem(calculation, calculationContext, null, context => false);
+ var toolStripItem = RingtoetsContextMenuItemFactory.CreatePerformCalculationItem(calculation, calculationContext, null, context => false);
// Assert
Assert.AreEqual(RingtoetsFormsResources.Calculate, toolStripItem.Text);
@@ -450,7 +512,7 @@
var calculationContext = new TestCalculationContext(calculation, failureMechanismMock);
var counter = 0;
- var toolStripItem = factory.CreatePerformCalculationItem(calculation, calculationContext, (calc, context) => counter++, context => true);
+ var toolStripItem = RingtoetsContextMenuItemFactory.CreatePerformCalculationItem(calculation, calculationContext, (calc, context) => counter++, context => true);
// Call
toolStripItem.PerformClick();
@@ -473,7 +535,7 @@
mocks.ReplayAll();
// Call
- var toolStripItem = factory.CreateClearCalculationOutputItem(calculationWithOutputMock);
+ var toolStripItem = RingtoetsContextMenuItemFactory.CreateClearCalculationOutputItem(calculationWithOutputMock);
// Assert
Assert.AreEqual(RingtoetsFormsResources.Clear_output, toolStripItem.Text);
@@ -496,7 +558,7 @@
mocks.ReplayAll();
// Call
- var toolStripItem = factory.CreateClearCalculationOutputItem(calculationWithOutputMock);
+ var toolStripItem = RingtoetsContextMenuItemFactory.CreateClearCalculationOutputItem(calculationWithOutputMock);
// Assert
Assert.AreEqual(RingtoetsFormsResources.Clear_output, toolStripItem.Text);
@@ -530,7 +592,7 @@
messageBox.ClickOk();
};
- var toolStripItem = factory.CreateClearCalculationOutputItem(calculationWithOutputMock);
+ var toolStripItem = RingtoetsContextMenuItemFactory.CreateClearCalculationOutputItem(calculationWithOutputMock);
// Call
toolStripItem.PerformClick();
@@ -559,7 +621,7 @@
messageBox.ClickCancel();
};
- var toolStripItem = factory.CreateClearCalculationOutputItem(calculationWithOutputMock);
+ var toolStripItem = RingtoetsContextMenuItemFactory.CreateClearCalculationOutputItem(calculationWithOutputMock);
// Call
toolStripItem.PerformClick();
@@ -577,7 +639,7 @@
mocks.ReplayAll();
// Call
- var toolStripItem = factory.CreateDisabledChangeRelevancyItem(failureMechanismContextMock);
+ var toolStripItem = RingtoetsContextMenuItemFactory.CreateDisabledChangeRelevancyItem(failureMechanismContextMock);
// Assert
Assert.AreEqual(RingtoetsFormsResources.FailureMechanismContextMenuStrip_Is_relevant, toolStripItem.Text);
@@ -602,7 +664,7 @@
mocks.ReplayAll();
- var toolStripItem = factory.CreateDisabledChangeRelevancyItem(failureMechanismContextMock);
+ var toolStripItem = RingtoetsContextMenuItemFactory.CreateDisabledChangeRelevancyItem(failureMechanismContextMock);
// Call
toolStripItem.PerformClick();
Index: Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Plugin/GrassCoverErosionInwardsGuiPlugin.cs
===================================================================
diff -u -r578037b5080f7a4820286ea02c6b4c322a8b1b09 -r37fdad457c3ca89b8d5483bf2796b1ccb11ffdd5
--- Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Plugin/GrassCoverErosionInwardsGuiPlugin.cs (.../GrassCoverErosionInwardsGuiPlugin.cs) (revision 578037b5080f7a4820286ea02c6b4c322a8b1b09)
+++ Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Plugin/GrassCoverErosionInwardsGuiPlugin.cs (.../GrassCoverErosionInwardsGuiPlugin.cs) (revision 37fdad457c3ca89b8d5483bf2796b1ccb11ffdd5)
@@ -204,6 +204,11 @@
calc)).ToList());
}
+ private static bool AllDataAvailable(IAssessmentSection assessmentSection, GrassCoverErosionInwardsFailureMechanism failureMechanism)
+ {
+ return assessmentSection.HydraulicBoundaryDatabase != null && failureMechanism.Sections.Any();
+ }
+
#region GrassCoverErosionInwards TreeNodeInfo
private object[] FailureMechanismEnabledChildNodeObjects(GrassCoverErosionInwardsFailureMechanismContext grassCoverErosionInwardsFailureMechanismContext)
@@ -349,7 +354,7 @@
builder.AddCreateCalculationGroupItem(group);
builder.AddCreateCalculationItem(nodeData, AddCalculation);
builder.AddSeparator();
- builder.AddPerformAllCalculationsInGroupItem(group, nodeData, CalculateAll);
+ builder.AddPerformAllCalculationsInGroupItem(group, nodeData, CalculateAll, EnablePerformAllCalculationsInGroup);
builder.AddClearAllCalculationOutputInGroupItem(group);
builder.AddSeparator();
@@ -370,8 +375,13 @@
.Build();
}
- private void CalculationGroupContextOnNodeRemoved(GrassCoverErosionInwardsCalculationGroupContext nodeData, object parentNodeData)
+ private static bool EnablePerformAllCalculationsInGroup(GrassCoverErosionInwardsCalculationGroupContext context)
{
+ return AllDataAvailable(context.AssessmentSection, context.FailureMechanism);
+ }
+
+ private static void CalculationGroupContextOnNodeRemoved(GrassCoverErosionInwardsCalculationGroupContext nodeData, object parentNodeData)
+ {
var parentGroupContext = (GrassCoverErosionInwardsCalculationGroupContext) parentNodeData;
parentGroupContext.WrappedData.Children.Remove(nodeData.WrappedData);
@@ -428,9 +438,9 @@
.Build();
}
- private bool EnablePerformCalculation(GrassCoverErosionInwardsCalculationContext context)
+ private static bool EnablePerformCalculation(GrassCoverErosionInwardsCalculationContext context)
{
- return context.AssessmentSection.HydraulicBoundaryDatabase != null && context.FailureMechanism.Sections.Any();
+ return AllDataAvailable(context.AssessmentSection, context.FailureMechanism);
}
private void PerformCalculation(GrassCoverErosionInwardsCalculation calculation, GrassCoverErosionInwardsCalculationContext context)
Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/TreeNodeInfos/GrassCoverErosionInwardsCalculationGroupContextTreeNodeInfoTest.cs
===================================================================
diff -u -reaa8b3e276e1a0a6a4d0a2f96016879d8d12d394 -r37fdad457c3ca89b8d5483bf2796b1ccb11ffdd5
--- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/TreeNodeInfos/GrassCoverErosionInwardsCalculationGroupContextTreeNodeInfoTest.cs (.../GrassCoverErosionInwardsCalculationGroupContextTreeNodeInfoTest.cs) (revision eaa8b3e276e1a0a6a4d0a2f96016879d8d12d394)
+++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/TreeNodeInfos/GrassCoverErosionInwardsCalculationGroupContextTreeNodeInfoTest.cs (.../GrassCoverErosionInwardsCalculationGroupContextTreeNodeInfoTest.cs) (revision 37fdad457c3ca89b8d5483bf2796b1ccb11ffdd5)
@@ -22,6 +22,7 @@
using System.Linq;
using System.Windows.Forms;
using Core.Common.Base;
+using Core.Common.Base.Geometry;
using Core.Common.Controls.TreeView;
using Core.Common.Gui;
using Core.Common.Gui.Commands;
@@ -32,9 +33,11 @@
using Rhino.Mocks;
using Ringtoets.Common.Data.AssessmentSection;
using Ringtoets.Common.Data.Calculation;
+using Ringtoets.Common.Data.FailureMechanism;
using Ringtoets.GrassCoverErosionInwards.Data;
using Ringtoets.GrassCoverErosionInwards.Forms.PresentationObjects;
using Ringtoets.GrassCoverErosionInwards.Plugin;
+using Ringtoets.HydraRing.Data;
using CoreCommonGuiResources = Core.Common.Gui.Properties.Resources;
using RingtoetsFormsResources = Ringtoets.Common.Forms.Properties.Resources;
using GrassCoverErosionInwardsFormResources = Ringtoets.GrassCoverErosionInwards.Forms.Properties.Resources;
@@ -78,12 +81,12 @@
{
// Setup
var group = new CalculationGroup();
- var failureMechanismMock = mocks.StrictMock();
+ var failureMechanism = new GrassCoverErosionInwardsFailureMechanism();
var assessmentSectionMock = mocks.StrictMock();
mocks.ReplayAll();
var groupContext = new GrassCoverErosionInwardsCalculationGroupContext(group,
- failureMechanismMock,
+ failureMechanism,
assessmentSectionMock);
// Call
@@ -137,11 +140,14 @@
// Setup
var group = new CalculationGroup();
- var failureMechanismMock = mocks.StrictMock();
+ var failureMechanism = new GrassCoverErosionInwardsFailureMechanism();
+ failureMechanism.AddSection(new FailureMechanismSection("test", new[] { new Point2D(0, 0) }));
+
var assessmentSectionMock = mocks.StrictMock();
+ assessmentSectionMock.Expect(asm => asm.HydraulicBoundaryDatabase).Return(new HydraulicBoundaryDatabase());
var nodeData = new GrassCoverErosionInwardsCalculationGroupContext(group,
- failureMechanismMock,
+ failureMechanism,
assessmentSectionMock);
var applicationFeatureCommandHandler = mocks.Stub();
@@ -230,6 +236,86 @@
}
[Test]
+ public void ContextMenuStrip_NoHydraulicDatabaseAndFailureMechanismSections_ReturnContextMenuWithCalculateAllDisabled()
+ {
+ // Setup
+ var group = new CalculationGroup();
+
+ var failureMechanism = new GrassCoverErosionInwardsFailureMechanism();
+ var assessmentSectionMock = mocks.StrictMock();
+ assessmentSectionMock.Expect(asm => asm.HydraulicBoundaryDatabase).Return(null);
+
+ var nodeData = new GrassCoverErosionInwardsCalculationGroupContext(group,
+ failureMechanism,
+ assessmentSectionMock);
+
+ var applicationFeatureCommandHandler = mocks.Stub();
+ var exportImportHandler = mocks.Stub();
+ var viewCommandsHandler = mocks.StrictMock();
+ var treeViewControl = mocks.StrictMock();
+
+ var menuBuilder = new ContextMenuBuilder(applicationFeatureCommandHandler, exportImportHandler, viewCommandsHandler, nodeData, treeViewControl);
+ gui.Expect(g => g.Get(nodeData, treeViewControl)).Return(menuBuilder);
+
+ treeViewControl.Expect(tvc => tvc.CanExpandOrCollapseForData(nodeData)).Repeat.Twice().Return(false);
+ viewCommandsHandler.Expect(vc => vc.CanOpenViewFor(nodeData)).Return(false);
+
+ mocks.ReplayAll();
+
+ // Call
+ ContextMenuStrip menu = info.ContextMenuStrip(nodeData, null, treeViewControl);
+
+ // Assert
+ TestHelper.AssertContextMenuStripContainsItem(menu, 5,
+ RingtoetsFormsResources.Calculate_all,
+ RingtoetsFormsResources.CalculationGroup_CalculateAll_ToolTip,
+ RingtoetsFormsResources.CalculateIcon,
+ false);
+ mocks.VerifyAll();
+ }
+
+ [Test]
+ public void ContextMenuStrip_HydraulicDatabaseAndFailureMechanismSectionsSet_ReturnContextMenuWithCalculateAllEnabled()
+ {
+ // Setup
+ var group = new CalculationGroup();
+ group.Children.Add(new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput()));
+
+ var failureMechanism = new GrassCoverErosionInwardsFailureMechanism();
+ failureMechanism.AddSection(new FailureMechanismSection("test", new[] { new Point2D(0, 0) }));
+
+ var assessmentSectionMock = mocks.StrictMock();
+ assessmentSectionMock.Expect(asm => asm.HydraulicBoundaryDatabase).Return(new HydraulicBoundaryDatabase());
+
+ var nodeData = new GrassCoverErosionInwardsCalculationGroupContext(group,
+ failureMechanism,
+ assessmentSectionMock);
+
+ var applicationFeatureCommandHandler = mocks.Stub();
+ var exportImportHandler = mocks.Stub();
+ var viewCommandsHandler = mocks.StrictMock();
+ var treeViewControl = mocks.StrictMock();
+
+ var menuBuilder = new ContextMenuBuilder(applicationFeatureCommandHandler, exportImportHandler, viewCommandsHandler, nodeData, treeViewControl);
+ gui.Expect(g => g.Get(nodeData, treeViewControl)).Return(menuBuilder);
+
+ treeViewControl.Expect(tvc => tvc.CanExpandOrCollapseForData(nodeData)).Repeat.Twice().Return(false);
+ viewCommandsHandler.Expect(vc => vc.CanOpenViewFor(nodeData)).Return(false);
+
+ mocks.ReplayAll();
+
+ // Call
+ ContextMenuStrip menu = info.ContextMenuStrip(nodeData, null, treeViewControl);
+
+ // Assert
+ TestHelper.AssertContextMenuStripContainsItem(menu, 5,
+ RingtoetsFormsResources.Calculate_all,
+ RingtoetsFormsResources.CalculationGroup_CalculateAll_ToolTip,
+ RingtoetsFormsResources.CalculateIcon);
+ mocks.VerifyAll();
+ }
+
+ [Test]
public void ContextmenuStrip_NestedCalculationGroup_ReturnContextMenuWithAllItems()
{
// Setup
@@ -238,15 +324,18 @@
parentGroup.Children.Add(group);
- var failureMechanismMock = mocks.StrictMock();
+ var failureMechanism = new GrassCoverErosionInwardsFailureMechanism();
+ failureMechanism.AddSection(new FailureMechanismSection("test", new[] { new Point2D(0, 0) }));
+
var assessmentSectionMock = mocks.StrictMock();
+ assessmentSectionMock.Expect(asm => asm.HydraulicBoundaryDatabase).Return(new HydraulicBoundaryDatabase());
var parentData = new GrassCoverErosionInwardsCalculationGroupContext(parentGroup,
- failureMechanismMock,
+ failureMechanism,
assessmentSectionMock);
var nodeData = new GrassCoverErosionInwardsCalculationGroupContext(group,
- failureMechanismMock,
+ failureMechanism,
assessmentSectionMock);
var applicationFeatureCommandHandler = mocks.Stub();
@@ -345,13 +434,14 @@
var menuBuilder = new CustomItemsOnlyContextMenuBuilder();
var group = new CalculationGroup();
var parentGroup = new CalculationGroup();
- var failureMechanismMock = mocks.StrictMock();
+ var failureMechanism = new GrassCoverErosionInwardsFailureMechanism();
var assessmentSectionMock = mocks.StrictMock();
+ assessmentSectionMock.Expect(asm => asm.HydraulicBoundaryDatabase).Return(new HydraulicBoundaryDatabase());
var nodeData = new GrassCoverErosionInwardsCalculationGroupContext(group,
- failureMechanismMock,
+ failureMechanism,
assessmentSectionMock);
var parentNodeData = new GrassCoverErosionInwardsCalculationGroupContext(parentGroup,
- failureMechanismMock,
+ failureMechanism,
assessmentSectionMock);
var calculationItem = mocks.Stub();
@@ -395,13 +485,14 @@
var menuBuilder = new CustomItemsOnlyContextMenuBuilder();
var group = new CalculationGroup();
var parentGroup = new CalculationGroup();
- var failureMechanismMock = mocks.StrictMock();
+ var failureMechanism = new GrassCoverErosionInwardsFailureMechanism();
var assessmentSectionMock = mocks.StrictMock();
+ assessmentSectionMock.Expect(asm => asm.HydraulicBoundaryDatabase).Return(new HydraulicBoundaryDatabase());
var nodeData = new GrassCoverErosionInwardsCalculationGroupContext(group,
- failureMechanismMock,
+ failureMechanism,
assessmentSectionMock);
var parentNodeData = new GrassCoverErosionInwardsCalculationGroupContext(parentGroup,
- failureMechanismMock,
+ failureMechanism,
assessmentSectionMock);
var calculationItem = mocks.Stub();
@@ -445,18 +536,18 @@
var observer = mocks.StrictMock();
observer.Expect(o => o.UpdateObserver());
var group = new CalculationGroup();
- var failureMechanismMock = mocks.StrictMock();
+ var failureMechanism = new GrassCoverErosionInwardsFailureMechanism();
var assessmentSectionMock = mocks.StrictMock();
mocks.ReplayAll();
var nodeData = new GrassCoverErosionInwardsCalculationGroupContext(group,
- failureMechanismMock,
+ failureMechanism,
assessmentSectionMock);
var parentGroup = new CalculationGroup();
parentGroup.Children.Add(group);
var parentNodeData = new GrassCoverErosionInwardsCalculationGroupContext(parentGroup,
- failureMechanismMock,
+ failureMechanism,
assessmentSectionMock);
parentNodeData.Attach(observer);
@@ -478,7 +569,7 @@
var observer = mocks.StrictMock();
observer.Expect(o => o.UpdateObserver());
var group = new CalculationGroup();
- var failureMechanismMock = mocks.StrictMock();
+ var failureMechanism = new GrassCoverErosionInwardsFailureMechanism();
var calculation = new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput());
@@ -488,13 +579,13 @@
mocks.ReplayAll();
var nodeData = new GrassCoverErosionInwardsCalculationGroupContext(group,
- failureMechanismMock,
+ failureMechanism,
assessmentSectionMock);
var parentGroup = new CalculationGroup();
parentGroup.Children.Add(group);
var parentNodeData = new GrassCoverErosionInwardsCalculationGroupContext(parentGroup,
- failureMechanismMock,
+ failureMechanism,
assessmentSectionMock);
parentNodeData.Attach(observer);
Index: Ringtoets/Piping/src/Ringtoets.Piping.Plugin/PipingGuiPlugin.cs
===================================================================
diff -u -r578037b5080f7a4820286ea02c6b4c322a8b1b09 -r37fdad457c3ca89b8d5483bf2796b1ccb11ffdd5
--- Ringtoets/Piping/src/Ringtoets.Piping.Plugin/PipingGuiPlugin.cs (.../PipingGuiPlugin.cs) (revision 578037b5080f7a4820286ea02c6b4c322a8b1b09)
+++ Ringtoets/Piping/src/Ringtoets.Piping.Plugin/PipingGuiPlugin.cs (.../PipingGuiPlugin.cs) (revision 37fdad457c3ca89b8d5483bf2796b1ccb11ffdd5)
@@ -530,7 +530,7 @@
.AddCreateCalculationItem(nodeData, AddCalculationScenario)
.AddSeparator()
.AddCustomItem(validateAllItem)
- .AddPerformAllCalculationsInGroupItem(group, nodeData, CalculateAll)
+ .AddPerformAllCalculationsInGroupItem(group, nodeData, CalculateAll, context => true)
.AddClearAllCalculationOutputInGroupItem(group)
.AddSeparator();