
using System;
using System.Windows.Forms;
using MenuGenerator.Models;

namespace MenuGenerator.Forms
{
    public partial class NodeEditForm : Form
    {
        private MenuNode _item;



        public NodeEditForm(MenuNode item)
        {
            _item = item;
            InitializeComponent();

            LoadItem();
        }

        private void LoadItem()
        {
            foreach (var t in Enum.GetValues(typeof(MenuItemType)))
                this.cmbType.Items.Add(t);

            txtName.Text = _item.Name;
            cmbType.SelectedItem = _item.Type;
            txtValue.Text = _item.Value.ToString();
            txtMin.Text = _item.MinValue.ToString();
            txtMax.Text = _item.MaxValue.ToString();
            txtStep.Text = _item.Step.ToString();
        }

        private void btnOK_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrWhiteSpace(txtName.Text))
            {
                MessageBox.Show("Введите название пункта меню.",
                    "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                DialogResult = DialogResult.None;
                return;
            }

            if (!int.TryParse(txtValue.Text, out int val) ||
                !int.TryParse(txtMin.Text, out int min) ||
                !int.TryParse(txtMax.Text, out int max) ||
                !int.TryParse(txtStep.Text, out int step))
            {
                MessageBox.Show("Все числовые поля должны содержать целые числа.",
                    "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                DialogResult = DialogResult.None;
                return;
            }

            if (min > max)
            {
                MessageBox.Show("Минимум не может быть больше максимума.",
                    "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                DialogResult = DialogResult.None;
                return;
            }

            if (step <= 0)
            {
                MessageBox.Show("Шаг должен быть больше нуля.",
                    "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                DialogResult = DialogResult.None;
                return;
            }

            _item.Name = txtName.Text.Trim();
            _item.Type = (MenuItemType)cmbType.SelectedItem;
            _item.Value = val;
            _item.MinValue = min;
            _item.MaxValue = max;
            _item.Step = step;
        }
    }
}