// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

using System.ComponentModel;
using System.Globalization;

namespace System.Windows.Forms;

/// <summary>
///  Provides data for the <see cref="Form.InputLanguageChanging"/> event.
/// </summary>
public class InputLanguageChangingEventArgs : CancelEventArgs
{
    /// <summary>
    ///  Initializes a new instance of the <see cref="InputLanguageChangingEventArgs"/> class with the
    ///  specified locale, character set, and acceptance.
    /// </summary>
    public InputLanguageChangingEventArgs(CultureInfo culture, bool sysCharSet)
    {
        InputLanguage? language = InputLanguage.FromCulture(culture)
            ?? throw new ArgumentException(string.Format(SR.InputLanguageCultureNotFound, culture), nameof(culture));

        InputLanguage = language;
        Culture = culture;
        SysCharSet = sysCharSet;
    }

    /// <summary>
    ///  Initializes a new instance of the <see cref="InputLanguageChangingEventArgs"/> class with the
    ///  specified input language, character set, and acceptance of a language change.
    /// </summary>
    public InputLanguageChangingEventArgs(InputLanguage inputLanguage, bool sysCharSet)
    {
        InputLanguage = inputLanguage.OrThrowIfNull();
        Culture = inputLanguage.Culture;
        SysCharSet = sysCharSet;
    }

    /// <summary>
    ///  Gets the requested input language.
    /// </summary>
    public InputLanguage InputLanguage { get; }

    /// <summary>
    ///  Gets the locale of the requested input language.
    /// </summary>
    public CultureInfo Culture { get; }

    /// <summary>
    ///  Gets a value indicating whether the system default font supports the character set
    ///  required for the requested input language.
    /// </summary>
    public bool SysCharSet { get; }
}
