using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace MenuGenerator.Forms
{
    public partial class NewNode : Form
    {
        private string[] type_vol_str = { "Корневой", "Числовой", "Точный", "Бинарный", "Адрес", "Действие", "Ошибка", "Собственный" };
        private string[] type_vol_str_en = { "Root", "Numerical", "Float", "Binary", "Address", "Action", "Error", "Custom" };
        private string[] type_nd_str_ru = { "Настройка", "Ночь", "Гистер", "АнтиЗамерз", "МаксКотел", "Датчики", "Инфо", "Сброс",
         "Время","Год","Месяц","День","Час","Минут","Вкл/Выкл","Начало","Конец","Темп-ра","Помещение","Улица","Котел","CO","Запальник","Настроек","WiFi"};
        private string[] type_nd_str_en = {"Setup", "Time","Yar","Month","Day","Hour","Minute","Night","On/Off","Begin","End","Temper","Gister",
                                           "AFreese","MaxBoyl","Sensor","Room","Street","Boyl","CO","Zapal","Info","Reset","Config","WiFi" };

        private string tag_menu = "0:0:0:0";

        public NewNode()
        {
            InitializeComponent();
            //
            for (int i = 0; i < type_vol_str.Length; i++)
            {
                сBoxTypeNode.Items.Add(type_vol_str[i]);
            }
            for (int i = 0; i < type_nd_str_ru.Length; i++)
            {
                tBoxNameNode.Items.Add(type_nd_str_ru[i]);
            }


        }

        public void refresh_nn()
        {
            if (Mode_S == 0)
            {
                if (LevelM > 1) сBoxTypeNode.SelectedIndex = 1;
                else сBoxTypeNode.SelectedIndex = 0;
            }
            else if (Mode_S == 1)
            {
                tBoxTagNode.Text = NewNodeTag;// сBoxTypeNode.SelectedIndex.ToString() + ":" + tBoxVolNode.Text + ":" + tBoxMinNode.Text + ":" + tBoxMaxNode.Text + ":" + tBoxStepNode.Text;
                                              //NewNodeName = tBoxNameNode.Text;// название пункта
                NewNodeTag = tBoxTagNode.Text;// тэг
                сBoxTypeNode.SelectedIndex = UInt16.Parse(pars_str(':', NewNodeTag, 0));// тип переменной
                //tBoxTypeNode.Text = type_vol_str[ind];// тип переменной
                tBoxVolNode.Text = pars_str(':', NewNodeTag, 1); // значение переменной
                tBoxMinNode.Text = pars_str(':', NewNodeTag, 2); // мнимум
                tBoxMaxNode.Text = pars_str(':', NewNodeTag, 3); // максимум
                tBoxStepNode.Text = pars_str(':', NewNodeTag, 4); // шаг
                tag_menu = pars_str(':', NewNodeTag, 5) + ":" + pars_str(':', NewNodeTag, 6) + ":" + pars_str(':', NewNodeTag, 7) + ":" + pars_str(':', NewNodeTag, 8);
            }
            refresh_tag();
        }

        public string Name { get; set; }//
        public string NewNodeName { get; set; }// название пункта меню
        public string NewNodeTag { get; set; }// 
        public string ParentMenu { get; set; }//
        public int LevelM { get; set; }//
        public int Mode_S { get; set; }//

        private void btnSubmit_Click(object sender, EventArgs e)
        {
            if (tBoxNameNode.Text != string.Empty && сBoxTypeNode.Text != string.Empty && tBoxVolNode.Text != string.Empty &&
                tBoxMinNode.Text != string.Empty && tBoxMaxNode.Text != string.Empty && tBoxStepNode.Text != string.Empty)
            {
                NewNodeName = tBoxNameNode.Text;
                NewNodeTag = tBoxTagNode.Text;
            }
            else
            {
                MessageBox.Show("Заполните все поля!");
                return;
            }

            this.Close();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void сBoxTypeNode_SelectedIndexChanged(object sender, EventArgs e)
        {
            //tBoxTagNode.Text = сBoxTypeNode.SelectedIndex.ToString()+":"+ tBoxVolNode.Text+":"+ tBoxMinNode.Text+":"+ tBoxMaxNode.Text+":"+ tBoxStepNode.Text;
            refresh_tag();
        }

        public void refresh_tag()
        {
            tBoxTagNode.Text = сBoxTypeNode.SelectedIndex.ToString() + ":" + tBoxVolNode.Text + ":" + tBoxMinNode.Text + ":" + tBoxMaxNode.Text + ":" + tBoxStepNode.Text +
                ":" + tag_menu;

            if (Mode_S == 0)
            {
                if (LevelM > 1) tBoxNameNode.Text = "Child";
                else tBoxNameNode.Text = "Parn";
            }
            else if (Mode_S == 1)
            {
                tBoxNameNode.Text = NewNodeName;
            }
            //NewNodeName = tBoxNameNode.Text;// название пункта
        }

        // парсер
        private string pars_str(char delimiter, string value, int num)
        {
            String[] substrings = value.Split(delimiter);
            if (substrings.Count() < 2) return "0";
            else return substrings[num];
        }

        private void tBoxVolNode_TextChanged(object sender, EventArgs e)
        {
            refresh_tag();
        }

        private void tBoxMinNode_TextChanged(object sender, EventArgs e)
        {
            refresh_tag();
        }

        private void tBoxMaxNode_TextChanged(object sender, EventArgs e)
        {
            refresh_tag();
        }

        private void tBoxStepNode_TextChanged(object sender, EventArgs e)
        {
            refresh_tag();
        }

        // парсер
        private string pars_str_tag(string value, int num)
        {
            char delimiter = ':';
            String[] substrings = value.Split(delimiter);
            return substrings[num];
        }

        private int Count_param_tag(string value)
        {
            //String[] substrings = value.Split(':');//
            return value.Split(':').Length - 1;//substrings.Length;  
        }

        private void NewNode_Load(object sender, EventArgs e)
        {
            lbParentMenu.Text = ParentMenu;// ветка
            nName.Text = Name;// имя
            tBoxNameNode.Text = NewNodeName;// название пункта
            tBoxTagNode.Text = NewNodeTag;// тэг
            /*    if (Count_param_tag(NewNodeTag) == 5)
                {
                    //n.tBoxTypeNode.Text = pars_str_tag(treeView1.SelectedNode.Tag.ToString(), 0);
                    string tp = pars_str_tag(NewNodeTag, 0);
                    //сBoxTypeNode.SelectedIndex = UInt16.Parse(tp);
                    tBoxVolNode.Text = pars_str_tag(NewNodeTag, 1);
                    tBoxMinNode.Text = pars_str_tag(NewNodeTag, 2);
                    tBoxMaxNode.Text = pars_str_tag(NewNodeTag, 3);
                    tBoxStepNode.Text = pars_str_tag(NewNodeTag, 4);
                }
                else
                {
                    //сBoxTypeNode.SelectedIndex = 0;
                    tBoxVolNode.Text = "0";
                    tBoxMinNode.Text = "0";
                    tBoxMaxNode.Text = "0";
                    tBoxStepNode.Text = "0";
                }*/

        }

        private void tBoxNameNode_SelectedIndexChanged(object sender, EventArgs e)
        {
            NewNodeName = tBoxNameNode.Text;// название пункта
            refresh_tag();
        }
    }
}
