Index: Ringtoets/Common/src/Ringtoets.Common.Forms/Views/CalculatableView.cs =================================================================== diff -u -r888f6cdc81e8fb6d6a5b9baadf6395f209008836 -rc6609aa18c44e976105aa8f434616576aeb7f677 --- Ringtoets/Common/src/Ringtoets.Common.Forms/Views/CalculatableView.cs (.../CalculatableView.cs) (revision 888f6cdc81e8fb6d6a5b9baadf6395f209008836) +++ Ringtoets/Common/src/Ringtoets.Common.Forms/Views/CalculatableView.cs (.../CalculatableView.cs) (revision c6609aa18c44e976105aa8f434616576aeb7f677) @@ -132,6 +132,20 @@ .Select(r => r.CalculatableObject); } + /// + /// Validates the calculatable objects. + /// + /// A validation message in case no calculations can be performed, null otherwise. + protected virtual string ValidateCalculatableObjects() + { + if (!GetCalculatableRows().Any(r => r.ShouldCalculate)) + { + return Resources.CalculatableViews_No_calculations_selected; + } + + return null; + } + private void LocalizeControls() { CalculateForSelectedButton.Text = Resources.CalculatableView_CalculateForSelectedButton_Text; @@ -142,7 +156,17 @@ private void UpdateCalculateForSelectedButton() { - CalculateForSelectedButton.Enabled = GetCalculatableRows().Any(r => r.ShouldCalculate); + var validationText = ValidateCalculatableObjects(); + if (!string.IsNullOrEmpty(validationText)) + { + CalculateForSelectedButton.Enabled = false; + CalculateForSelectedButtonErrorProvider.SetError(CalculateForSelectedButton, validationText); + } + else + { + CalculateForSelectedButton.Enabled = true; + CalculateForSelectedButtonErrorProvider.Clear(); + } } private void InitializeEventHandlers()