//------------------------------------------------------------------------------ // // Copyright (c) Microsoft Corporation. All rights reserved. // //------------------------------------------------------------------------------ namespace System.Web.UI { using System; using System.ComponentModel; [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property, AllowMultiple=true)] public sealed class VerificationAttribute : Attribute { private string _guideline; // "WCAG 1.1", "ADA508" private string _checkpoint; //10.1: in rule and used by checker private VerificationReportLevel _reportLevel;//VerificationReportLevel.Error| Warning| Guideline private int _priority; //1,2,3,4 private string _message; //"something is in error" private VerificationRule _rule; //VerificationRule.Required | Prohibited private string _conditionalProperty; //"foo" private VerificationConditionalOperator _conditionalOperator; //VerificationConditionalOperator.Equals | NotEquals private string _conditionalValue; //eg. String.Empty private string _guidelineUrl; /* minimal constructor * implies VerificationRule.Equals * ConditionalProperty = String.Empty * VerificationConditionalOperator.Equals * ConditionalValue = String.Empty * GuidelineUrl = String.Empty */ public VerificationAttribute ( string guideline, string checkpoint, VerificationReportLevel reportLevel, int priority, string message) : this(guideline, checkpoint, reportLevel, priority, message, VerificationRule.Required, /*VerificationRule*/ String.Empty, /*ConditionalProperty*/ VerificationConditionalOperator.Equals, String.Empty, /*ConditionalValue*/ String.Empty /*GuidelineUrl*/) { } /* constructor that implies * ConditionalProperty = String.Empty * VerificationConditionalOperator.Equals * ConditionalValue = String.Empty * GuidelineUrl = String.Empty */ /* public VerificationAttribute ( string guideline, string checkpoint, VerificationReportLevel reportLevel, int priority, string message, VerificationRule rule) : this(guideline, checkpoint, reportLevel, priority, message, rule, String.Empty, //ConditionalProperty VerificationConditionalOperator.Equals, String.Empty, //ConditionalValue String.Empty) { //GuidelineUrl } */ /*specifying just a ConditionalProperty implies: * VerificationConditionalOperator.NotEquals * ConditionalValue = String.Empty * GuidelineUrl = String.Empty */ public VerificationAttribute ( string guideline, string checkpoint, VerificationReportLevel reportLevel, int priority, string message, VerificationRule rule, string conditionalProperty) : this(guideline, checkpoint, reportLevel, priority, message, rule, conditionalProperty, VerificationConditionalOperator.NotEquals, String.Empty, /*ConditionalValue*/ String.Empty /*GuidelineUrl*/) { } /*implies GuidelineUrl = String.Empty */ internal VerificationAttribute ( string guideline, string checkpoint, VerificationReportLevel reportLevel, int priority, string message, VerificationRule rule, string conditionalProperty, VerificationConditionalOperator conditionalOperator, string conditionalValue) : this(guideline, checkpoint, reportLevel, priority, message, rule, conditionalProperty, conditionalOperator, conditionalValue, String.Empty /*GuidelineUrl*/) { } public VerificationAttribute( string guideline, string checkpoint, VerificationReportLevel reportLevel, int priority, string message, VerificationRule rule, string conditionalProperty, VerificationConditionalOperator conditionalOperator, string conditionalValue, string guidelineUrl) { _guideline = guideline; _checkpoint = checkpoint; _reportLevel = reportLevel; _priority = priority; _message = message; _rule = rule; _conditionalProperty = conditionalProperty; _conditionalOperator = conditionalOperator; _conditionalValue = conditionalValue; _guidelineUrl = guidelineUrl; } private VerificationAttribute() { } //WCAG 1.1, ADA508, etc. public string Guideline { get { return _guideline; } } //10.1, 12.4, etc. public string Checkpoint { get { return _checkpoint; } } //VerificationReportLevel.Error | Warning | Guideline public VerificationReportLevel VerificationReportLevel { get { return _reportLevel; } } //1, 2, 3, 4, etc. public int Priority { get { return _priority; } } //message to use if verification rule is true public string Message { get { return _message; } } //VerificationRule.Required | Prohibited public VerificationRule VerificationRule { get { return _rule; } } //name of other control property to condition the assertion //used as lhs of conditional expression public string ConditionalProperty { get { return _conditionalProperty; } } //VerificationConditionalOperator.Equals | NotEquals //operator to apply to condition statement public VerificationConditionalOperator VerificationConditionalOperator { get { return _conditionalOperator; } } //value to use as rhs in conditional expression public string ConditionalValue { get { return _conditionalValue; } } public string GuidelineUrl { get { return _guidelineUrl; } } } public enum VerificationRule { Required, Prohibited, NotEmptyString } public enum VerificationReportLevel { Error, Warning, Guideline } public enum VerificationConditionalOperator { Equals, NotEquals } }