    using System;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
using System.Collections;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Collections.Specialized;
using Args;

namespace wnd
{
    public class Names
    {
        static public int lang;
        static public StringDictionary en;  // 0
        static public StringDictionary ru;  // 1
        static public StringDictionary ua;  // 2

        static public void Add(string key)
        {
            Add(key, key, key);
        }
        static public void Add(string key, string ruT)
        {
            try
            {
                ua.Add(key, key);
                ru.Add(key, ruT);
                en.Add(key, key);
            }
            catch
            {
            }
        }
        static public void Add(string key, string ruT, string uaT)
        {
            try
            {
                ua.Add(key, uaT);
                ru.Add(key, ruT);
                en.Add(key, key);
            }
            catch
            {
            }
        }
        static Names()
        {
            lang = 0;
            ua = new StringDictionary();
            ru = new StringDictionary();
            en = new StringDictionary();

            Add(inscr.OK);
            Add(inscr.PAR1, "Аргументы");
            Add(inscr.PAR2, "Конфигурация", "Конфігурація");


        }
        static public string Text(string key)
        {
            string rc = CNST.NULL;
            if (lang == 2)
                rc = ua[key];
            else if (lang == 1)
                rc = ru[key];
            else
                rc = en[key];
            if (rc == null)
                return key;
            return rc;
        }
    }


    public class _Button : System.Windows.Forms.Button
    {
        public _Button()
            : base()
        {
        }
        public _Button(string nm)
        {
            Name = nm;
            Text = Names.Text(nm);
            Enabled = false;
        }

        public void handler(EventHandler click)
        {
            Enabled = true;
            Click += click;
        }
    }

    public class _Label : System.Windows.Forms.Label
    {
        public _Label
          (
            string nm,
            int p = 0
          )
        {
            Name = nm;
            Text = Names.Text(nm);
            AutoSize = true;
            Padding = new Padding(5, 7, 5, 0);

            float sizeFont = Font.Size;
            Font = new Font("Courier New", sizeFont);
        }
    }
    public class _LabelInfo : System.Windows.Forms.Label
    {
        public _LabelInfo()
        {
            AutoSize = true;
            Padding = new Padding(15, 7, 0, 0);
        }
    }

    public class _ToolBarButton : System.Windows.Forms.ToolBarButton
    {
        public _ToolBarButton
          (
            string nm
          )
        {
            Name = nm;
            Text = Names.Text(nm);
            Enabled = false;
        }
    }

    public class inscr
    {
        public const string OK = "OK";


        public const string PAR1 = "Arguments";
        public const string PAR2 = "Parameters";
        public const string WND = "Window for";
        public const string TRACK = "track";
        public const string START = "start";
        public const string CURRENT = "current";
        public const string HLP = "help";
        public const string VERB = "verbose";


    }

    public class _TextBox : TextBox
    {
        public Arg retArg;           ///< перемення для возврата введенного значения
        public string defVal;         ///< умолчательное значение

        // public InputTypes inputType;        // NEW Тип поля ввода
        public handler txtChanged;

        public _TextBox(Arg a)
            : base()
        {
            retArg = a;
            defVal = string.Copy(a.val()); /// взяли значение по умолчанию.
        }
        /// возвращает порядоковый номер поля ввода 
        public int ordNo()
        {
            int oNo = 0;
            if (Name != null && Name.Length > 1)
            {
                string no = Name.Substring(1);
                int.TryParse(no, out oNo);
            }
            return oNo;
        }

        ///  восстановить значения по умолчанию
        public virtual void restore()
        {
            Text = string.Copy(defVal);
        }
        ///  вернуть введенный текст и восстановить значение по умолчанию.
        public virtual void set()
        {
            retArg.set(Text);
            Text = string.Copy(defVal);
        }

    }

}