Index: Riskeer/Integration/src/Riskeer.Integration.Plugin/RiskeerPlugin.cs =================================================================== diff -u -r95157f917f36c0bd55d2b1e6590cd8fcd9567391 -r0559c17efc9173756acbac70af3d2cfde37e2f98 --- Riskeer/Integration/src/Riskeer.Integration.Plugin/RiskeerPlugin.cs (.../RiskeerPlugin.cs) (revision 95157f917f36c0bd55d2b1e6590cd8fcd9567391) +++ Riskeer/Integration/src/Riskeer.Integration.Plugin/RiskeerPlugin.cs (.../RiskeerPlugin.cs) (revision 0559c17efc9173756acbac70af3d2cfde37e2f98) @@ -957,9 +957,10 @@ EnsureVisibleOnCreate = (assessmentSection, parent) => true, ExpandOnCreate = assessmentSection => true, ChildNodeObjects = AssessmentSectionStateRootContextChildNodeObjects, + ContextMenuStrip = AssessmentSectionStateRootContextMenuStrip, CanRename = (assessmentSection, parentData) => true, - OnNodeRenamed = AssessmentSectionStateRootContextOnNodeRenamed, - CanRemove = (assessmentSection, parentNodeData) => true + CanRemove = (assessmentSection, parentNodeData) => false, + OnNodeRenamed = AssessmentSectionStateRootContextOnNodeRenamed }; yield return new TreeNodeInfo @@ -1814,7 +1815,35 @@ nodeData.WrappedData.Name = newName; nodeData.WrappedData.NotifyObservers(); } + + private ContextMenuStrip AssessmentSectionStateRootContextMenuStrip(AssessmentSectionStateRootContext nodeData, object parentData, TreeViewControl treeViewControl) + { + var calculateAllItem = new StrictContextMenuItem( + RiskeerCommonFormsResources.Calculate_All, + Resources.AssessmentSection_Calculate_All_ToolTip, + RiskeerCommonFormsResources.CalculateAllIcon, + (sender, args) => { ActivityProgressDialogRunner.Run(Gui.MainWindow, AssessmentSectionCalculationActivityFactory.CreateActivities(nodeData.WrappedData)); }); + var importItem = new StrictContextMenuItem( + CoreGuiResources.Import, + CoreGuiResources.Import_ToolTip, + CoreGuiResources.ImportIcon, + (sender, args) => assessmentSectionMerger.StartMerge(nodeData.WrappedData)); + + return Gui.Get(nodeData, treeViewControl) + .AddOpenItem() + .AddSeparator() + .AddCustomItem(importItem) + .AddSeparator() + .AddRenameItem() + .AddSeparator() + .AddCollapseAllItem() + .AddExpandAllItem() + .AddSeparator() + .AddPropertiesItem() + .Build(); + } + #endregion #region StandAloneFailureMechanism TreeNodeInfo Index: Riskeer/Integration/test/Riskeer.Integration.Plugin.Test/RiskeerPluginTest.cs =================================================================== diff -u -rc1aa383725fd31521b56e16d177e18ffcbe4a1f9 -r0559c17efc9173756acbac70af3d2cfde37e2f98 --- Riskeer/Integration/test/Riskeer.Integration.Plugin.Test/RiskeerPluginTest.cs (.../RiskeerPluginTest.cs) (revision c1aa383725fd31521b56e16d177e18ffcbe4a1f9) +++ Riskeer/Integration/test/Riskeer.Integration.Plugin.Test/RiskeerPluginTest.cs (.../RiskeerPluginTest.cs) (revision 0559c17efc9173756acbac70af3d2cfde37e2f98) @@ -599,8 +599,9 @@ TreeNodeInfo[] treeNodeInfos = plugin.GetTreeNodeInfos().ToArray(); // Assert - Assert.AreEqual(40, treeNodeInfos.Length); + Assert.AreEqual(41, treeNodeInfos.Length); Assert.IsTrue(treeNodeInfos.Any(tni => tni.TagType == typeof(AssessmentSection))); + Assert.IsTrue(treeNodeInfos.Any(tni => tni.TagType == typeof(AssessmentSectionStateRootContext))); Assert.IsTrue(treeNodeInfos.Any(tni => tni.TagType == typeof(BackgroundData))); Assert.IsTrue(treeNodeInfos.Any(tni => tni.TagType == typeof(NormContext))); Assert.IsTrue(treeNodeInfos.Any(tni => tni.TagType == typeof(ReferenceLineContext))); Index: Riskeer/Integration/test/Riskeer.Integration.Plugin.Test/StateInfos/AssessmentSectionStateInfoTest.cs =================================================================== diff -u -rec69acb95bfbd2c7686df7ddfbed9f373c1b3db4 -r0559c17efc9173756acbac70af3d2cfde37e2f98 --- Riskeer/Integration/test/Riskeer.Integration.Plugin.Test/StateInfos/AssessmentSectionStateInfoTest.cs (.../AssessmentSectionStateInfoTest.cs) (revision ec69acb95bfbd2c7686df7ddfbed9f373c1b3db4) +++ Riskeer/Integration/test/Riskeer.Integration.Plugin.Test/StateInfos/AssessmentSectionStateInfoTest.cs (.../AssessmentSectionStateInfoTest.cs) (revision 0559c17efc9173756acbac70af3d2cfde37e2f98) @@ -27,7 +27,6 @@ using Riskeer.Common.Data.AssessmentSection; using Riskeer.Common.Forms.PresentationObjects; using Riskeer.Integration.Data; -using Riskeer.Integration.Forms.PresentationObjects; namespace Riskeer.Integration.Plugin.Test.StateInfos { @@ -74,15 +73,8 @@ object rootData = info.GetRootData(project); // Assert - var rootDataCollection = rootData as object[]; - Assert.IsNotNull(rootDataCollection); - Assert.AreEqual(6, rootDataCollection.Length); - Assert.AreEqual(new ReferenceLineContext(assessmentSection.ReferenceLine, assessmentSection), rootDataCollection[0]); - Assert.AreEqual(new NormContext(assessmentSection.FailureMechanismContribution, assessmentSection), rootDataCollection[1]); - Assert.AreEqual(new FailureMechanismContributionContext(assessmentSection.FailureMechanismContribution, assessmentSection), rootDataCollection[2]); - Assert.AreEqual(new HydraulicBoundaryDatabaseContext(assessmentSection.HydraulicBoundaryDatabase, assessmentSection), rootDataCollection[3]); - Assert.AreSame(assessmentSection.BackgroundData, rootDataCollection[4]); - Assert.AreSame(assessmentSection.Comments, rootDataCollection[5]); + Assert.IsNotNull(rootData); + Assert.IsInstanceOf(rootData); } [Test]