Index: Core/Common/src/Core.Common.Controls.Swf/TreeViewControls/ITreeNodePresenter.cs
===================================================================
diff -u -r528577e7cac9c86626794fafc6c6c147146c5e84 -r0a222f4f3c0054ec9cc70f94480c0dc504fea411
--- Core/Common/src/Core.Common.Controls.Swf/TreeViewControls/ITreeNodePresenter.cs (.../ITreeNodePresenter.cs) (revision 528577e7cac9c86626794fafc6c6c147146c5e84)
+++ Core/Common/src/Core.Common.Controls.Swf/TreeViewControls/ITreeNodePresenter.cs (.../ITreeNodePresenter.cs) (revision 0a222f4f3c0054ec9cc70f94480c0dc504fea411)
@@ -131,7 +131,7 @@
///
/// Returns context menu based on current data
///
- ContextMenuStrip GetContextMenu(ITreeNode sender, object nodeData);
+ ContextMenuStrip GetContextMenu(ITreeNode node, object nodeData);
///
/// Updates node due to it's property change.
Index: Core/Common/src/Core.Common.Controls.Swf/TreeViewControls/TreeViewNodePresenterBase.cs
===================================================================
diff -u -r528577e7cac9c86626794fafc6c6c147146c5e84 -r0a222f4f3c0054ec9cc70f94480c0dc504fea411
--- Core/Common/src/Core.Common.Controls.Swf/TreeViewControls/TreeViewNodePresenterBase.cs (.../TreeViewNodePresenterBase.cs) (revision 528577e7cac9c86626794fafc6c6c147146c5e84)
+++ Core/Common/src/Core.Common.Controls.Swf/TreeViewControls/TreeViewNodePresenterBase.cs (.../TreeViewNodePresenterBase.cs) (revision 0a222f4f3c0054ec9cc70f94480c0dc504fea411)
@@ -151,7 +151,7 @@
throw new NotImplementedException();
}
- public virtual ContextMenuStrip GetContextMenu(ITreeNode sender, object nodeData)
+ public virtual ContextMenuStrip GetContextMenu(ITreeNode node, object nodeData)
{
return null;
}
Index: Core/Common/src/Core.Common.Gui.Swf/TreeViewNodePresenterBaseForPluginGui.cs
===================================================================
diff -u -ra950714ad9510756331d862aa35695fa0b2ed03b -r0a222f4f3c0054ec9cc70f94480c0dc504fea411
--- Core/Common/src/Core.Common.Gui.Swf/TreeViewNodePresenterBaseForPluginGui.cs (.../TreeViewNodePresenterBaseForPluginGui.cs) (revision a950714ad9510756331d862aa35695fa0b2ed03b)
+++ Core/Common/src/Core.Common.Gui.Swf/TreeViewNodePresenterBaseForPluginGui.cs (.../TreeViewNodePresenterBaseForPluginGui.cs) (revision 0a222f4f3c0054ec9cc70f94480c0dc504fea411)
@@ -20,13 +20,13 @@
public GuiPlugin GuiPlugin { get; set; }
- public override ContextMenuStrip GetContextMenu(ITreeNode sender, object nodeData)
+ public override ContextMenuStrip GetContextMenu(ITreeNode node, object nodeData)
{
if (GuiPlugin == null)
{
return null;
}
- var x = GuiPlugin.GetContextMenu(sender, nodeData);
+ var x = GuiPlugin.GetContextMenu(node, nodeData);
return x;
}
Index: Core/Plugins/src/Core.Plugins.ProjectExplorer/NodePresenters/ProjectNodePresenter.cs
===================================================================
diff -u -r528577e7cac9c86626794fafc6c6c147146c5e84 -r0a222f4f3c0054ec9cc70f94480c0dc504fea411
--- Core/Plugins/src/Core.Plugins.ProjectExplorer/NodePresenters/ProjectNodePresenter.cs (.../ProjectNodePresenter.cs) (revision 528577e7cac9c86626794fafc6c6c147146c5e84)
+++ Core/Plugins/src/Core.Plugins.ProjectExplorer/NodePresenters/ProjectNodePresenter.cs (.../ProjectNodePresenter.cs) (revision 0a222f4f3c0054ec9cc70f94480c0dc504fea411)
@@ -54,7 +54,7 @@
node.Tag = project;
}
- public override ContextMenuStrip GetContextMenu(ITreeNode sender, object nodeData)
+ public override ContextMenuStrip GetContextMenu(ITreeNode node, object nodeData)
{
var addItem = new StrictContextMenuItem(
Resources.AddItem,
@@ -63,7 +63,7 @@
(s, e) => commandHandler.AddNewItem(nodeData));
return contextMenuBuilderProvider
- .Get(sender)
+ .Get(node)
.AddCustomItem(addItem)
.AddSeparator()
.AddExpandAllItem()
Index: Ringtoets/Common/src/Ringtoets.Common.Forms/NodePresenters/CategoryTreeFolderNodePresenter.cs
===================================================================
diff -u -r074232b001ecb5ae110c0b95c05264d4372cbfb5 -r0a222f4f3c0054ec9cc70f94480c0dc504fea411
--- Ringtoets/Common/src/Ringtoets.Common.Forms/NodePresenters/CategoryTreeFolderNodePresenter.cs (.../CategoryTreeFolderNodePresenter.cs) (revision 074232b001ecb5ae110c0b95c05264d4372cbfb5)
+++ Ringtoets/Common/src/Ringtoets.Common.Forms/NodePresenters/CategoryTreeFolderNodePresenter.cs (.../CategoryTreeFolderNodePresenter.cs) (revision 0a222f4f3c0054ec9cc70f94480c0dc504fea411)
@@ -36,10 +36,10 @@
return nodeData.Contents;
}
- protected override ContextMenuStrip GetContextMenu(ITreeNode sender, CategoryTreeFolder nodeData)
+ protected override ContextMenuStrip GetContextMenu(ITreeNode node, CategoryTreeFolder nodeData)
{
return contextMenuBuilderProvider
- .Get(sender)
+ .Get(node)
.AddExpandAllItem()
.AddCollapseAllItem()
.Build();
Index: Ringtoets/Common/src/Ringtoets.Common.Forms/NodePresenters/RingtoetsNodePresenterBase.cs
===================================================================
diff -u -r528577e7cac9c86626794fafc6c6c147146c5e84 -r0a222f4f3c0054ec9cc70f94480c0dc504fea411
--- Ringtoets/Common/src/Ringtoets.Common.Forms/NodePresenters/RingtoetsNodePresenterBase.cs (.../RingtoetsNodePresenterBase.cs) (revision 528577e7cac9c86626794fafc6c6c147146c5e84)
+++ Ringtoets/Common/src/Ringtoets.Common.Forms/NodePresenters/RingtoetsNodePresenterBase.cs (.../RingtoetsNodePresenterBase.cs) (revision 0a222f4f3c0054ec9cc70f94480c0dc504fea411)
@@ -104,9 +104,9 @@
OnNodeSelected((T)nodeData);
}
- public ContextMenuStrip GetContextMenu(ITreeNode sender, object nodeData)
+ public ContextMenuStrip GetContextMenu(ITreeNode node, object nodeData)
{
- return GetContextMenu(sender, (T)nodeData);
+ return GetContextMenu(node, (T)nodeData);
}
public void OnPropertyChanged(object sender, ITreeNode node, PropertyChangedEventArgs e)
@@ -184,7 +184,7 @@
/// Typed implementation of method .
///
///
- protected virtual ContextMenuStrip GetContextMenu(ITreeNode sender, T nodeData)
+ protected virtual ContextMenuStrip GetContextMenu(ITreeNode node, T nodeData)
{
return null;
}
Index: Ringtoets/Integration/src/Ringtoets.Integration.Forms/NodePresenters/AssessmentSectionBaseNodePresenter.cs
===================================================================
diff -u -r074232b001ecb5ae110c0b95c05264d4372cbfb5 -r0a222f4f3c0054ec9cc70f94480c0dc504fea411
--- Ringtoets/Integration/src/Ringtoets.Integration.Forms/NodePresenters/AssessmentSectionBaseNodePresenter.cs (.../AssessmentSectionBaseNodePresenter.cs) (revision 074232b001ecb5ae110c0b95c05264d4372cbfb5)
+++ Ringtoets/Integration/src/Ringtoets.Integration.Forms/NodePresenters/AssessmentSectionBaseNodePresenter.cs (.../AssessmentSectionBaseNodePresenter.cs) (revision 0a222f4f3c0054ec9cc70f94480c0dc504fea411)
@@ -75,10 +75,10 @@
return true;
}
- protected override ContextMenuStrip GetContextMenu(ITreeNode sender, AssessmentSectionBase nodeData)
+ protected override ContextMenuStrip GetContextMenu(ITreeNode node, AssessmentSectionBase nodeData)
{
return contextMenuBuilderProvider
- .Get(sender)
+ .Get(node)
.AddDeleteItem()
.AddSeparator()
.AddExpandAllItem()
Index: Ringtoets/Integration/src/Ringtoets.Integration.Forms/NodePresenters/FailureMechanismContributionNodePresenter.cs
===================================================================
diff -u -r6fc99be8198e5795ca4be54719dab3d1be3c6299 -r0a222f4f3c0054ec9cc70f94480c0dc504fea411
--- Ringtoets/Integration/src/Ringtoets.Integration.Forms/NodePresenters/FailureMechanismContributionNodePresenter.cs (.../FailureMechanismContributionNodePresenter.cs) (revision 6fc99be8198e5795ca4be54719dab3d1be3c6299)
+++ Ringtoets/Integration/src/Ringtoets.Integration.Forms/NodePresenters/FailureMechanismContributionNodePresenter.cs (.../FailureMechanismContributionNodePresenter.cs) (revision 0a222f4f3c0054ec9cc70f94480c0dc504fea411)
@@ -17,10 +17,10 @@
node.Image = Resources.GenericInputOutputIcon;
}
- protected override ContextMenuStrip GetContextMenu(ITreeNode sender, FailureMechanismContribution nodeData)
+ protected override ContextMenuStrip GetContextMenu(ITreeNode node, FailureMechanismContribution nodeData)
{
return contextMenuBuilderProvider
- .Get(sender)
+ .Get(node)
.AddOpenItem()
.Build();
}
Index: Ringtoets/Integration/src/Ringtoets.Integration.Forms/NodePresenters/FailureMechanismNodePresenter.cs
===================================================================
diff -u -r074232b001ecb5ae110c0b95c05264d4372cbfb5 -r0a222f4f3c0054ec9cc70f94480c0dc504fea411
--- Ringtoets/Integration/src/Ringtoets.Integration.Forms/NodePresenters/FailureMechanismNodePresenter.cs (.../FailureMechanismNodePresenter.cs) (revision 074232b001ecb5ae110c0b95c05264d4372cbfb5)
+++ Ringtoets/Integration/src/Ringtoets.Integration.Forms/NodePresenters/FailureMechanismNodePresenter.cs (.../FailureMechanismNodePresenter.cs) (revision 0a222f4f3c0054ec9cc70f94480c0dc504fea411)
@@ -39,7 +39,7 @@
yield return new CategoryTreeFolder(RingtoetsCommonFormsResources.FailureMechanism_Outputs_DisplayName, GetOutputs(nodeData), TreeFolderCategory.Output);
}
- protected override ContextMenuStrip GetContextMenu(ITreeNode sender, FailureMechanismPlaceholder nodeData)
+ protected override ContextMenuStrip GetContextMenu(ITreeNode node, FailureMechanismPlaceholder nodeData)
{
var calculateItem = new StrictContextMenuItem(
RingtoetsCommonFormsResources.Calculate_all,
@@ -58,7 +58,7 @@
Enabled = false
};
- return contextMenuBuilderProvider.Get(sender)
+ return contextMenuBuilderProvider.Get(node)
.AddCustomItem(calculateItem)
.AddCustomItem(clearOutputItem)
.AddSeparator()
Index: Ringtoets/Integration/src/Ringtoets.Integration.Forms/NodePresenters/PlaceholderWithReadonlyNameNodePresenter.cs
===================================================================
diff -u -r6fc99be8198e5795ca4be54719dab3d1be3c6299 -r0a222f4f3c0054ec9cc70f94480c0dc504fea411
--- Ringtoets/Integration/src/Ringtoets.Integration.Forms/NodePresenters/PlaceholderWithReadonlyNameNodePresenter.cs (.../PlaceholderWithReadonlyNameNodePresenter.cs) (revision 6fc99be8198e5795ca4be54719dab3d1be3c6299)
+++ Ringtoets/Integration/src/Ringtoets.Integration.Forms/NodePresenters/PlaceholderWithReadonlyNameNodePresenter.cs (.../PlaceholderWithReadonlyNameNodePresenter.cs) (revision 0a222f4f3c0054ec9cc70f94480c0dc504fea411)
@@ -32,9 +32,9 @@
node.Image = GetIconForPlaceholder(nodeData);
}
- protected override ContextMenuStrip GetContextMenu(ITreeNode sender, PlaceholderWithReadonlyName nodeData)
+ protected override ContextMenuStrip GetContextMenu(ITreeNode node, PlaceholderWithReadonlyName nodeData)
{
- IContextMenuBuilder menuBuilder = contextMenuBuilderProvider.Get(sender);
+ IContextMenuBuilder menuBuilder = contextMenuBuilderProvider.Get(node);
if (nodeData is InputPlaceholder || nodeData is OutputPlaceholder)
{
Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingCalculationContextNodePresenter.cs
===================================================================
diff -u -r528577e7cac9c86626794fafc6c6c147146c5e84 -r0a222f4f3c0054ec9cc70f94480c0dc504fea411
--- Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingCalculationContextNodePresenter.cs (.../PipingCalculationContextNodePresenter.cs) (revision 528577e7cac9c86626794fafc6c6c147146c5e84)
+++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingCalculationContextNodePresenter.cs (.../PipingCalculationContextNodePresenter.cs) (revision 0a222f4f3c0054ec9cc70f94480c0dc504fea411)
@@ -110,7 +110,7 @@
pipingCalculationContext.WrappedData.NotifyObservers();
}
- protected override ContextMenuStrip GetContextMenu(ITreeNode sender, PipingCalculationContext nodeData)
+ protected override ContextMenuStrip GetContextMenu(ITreeNode node, PipingCalculationContext nodeData)
{
PipingCalculation calculation = nodeData.WrappedData;
var validateItem = new StrictContextMenuItem(Resources.PipingCalculationItem_Validate,
@@ -138,7 +138,7 @@
}
return contextMenuBuilderProvider
- .Get(sender)
+ .Get(node)
.AddCustomItem(validateItem)
.AddCustomItem(calculateItem)
.AddCustomItem(clearOutputItem)
Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingCalculationGroupContextNodePresenter.cs
===================================================================
diff -u -r90e159562efbe49fe2c2e348ee04b6a75b4eec13 -r0a222f4f3c0054ec9cc70f94480c0dc504fea411
--- Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingCalculationGroupContextNodePresenter.cs (.../PipingCalculationGroupContextNodePresenter.cs) (revision 90e159562efbe49fe2c2e348ee04b6a75b4eec13)
+++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingCalculationGroupContextNodePresenter.cs (.../PipingCalculationGroupContextNodePresenter.cs) (revision 0a222f4f3c0054ec9cc70f94480c0dc504fea411)
@@ -65,10 +65,14 @@
{
PipingFailureMechanism sourceFailureMechanism;
var node = sourceNode;
- while ((sourceFailureMechanism = node.Parent.Tag as PipingFailureMechanism) == null)
+ while ((sourceFailureMechanism = node.Tag as PipingFailureMechanism) == null)
{
// No parent found, go search higher up hierarchy!
node = node.Parent;
+ if (node == null)
+ {
+ break;
+ }
}
return sourceFailureMechanism;
}
@@ -120,7 +124,7 @@
return base.RemoveNodeData(parentNodeData, nodeData);
}
- protected override ContextMenuStrip GetContextMenu(ITreeNode sender, PipingCalculationGroupContext nodeData)
+ protected override ContextMenuStrip GetContextMenu(ITreeNode node, PipingCalculationGroupContext nodeData)
{
var group = nodeData.WrappedData;
var addCalculationGroupItem = new StrictContextMenuItem(PipingFormsResources.PipingCalculationGroup_Add_PipingCalculationGroup,
@@ -131,8 +135,11 @@
{
Name = NamingHelper.GetUniqueName(group.Children, Resources.PipingCalculationGroup_DefaultName, c => c.Name)
};
+
group.Children.Add(newGroup);
nodeData.NotifyObservers();
+
+ SelectNewlyAddedItemInTreeView(node);
});
var addCalculationItem = new StrictContextMenuItem(PipingFormsResources.PipingCalculationGroup_Add_PipingCalculation,
PipingFormsResources.PipingCalculationGroup_Add_PipingCalculation_ToolTip,
@@ -142,8 +149,11 @@
{
Name = NamingHelper.GetUniqueName(group.Children, Resources.PipingCalculation_DefaultName, c => c.Name)
};
+
group.Children.Add(calculation);
nodeData.NotifyObservers();
+
+ SelectNewlyAddedItemInTreeView(node);
});
var validateAllItem = new StrictContextMenuItem(PipingFormsResources.PipingCalculationItem_Validate,
PipingFormsResources.PipingCalculationGroup_Validate_ToolTip,
@@ -177,7 +187,7 @@
clearAllItem.ToolTipText = PipingFormsResources.PipingCalculationGroup_ClearOutput_No_calculation_with_output_to_clear;
}
- return contextMenuBuilderProvider.Get(sender)
+ return contextMenuBuilderProvider.Get(node)
.AddCustomItem(addCalculationGroupItem)
.AddCustomItem(addCalculationItem)
.AddSeparator()
@@ -195,6 +205,17 @@
.Build();
}
+ private void SelectNewlyAddedItemInTreeView(ITreeNode node)
+ {
+ // Expand parent of 'newItem' to ensure its selected state is visible.
+ if (!node.IsExpanded)
+ {
+ node.Expand();
+ }
+ ITreeNode newlyAppendedNodeForNewItem = node.Nodes.Last();
+ TreeView.SelectedNode = newlyAppendedNodeForNewItem;
+ }
+
protected override IEnumerable GetChildNodeObjects(PipingCalculationGroupContext nodeData)
{
foreach (IPipingCalculationItem item in nodeData.WrappedData.Children)
@@ -243,13 +264,14 @@
originalOwnerContext.NotifyObservers();
target.NotifyObservers();
+ // Expand parent of 'draggedNode' to ensure its selected state is visible.
ITreeNode draggedNode = TreeView.GetNodeByTag(item);
- TreeView.SelectedNode = draggedNode;
ITreeNode newParentOfDraggedNode = draggedNode.Parent;
if (!newParentOfDraggedNode.IsExpanded)
{
newParentOfDraggedNode.Expand();
}
+ TreeView.SelectedNode = draggedNode;
}
else
{
Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingFailureMechanismNodePresenter.cs
===================================================================
diff -u -r074232b001ecb5ae110c0b95c05264d4372cbfb5 -r0a222f4f3c0054ec9cc70f94480c0dc504fea411
--- Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingFailureMechanismNodePresenter.cs (.../PipingFailureMechanismNodePresenter.cs) (revision 074232b001ecb5ae110c0b95c05264d4372cbfb5)
+++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingFailureMechanismNodePresenter.cs (.../PipingFailureMechanismNodePresenter.cs) (revision 0a222f4f3c0054ec9cc70f94480c0dc504fea411)
@@ -55,20 +55,20 @@
yield return new CategoryTreeFolder(RingtoetsCommonFormsResources.FailureMechanism_Outputs_DisplayName, GetOutputs(failureMechanism), TreeFolderCategory.Output);
}
- protected override ContextMenuStrip GetContextMenu(ITreeNode sender, PipingFailureMechanism failureMechanism)
+ protected override ContextMenuStrip GetContextMenu(ITreeNode node, PipingFailureMechanism failureMechanism)
{
var addCalculationGroupItem = new StrictContextMenuItem(
PipingFormsResources.PipingCalculationGroup_Add_PipingCalculationGroup,
PipingFormsResources.PipingFailureMechanism_Add_PipingCalculationGroup_Tooltip,
PipingFormsResources.AddFolderIcon,
- (o, args) => AddCalculationGroup(failureMechanism)
+ (o, args) => AddCalculationGroup(failureMechanism, node)
);
var addCalculationItem = new StrictContextMenuItem(
PipingFormsResources.PipingCalculationGroup_Add_PipingCalculation,
PipingFormsResources.PipingFailureMechanism_Add_PipingCalculation_Tooltip,
PipingFormsResources.PipingIcon,
- (s, e) => AddCalculation(failureMechanism)
+ (s, e) => AddCalculation(failureMechanism, node)
);
var validateAllItem = new StrictContextMenuItem(
@@ -98,7 +98,7 @@
clearAllItem.ToolTipText = PipingFormsResources.PipingCalculationGroup_ClearOutput_No_calculation_with_output_to_clear;
}
- return contextMenuBuilderProvider.Get(sender)
+ return contextMenuBuilderProvider.Get(node)
.AddCustomItem(addCalculationGroupItem)
.AddCustomItem(addCalculationItem)
.AddSeparator()
@@ -136,26 +136,49 @@
RunActivitiesAction(GetAllPipingCalculationsResursively(failureMechanism).Select(calc => new PipingCalculationActivity(calc)));
}
- private static void AddCalculationGroup(PipingFailureMechanism failureMechanism)
+ private void AddCalculationGroup(PipingFailureMechanism failureMechanism, ITreeNode failureMechanismNode)
{
var calculation = new PipingCalculationGroup
{
Name = NamingHelper.GetUniqueName(failureMechanism.CalculationsGroup.Children, PipingDataResources.PipingCalculationGroup_DefaultName, c => c.Name)
};
failureMechanism.CalculationsGroup.Children.Add(calculation);
failureMechanism.NotifyObservers();
+
+ SelectNewlyAddedItemInTreeView(failureMechanismNode);
}
- private static void AddCalculation(PipingFailureMechanism failureMechanism)
+ private void AddCalculation(PipingFailureMechanism failureMechanism, ITreeNode failureMechanismNode)
{
var calculation = new PipingCalculation
{
Name = NamingHelper.GetUniqueName(failureMechanism.CalculationsGroup.Children, PipingDataResources.PipingCalculation_DefaultName, c => c.Name)
};
failureMechanism.CalculationsGroup.Children.Add(calculation);
failureMechanism.NotifyObservers();
+
+ SelectNewlyAddedItemInTreeView(failureMechanismNode);
}
+ private void SelectNewlyAddedItemInTreeView(ITreeNode failureMechanismNode)
+ {
+ if (!failureMechanismNode.IsExpanded)
+ {
+ failureMechanismNode.Expand();
+ }
+
+ // Childnode at index 1 is the PipingCalculationGroup where the new item has been added:
+ ITreeNode failureMechanismsCalculationsNode = failureMechanismNode.Nodes[1];
+
+ // New childnode is appended at the end of PipingCalculationGroup:
+ ITreeNode newlyAddedGroupNode = failureMechanismsCalculationsNode.Nodes.Last();
+ if (!failureMechanismsCalculationsNode.IsExpanded)
+ {
+ failureMechanismsCalculationsNode.Expand();
+ }
+ TreeView.SelectedNode = newlyAddedGroupNode;
+ }
+
private static IEnumerable GetInputs(PipingFailureMechanism failureMechanism)
{
yield return failureMechanism.SectionDivisions;
Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingInputContextNodePresenter.cs
===================================================================
diff -u -r074232b001ecb5ae110c0b95c05264d4372cbfb5 -r0a222f4f3c0054ec9cc70f94480c0dc504fea411
--- Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingInputContextNodePresenter.cs (.../PipingInputContextNodePresenter.cs) (revision 074232b001ecb5ae110c0b95c05264d4372cbfb5)
+++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingInputContextNodePresenter.cs (.../PipingInputContextNodePresenter.cs) (revision 0a222f4f3c0054ec9cc70f94480c0dc504fea411)
@@ -31,10 +31,10 @@
node.ForegroundColor = Color.FromKnownColor(KnownColor.ControlText);
}
- protected override ContextMenuStrip GetContextMenu(ITreeNode sender, PipingInputContext nodeData)
+ protected override ContextMenuStrip GetContextMenu(ITreeNode node, PipingInputContext nodeData)
{
return contextMenuBuilderProvider
- .Get(sender)
+ .Get(node)
.AddImportItem()
.AddExportItem()
.AddSeparator()
Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingOutputNodePresenter.cs
===================================================================
diff -u -r074232b001ecb5ae110c0b95c05264d4372cbfb5 -r0a222f4f3c0054ec9cc70f94480c0dc504fea411
--- Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingOutputNodePresenter.cs (.../PipingOutputNodePresenter.cs) (revision 074232b001ecb5ae110c0b95c05264d4372cbfb5)
+++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingOutputNodePresenter.cs (.../PipingOutputNodePresenter.cs) (revision 0a222f4f3c0054ec9cc70f94480c0dc504fea411)
@@ -44,17 +44,17 @@
return true;
}
- protected override ContextMenuStrip GetContextMenu(ITreeNode sender, PipingOutput nodeData)
+ protected override ContextMenuStrip GetContextMenu(ITreeNode node, PipingOutput nodeData)
{
StrictContextMenuItem clearItem = new StrictContextMenuItem(
Resources.Clear_output,
null,
RingtoestFormsResources.ClearIcon,
- (s, e) => sender.TreeView.TryDeleteSelectedNodeData()
+ (s, e) => node.TreeView.TryDeleteSelectedNodeData()
);
return contextMenuBuilderProvider
- .Get(sender)
+ .Get(node)
.AddCustomItem(clearItem)
.AddSeparator()
.AddExportItem()
Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingSoilProfileCollectionNodePresenter.cs
===================================================================
diff -u -r074232b001ecb5ae110c0b95c05264d4372cbfb5 -r0a222f4f3c0054ec9cc70f94480c0dc504fea411
--- Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingSoilProfileCollectionNodePresenter.cs (.../PipingSoilProfileCollectionNodePresenter.cs) (revision 074232b001ecb5ae110c0b95c05264d4372cbfb5)
+++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingSoilProfileCollectionNodePresenter.cs (.../PipingSoilProfileCollectionNodePresenter.cs) (revision 0a222f4f3c0054ec9cc70f94480c0dc504fea411)
@@ -44,10 +44,10 @@
}
}
- protected override ContextMenuStrip GetContextMenu(ITreeNode sender, IEnumerable nodeData)
+ protected override ContextMenuStrip GetContextMenu(ITreeNode node, IEnumerable nodeData)
{
return contextMenuBuilderProvider
- .Get(sender)
+ .Get(node)
.AddExpandAllItem()
.AddCollapseAllItem()
.AddSeparator()
Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingSurfaceLineCollectionNodePresenter.cs
===================================================================
diff -u -r074232b001ecb5ae110c0b95c05264d4372cbfb5 -r0a222f4f3c0054ec9cc70f94480c0dc504fea411
--- Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingSurfaceLineCollectionNodePresenter.cs (.../PipingSurfaceLineCollectionNodePresenter.cs) (revision 074232b001ecb5ae110c0b95c05264d4372cbfb5)
+++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingSurfaceLineCollectionNodePresenter.cs (.../PipingSurfaceLineCollectionNodePresenter.cs) (revision 0a222f4f3c0054ec9cc70f94480c0dc504fea411)
@@ -40,10 +40,10 @@
return nodeData;
}
- protected override ContextMenuStrip GetContextMenu(ITreeNode sender, IEnumerable nodeData)
+ protected override ContextMenuStrip GetContextMenu(ITreeNode node, IEnumerable nodeData)
{
return contextMenuBuilderProvider
- .Get(sender)
+ .Get(node)
.AddExpandAllItem()
.AddCollapseAllItem()
.AddSeparator()
Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingCalculationGroupContextNodePresenterTest.cs
===================================================================
diff -u -r90e159562efbe49fe2c2e348ee04b6a75b4eec13 -r0a222f4f3c0054ec9cc70f94480c0dc504fea411
--- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingCalculationGroupContextNodePresenterTest.cs (.../PipingCalculationGroupContextNodePresenterTest.cs) (revision 90e159562efbe49fe2c2e348ee04b6a75b4eec13)
+++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingCalculationGroupContextNodePresenterTest.cs (.../PipingCalculationGroupContextNodePresenterTest.cs) (revision 0a222f4f3c0054ec9cc70f94480c0dc504fea411)
@@ -936,25 +936,47 @@
public void GetContextMenu_ClickOnAddGroupItem_AddGroupToCalculationGroupAndNotifyObservers()
{
// Setup
+ var group = new PipingCalculationGroup();
+ var nodeData = new PipingCalculationGroupContext(group,
+ Enumerable.Empty(),
+ Enumerable.Empty());
+
var calculationItem = mockRepository.Stub();
calculationItem.Expect(ci => ci.Name).Return("Nieuwe map");
var observer = mockRepository.StrictMock();
observer.Expect(o => o.UpdateObserver());
- var node = mockRepository.StrictMock();
- mockRepository.ReplayAll();
+ var newCalculationGroupContextNode = mockRepository.Stub();
- var builderProvider = new SimpleContextMenuBuilderProvder(new CustomItemsOnlyContextMenuBuilder());
+ // Parent node of newly added item, should be expanded from collapsed state to show selected node:
+ var node = mockRepository.Stub();
+ node.Tag = nodeData;
+ node.Expect(n => n.IsExpanded).Return(false);
+ node.Expect(n => n.Expand());
+ node.Expect(n => n.Nodes).WhenCalled(invocation =>
+ {
+ if (group.Children.Last() is PipingCalculationGroup)
+ {
+ invocation.ReturnValue = new List
+ {
+ newCalculationGroupContextNode
+ };
+ }
+ }).Return(null);
- var group = new PipingCalculationGroup();
+ var treeView = mockRepository.Stub();
+ mockRepository.ReplayAll();
+
group.Children.Add(calculationItem);
- var nodeData = new PipingCalculationGroupContext(group,
- Enumerable.Empty(),
- Enumerable.Empty());
+
nodeData.Attach(observer);
- var nodePresenter = new PipingCalculationGroupContextNodePresenter(builderProvider);
+ var builderProvider = new SimpleContextMenuBuilderProvder(new CustomItemsOnlyContextMenuBuilder());
+ var nodePresenter = new PipingCalculationGroupContextNodePresenter(builderProvider)
+ {
+ TreeView = treeView
+ };
var contextMenu = nodePresenter.GetContextMenu(node, nodeData);
@@ -968,35 +990,60 @@
Assert.AreEqual(2, group.Children.Count);
var newlyAddedItem = group.Children.Last();
Assert.IsInstanceOf(newlyAddedItem);
- Assert.AreEqual("Nieuwe map (1)", newlyAddedItem.Name);
+ Assert.AreEqual("Nieuwe map (1)", newlyAddedItem.Name,
+ "An item with the same name default name already exists, therefore '(1)' needs to be appended.");
+
+ Assert.AreSame(newCalculationGroupContextNode, treeView.SelectedNode,
+ "The node of the newly added item should be selected.");
+
mockRepository.VerifyAll();
}
[Test]
public void GetContextMenu_ClickOnAddCalculationItem_AddCalculationToCalculationGroupAndNotifyObservers()
{
// Setup
+ var group = new PipingCalculationGroup();
+ var nodeData = new PipingCalculationGroupContext(group,
+ Enumerable.Empty(),
+ Enumerable.Empty());
+
var calculationItem = mockRepository.Stub();
calculationItem.Expect(ci => ci.Name).Return("Nieuwe berekening");
var observer = mockRepository.StrictMock();
observer.Expect(o => o.UpdateObserver());
- var node = mockRepository.StrictMock();
+ var newCalculationContextNode = mockRepository.Stub();
+ // Parent node of newly added item, should be expanded from collapsed state to show selected node:
+ var node = mockRepository.Stub();
+ node.Tag = nodeData;
+ node.Expect(n => n.IsExpanded).Return(false);
+ node.Expect(n => n.Expand());
+ node.Expect(n => n.Nodes).WhenCalled(invocation =>
+ {
+ if (group.Children.Last() is PipingCalculation)
+ {
+ invocation.ReturnValue = new List
+ {
+ newCalculationContextNode
+ };
+ }
+ }).Return(null);
+
+ var treeView = mockRepository.Stub();
mockRepository.ReplayAll();
- var contextMenuProvider = new SimpleContextMenuBuilderProvder(new CustomItemsOnlyContextMenuBuilder());
-
- var group = new PipingCalculationGroup();
group.Children.Add(calculationItem);
- var nodeData = new PipingCalculationGroupContext(group,
- Enumerable.Empty(),
- Enumerable.Empty());
nodeData.Attach(observer);
- var nodePresenter = new PipingCalculationGroupContextNodePresenter(contextMenuProvider);
+ var builderProvider = new SimpleContextMenuBuilderProvder(new CustomItemsOnlyContextMenuBuilder());
+ var nodePresenter = new PipingCalculationGroupContextNodePresenter(builderProvider)
+ {
+ TreeView = treeView
+ };
var contextMenu = nodePresenter.GetContextMenu(node, nodeData);
@@ -1010,7 +1057,12 @@
Assert.AreEqual(2, group.Children.Count);
var newlyAddedItem = group.Children.Last();
Assert.IsInstanceOf(newlyAddedItem);
- Assert.AreEqual("Nieuwe berekening (1)", newlyAddedItem.Name);
+ Assert.AreEqual("Nieuwe berekening (1)", newlyAddedItem.Name,
+ "An item with the same name default name already exists, therefore '(1)' needs to be appended.");
+
+ Assert.AreSame(newCalculationContextNode, treeView.SelectedNode,
+ "The node of the newly added item should be selected.");
+
mockRepository.VerifyAll();
}
Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingFailureMechanismNodePresenterTest.cs
===================================================================
diff -u -r528577e7cac9c86626794fafc6c6c147146c5e84 -r0a222f4f3c0054ec9cc70f94480c0dc504fea411
--- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingFailureMechanismNodePresenterTest.cs (.../PipingFailureMechanismNodePresenterTest.cs) (revision 528577e7cac9c86626794fafc6c6c147146c5e84)
+++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingFailureMechanismNodePresenterTest.cs (.../PipingFailureMechanismNodePresenterTest.cs) (revision 0a222f4f3c0054ec9cc70f94480c0dc504fea411)
@@ -1,4 +1,5 @@
using System;
+using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Linq;
@@ -564,72 +565,143 @@
public void GetContextMenu_ClickOnAddCalculationItem_NewPipingCalculationInstanceAddedToFailureMechanismAndNotifyObservers()
{
// Setup
- var contextMenuBuilderProviderMock = mockRepository.StrictMock();
+ var failureMechanism = new PipingFailureMechanism();
+ failureMechanism.CalculationsGroup.Children.Clear();
+ failureMechanism.CalculationsGroup.Children.Add(new PipingCalculation());
+
var menuBuilder = new CustomItemsOnlyContextMenuBuilder();
- var nodeMock = mockRepository.StrictMock();
+
+ var newCalculationContextNode = mockRepository.StrictMock();
+
+ var failureMechanismCalculationsNode = mockRepository.StrictMock();
+ failureMechanismCalculationsNode.Expect(n => n.IsExpanded).Return(false);
+ failureMechanismCalculationsNode.Expect(n => n.Expand());
+ failureMechanismCalculationsNode.Expect(n => n.Nodes).WhenCalled(invocation =>
+ {
+ if (failureMechanism.CalculationsGroup.Children.Count == 2)
+ {
+ invocation.ReturnValue = new List
+ {
+ newCalculationContextNode
+ };
+ }
+ }).Return(null);
+
+ var failureMechanismNode = mockRepository.StrictMock();
+ failureMechanismNode.Expect(n => n.IsExpanded).Return(false);
+ failureMechanismNode.Expect(n => n.Expand());
+ failureMechanismNode.Expect(n => n.Nodes).Return(new List
+ {
+ null,
+ failureMechanismCalculationsNode,
+ null
+ });
+
var observerMock = mockRepository.StrictMock();
observerMock.Expect(o => o.UpdateObserver());
- contextMenuBuilderProviderMock.Expect(cmp => cmp.Get(nodeMock)).Return(menuBuilder);
+ var contextMenuBuilderProviderMock = mockRepository.StrictMock();
+ contextMenuBuilderProviderMock.Expect(cmp => cmp.Get(failureMechanismNode)).Return(menuBuilder);
+ var treeView = mockRepository.Stub();
+
mockRepository.ReplayAll();
- var failureMechanism = new PipingFailureMechanism();
failureMechanism.Attach(observerMock);
- var nodePresenter = new PipingFailureMechanismNodePresenter(contextMenuBuilderProviderMock);
+ var nodePresenter = new PipingFailureMechanismNodePresenter(contextMenuBuilderProviderMock)
+ {
+ TreeView = treeView
+ };
// Precondition
Assert.AreEqual(1, failureMechanism.CalculationsGroup.Children.Count);
// Call
- ContextMenuStrip contextMenu = nodePresenter.GetContextMenu(nodeMock, failureMechanism);
+ ContextMenuStrip contextMenu = nodePresenter.GetContextMenu(failureMechanismNode, failureMechanism);
ToolStripItem addCalculationItem = contextMenu.Items[contextMenuAddCalculationIndex];
addCalculationItem.PerformClick();
// Assert
Assert.AreEqual(2, failureMechanism.CalculationsGroup.Children.Count);
IPipingCalculationItem addedItem = failureMechanism.CalculationsGroup.Children.ElementAt(1);
- Assert.AreEqual("Nieuwe berekening (1)", addedItem.Name);
+ Assert.AreEqual("Nieuwe berekening (1)", addedItem.Name,
+ "Because there is already an item with the same default name, '(1)' should be appended.");
Assert.IsInstanceOf(addedItem);
+
+ Assert.AreSame(newCalculationContextNode, treeView.SelectedNode);
mockRepository.VerifyAll();
}
[Test]
public void GetContextMenu_ClickOnAddFolderItem_NewPipingCalculationGroupInstanceAddedToFailureMechanismAndNotifyObservers()
{
// Setup
- var contextMenuBuilderProviderMock = mockRepository.StrictMock();
+ var failureMechanism = new PipingFailureMechanism();
+ failureMechanism.CalculationsGroup.Children.Clear();
+ failureMechanism.CalculationsGroup.Children.Add(new PipingCalculationGroup());
+
var menuBuilder = new CustomItemsOnlyContextMenuBuilder();
- var nodeMock = mockRepository.StrictMock();
- var observerMock = mockRepository.StrictMock();
- contextMenuBuilderProviderMock.Expect(cmp => cmp.Get(nodeMock)).Return(menuBuilder);
+ var newCalculationGroupContextNode = mockRepository.StrictMock();
+ var failureMechanismCalculationsNode = mockRepository.StrictMock();
+ failureMechanismCalculationsNode.Expect(n => n.IsExpanded).Return(false);
+ failureMechanismCalculationsNode.Expect(n => n.Expand());
+ failureMechanismCalculationsNode.Expect(n => n.Nodes).WhenCalled(invocation =>
+ {
+ if (failureMechanism.CalculationsGroup.Children.Count == 2)
+ {
+ invocation.ReturnValue = new List
+ {
+ newCalculationGroupContextNode
+ };
+ }
+ }).Return(null);
+
+ var failureMechanismNode = mockRepository.StrictMock();
+ failureMechanismNode.Expect(n => n.IsExpanded).Return(false);
+ failureMechanismNode.Expect(n => n.Expand());
+ failureMechanismNode.Expect(n => n.Nodes).Return(new List
+ {
+ null,
+ failureMechanismCalculationsNode,
+ null
+ });
+
+ var observerMock = mockRepository.StrictMock();
observerMock.Expect(o => o.UpdateObserver());
+ var contextMenuBuilderProviderMock = mockRepository.StrictMock();
+ contextMenuBuilderProviderMock.Expect(cmp => cmp.Get(failureMechanismNode)).Return(menuBuilder);
+
+ var treeView = mockRepository.Stub();
+
mockRepository.ReplayAll();
- var failureMechanism = new PipingFailureMechanism();
failureMechanism.Attach(observerMock);
- failureMechanism.CalculationsGroup.Children.Clear();
- failureMechanism.CalculationsGroup.Children.Add(new PipingCalculationGroup());
- var nodePresenter = new PipingFailureMechanismNodePresenter(contextMenuBuilderProviderMock);
+ var nodePresenter = new PipingFailureMechanismNodePresenter(contextMenuBuilderProviderMock)
+ {
+ TreeView = treeView
+ };
// Precondition
Assert.AreEqual(1, failureMechanism.CalculationsGroup.Children.Count);
// Call
- ContextMenuStrip contextMenu = nodePresenter.GetContextMenu(nodeMock, failureMechanism);
+ ContextMenuStrip contextMenu = nodePresenter.GetContextMenu(failureMechanismNode, failureMechanism);
ToolStripItem addCalculationItem = contextMenu.Items[contextMenuAddFolderIndex];
addCalculationItem.PerformClick();
// Assert
Assert.AreEqual(2, failureMechanism.CalculationsGroup.Children.Count);
IPipingCalculationItem addedItem = failureMechanism.CalculationsGroup.Children.ElementAt(1);
- Assert.AreEqual("Nieuwe map (1)", addedItem.Name);
+ Assert.AreEqual("Nieuwe map (1)", addedItem.Name,
+ "Because there is already an item with the same default name, '(1)' should be appended.");
Assert.IsInstanceOf(addedItem);
+
+ Assert.AreSame(newCalculationGroupContextNode, treeView.SelectedNode);
mockRepository.VerifyAll();
}
}
Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/PresentationObjects/PipingContextTest.cs
===================================================================
diff -u -r495647ee1c652fecc15eea7fefeab29ae01347fe -r0a222f4f3c0054ec9cc70f94480c0dc504fea411
--- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/PresentationObjects/PipingContextTest.cs (.../PipingContextTest.cs) (revision 495647ee1c652fecc15eea7fefeab29ae01347fe)
+++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/PresentationObjects/PipingContextTest.cs (.../PipingContextTest.cs) (revision 0a222f4f3c0054ec9cc70f94480c0dc504fea411)
@@ -160,6 +160,66 @@
mocks.VerifyAll();
}
+ [Test]
+ public void Equals_ToItself_ReturnTrue()
+ {
+ // Setup
+ var observableObject = new ObserveableObject();
+ var context = new SimplePipingContext(observableObject,
+ Enumerable.Empty(),
+ Enumerable.Empty());
+
+ // Call
+ bool isEqual = context.Equals(context);
+
+ // Assert
+ Assert.IsTrue(isEqual);
+ }
+
+ [Test]
+ public void Equals_ToNull_ReturnFalse()
+ {
+ // Setup
+ var observableObject = new ObserveableObject();
+ var context = new SimplePipingContext(observableObject,
+ Enumerable.Empty(),
+ Enumerable.Empty());
+
+ // Call
+ bool isEqual = context.Equals(null);
+
+ // Assert
+ Assert.IsFalse(isEqual);
+ }
+
+ [Test]
+ public void Equals_ToEqualOtherInstance_ReturnTrue()
+ {
+ // Setup
+ var observableObject = new ObserveableObject();
+ var context = new SimplePipingContext(observableObject,
+ Enumerable.Empty(),
+ Enumerable.Empty());
+
+ var otherContext = new SimplePipingContext(observableObject,
+ new[]
+ {
+ new RingtoetsPipingSurfaceLine()
+ },
+ new[]
+ {
+ new TestPipingSoilProfile()
+ });
+
+ // Call
+ bool isEqual = context.Equals(otherContext);
+ bool isEqual2 = otherContext.Equals(context);
+
+ // Assert
+ Assert.IsTrue(isEqual);
+ Assert.IsTrue(isEqual2);
+ }
+
private class SimplePipingContext : PipingContext where T : IObservable
{
public SimplePipingContext(T target, IEnumerable surfaceLines, IEnumerable soilProfiles)