Index: Riskeer/Piping/src/Riskeer.Piping.Forms/Views/PipingFailureMechanismSectionResultRow.cs =================================================================== diff -u -r65d1333335d29e7cc91e360a91805ff7a304aa5a -r864a75002ba4216493f6dde8ba96a30575fa4d4b --- Riskeer/Piping/src/Riskeer.Piping.Forms/Views/PipingFailureMechanismSectionResultRow.cs (.../PipingFailureMechanismSectionResultRow.cs) (revision 65d1333335d29e7cc91e360a91805ff7a304aa5a) +++ Riskeer/Piping/src/Riskeer.Piping.Forms/Views/PipingFailureMechanismSectionResultRow.cs (.../PipingFailureMechanismSectionResultRow.cs) (revision 864a75002ba4216493f6dde8ba96a30575fa4d4b) @@ -218,18 +218,33 @@ private void UpdateColumnStateDefinitions() { - bool initialFailureMechanismResultNoFailureProbability = InitialFailureMechanismResult == InitialFailureMechanismResultType.NoFailureProbability; - ColumnStateHelper.SetColumnState(ColumnStateDefinitions[initialFailureMechanismResultIndex], !IsRelevant); - ColumnStateHelper.SetColumnState(ColumnStateDefinitions[initialFailureMechanismResultProfileProbabilityIndex], - !IsRelevant || initialFailureMechanismResultNoFailureProbability); - - ColumnStateHelper.SetColumnState(ColumnStateDefinitions[initialFailureMechanismResultSectionProbabilityIndex], - !IsRelevant || initialFailureMechanismResultNoFailureProbability); + + if (!IsRelevant || InitialFailureMechanismResult == InitialFailureMechanismResultType.NoFailureProbability) + { + ColumnStateHelper.DisableColumn(ColumnStateDefinitions[initialFailureMechanismResultProfileProbabilityIndex]); + ColumnStateHelper.DisableColumn(ColumnStateDefinitions[initialFailureMechanismResultSectionProbabilityIndex]); + } + else + { + bool initialFailureMechanismResultAdopt = InitialFailureMechanismResult == InitialFailureMechanismResultType.Adopt; + ColumnStateHelper.EnableColumn(ColumnStateDefinitions[initialFailureMechanismResultProfileProbabilityIndex], initialFailureMechanismResultAdopt); + ColumnStateHelper.EnableColumn(ColumnStateDefinitions[initialFailureMechanismResultSectionProbabilityIndex], initialFailureMechanismResultAdopt); + } + ColumnStateHelper.SetColumnState(ColumnStateDefinitions[furtherAnalysisNeededIndex], !IsRelevant); ColumnStateHelper.SetColumnState(ColumnStateDefinitions[probabilityRefinementTypeIndex], !IsRelevant || !FurtherAnalysisNeeded); - ColumnStateHelper.SetColumnState(ColumnStateDefinitions[refinedProfileProbabilityIndex], !IsRelevant || !FurtherAnalysisNeeded); - ColumnStateHelper.SetColumnState(ColumnStateDefinitions[refinedSectionProbabilityIndex], !IsRelevant || !FurtherAnalysisNeeded); + + if (!IsRelevant || !FurtherAnalysisNeeded) + { + ColumnStateHelper.DisableColumn(ColumnStateDefinitions[refinedProfileProbabilityIndex]); + ColumnStateHelper.DisableColumn(ColumnStateDefinitions[refinedSectionProbabilityIndex]); + } + else + { + ColumnStateHelper.EnableColumn(ColumnStateDefinitions[refinedProfileProbabilityIndex], ProbabilityRefinementType == ProbabilityRefinementType.Section); + ColumnStateHelper.EnableColumn(ColumnStateDefinitions[refinedSectionProbabilityIndex], ProbabilityRefinementType == ProbabilityRefinementType.Profile); + } } /// Index: Riskeer/Piping/test/Riskeer.Piping.Forms.Test/Views/PipingFailureMechanismSectionResultRowTest.cs =================================================================== diff -u -r65d1333335d29e7cc91e360a91805ff7a304aa5a -r864a75002ba4216493f6dde8ba96a30575fa4d4b --- Riskeer/Piping/test/Riskeer.Piping.Forms.Test/Views/PipingFailureMechanismSectionResultRowTest.cs (.../PipingFailureMechanismSectionResultRowTest.cs) (revision 65d1333335d29e7cc91e360a91805ff7a304aa5a) +++ Riskeer/Piping/test/Riskeer.Piping.Forms.Test/Views/PipingFailureMechanismSectionResultRowTest.cs (.../PipingFailureMechanismSectionResultRowTest.cs) (revision 864a75002ba4216493f6dde8ba96a30575fa4d4b) @@ -368,7 +368,9 @@ var result = new PipingFailureMechanismSectionResult(section) { IsRelevant = isRelevant, - FurtherAnalysisNeeded = true + FurtherAnalysisNeeded = true, + InitialFailureMechanismResult = InitialFailureMechanismResultType.Manual, + ProbabilityRefinementType = ProbabilityRefinementType.Both }; // Call @@ -396,11 +398,11 @@ } [Test] - [TestCase(InitialFailureMechanismResultType.Adopt, true)] - [TestCase(InitialFailureMechanismResultType.Manual, true)] - [TestCase(InitialFailureMechanismResultType.NoFailureProbability, false)] + [TestCase(InitialFailureMechanismResultType.Adopt, true, true)] + [TestCase(InitialFailureMechanismResultType.Manual, true, false)] + [TestCase(InitialFailureMechanismResultType.NoFailureProbability, false, true)] public void Constructor_WithInitialFailureMechanismResult_ExpectedColumnStates(InitialFailureMechanismResultType initialFailureMechanismResultType, - bool isEnabled) + bool isEnabled, bool isReadOnly) { // Setup var mocks = new MockRepository(); @@ -420,9 +422,9 @@ IDictionary columnStateDefinitions = row.ColumnStateDefinitions; DataGridViewControlColumnStateDefinitionTestHelper.AssertColumnState( - columnStateDefinitions[ConstructionProperties.InitialFailureMechanismResultProfileProbabilityIndex], isEnabled); + columnStateDefinitions[ConstructionProperties.InitialFailureMechanismResultProfileProbabilityIndex], isEnabled, isReadOnly); DataGridViewControlColumnStateDefinitionTestHelper.AssertColumnState( - columnStateDefinitions[ConstructionProperties.InitialFailureMechanismResultSectionProbabilityIndex], isEnabled); + columnStateDefinitions[ConstructionProperties.InitialFailureMechanismResultSectionProbabilityIndex], isEnabled, isReadOnly); mocks.VerifyAll(); } @@ -440,7 +442,8 @@ FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); var result = new PipingFailureMechanismSectionResult(section) { - FurtherAnalysisNeeded = furtherAnalysisNeeded + FurtherAnalysisNeeded = furtherAnalysisNeeded, + ProbabilityRefinementType = ProbabilityRefinementType.Both }; // Call @@ -458,6 +461,40 @@ mocks.VerifyAll(); } + + [Test] + [TestCase(ProbabilityRefinementType.Both, false, false)] + [TestCase(ProbabilityRefinementType.Profile, false, true)] + [TestCase(ProbabilityRefinementType.Section, true, false)] + public void Constructor_WithProbabilityRefinementType_ExpectedColumnStates(ProbabilityRefinementType probabilityRefinementType, + bool profileProbabilityIsReadOnly, + bool sectionProbabilityIsReadOnly) + { + // Setup + var mocks = new MockRepository(); + var calculateStrategy = mocks.Stub(); + mocks.ReplayAll(); + + FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); + var result = new PipingFailureMechanismSectionResult(section) + { + FurtherAnalysisNeeded = true, + ProbabilityRefinementType = probabilityRefinementType + }; + + // Call + var row = new PipingFailureMechanismSectionResultRow(result, calculateStrategy, ConstructionProperties); + + // Assert + IDictionary columnStateDefinitions = row.ColumnStateDefinitions; + + DataGridViewControlColumnStateDefinitionTestHelper.AssertColumnState( + columnStateDefinitions[ConstructionProperties.RefinedProfileProbabilityIndex], true, profileProbabilityIsReadOnly); + DataGridViewControlColumnStateDefinitionTestHelper.AssertColumnState( + columnStateDefinitions[ConstructionProperties.RefinedSectionProbabilityIndex], true, sectionProbabilityIsReadOnly); + + mocks.VerifyAll(); + } #endregion }