private void ButtonWhyIsTemplateIncompleteClick(object sender, RoutedEventArgs e) { var invalidControl = TemplateControl.FindInvalidControl(); if (invalidControl != null) { invalidControl.NotifyIfInvalid(); AnimateStatusBarText("Missing answer for: " + invalidControl.NodeName); } else { var missingMarkupControl = TemplateControl.FindControlWithMissingMarkup(); if (missingMarkupControl != null) { string missingMarkupMessage = String.Empty; switch (missingMarkupControl.GeometricShapeWpfControl.GeometricShape.GeometricShape) { case AimTemplateTreeGeometricShapeNode.GeometricShapes.MultiPoint: missingMarkupMessage = "line or protractor/angle"; break; case AimTemplateTreeGeometricShapeNode.GeometricShapes.Polyline: missingMarkupMessage = "rectangle or polygon"; break; case AimTemplateTreeGeometricShapeNode.GeometricShapes.Circle: missingMarkupMessage = "ellipse"; break; case AimTemplateTreeGeometricShapeNode.GeometricShapes.Ellipse: missingMarkupMessage = "ellipse"; break; case AimTemplateTreeGeometricShapeNode.GeometricShapes.Point: missingMarkupMessage = "point callout or crosshair"; break; } missingMarkupControl.GeometricShapeWpfControl.Valid = false; missingMarkupControl.GeometricShapeWpfControl.NotifyIfInvalid(); if (missingMarkupControl.MarkupCount == 1) { AnimateStatusBarText("Missing " + missingMarkupMessage + " markup"); } else { AnimateStatusBarText("Missing " + missingMarkupControl.MarkupCount + " " + missingMarkupMessage + " markups"); } } else if (Annotation.Configuration.AimSettings.Default.RequireMarkupInAnnotation && Component.AimTemplateTree.Markup.Count == 0) { AnimateStatusBarText("Missing graphic markup on image."); } } }