//using System.Linq;
using Telerik.WinControls;

namespace Pilz.UI.Telerik.Controls.RadValidationProvider;


/// <summary>
/// Represent a base for RadValidation
/// </summary>
public interface IRadValidationRuleEx
{

    /// <summary>
    /// Represents the List of Controls that belongs to this Rule.
    /// </summary>
    List<Control> Controls { get; set; }

    /// <summary>
    /// Gets or sets the ToolTip Text.
    /// </summary>
    string ToolTipText { get; set; }

    /// <summary>
    /// Gets or sets ToolTip Title.
    /// </summary>
    string ToolTipTitle { get; set; }
    /// <summary>
    /// Enable ot disable the ToolTip showing when validation fails.
    /// </summary>
    bool AutoToolTip { get; set; }

    /// <summary>
    /// Get the Rule Expression e.g. 'Value > 5'
    /// </summary>
    string Expression { get; }


    /// <summary>
    /// Sets or sets the PropertyName which will be evaluated. For example 'Value' Property.
    /// </summary>
    string PropertyName { get; set; }

    /// <summary>
    /// Add a RadControl descendant to the Rule's Controls collection.
    /// </summary>
    /// <param name="control">RadControl descendant instance</param>
    void AddControl(RadControl control);

    /// <summary>
    /// Remove a RadControl descendant from the Rule's Controls collection.
    /// </summary>
    /// <param name="control">RadControl descendant instance</param>
    void RemoveControl(RadControl control);
    string ToString();

    /// <summary>
    /// The Value of the rule. This Value will be evaluated against the Property.
    /// </summary>
    object Value { get; }

    /// <summary>
    /// Turn On or Off the CaseSensitive evaluation.
    /// </summary>
    bool CaseSensitive { get; set; }
}
