using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Windows.Forms;
using MercatorApi;
using MercatorUi;
using MercatorExtensions;
using MercatorUi.BarcodeTerm;

// <CompileWithRoslyn />

namespace BarcodeTerm
{
    public class Customizer : MercatorUi.ICustomizers.IBarcodeTermCreated, MercatorUi.ICustomizers.IBarcodeTermClosed
    {
        public void BarcodeTermCreated(MercatorUi.BarcodeTerm.BarcodeTerm barcodeTerm)
        {
            if (barcodeTerm is BarcodeTermPTPENGUIN ptPenguin)
            {
                ptPenguin.DataTableCreated += DataTableCreated;
                ptPenguin.BeforeSave += BeforeSave;
            }
        }

        public void BarcodeTermClosed(MercatorUi.BarcodeTerm.BarcodeTerm barcodeTerm)
        {
            if (barcodeTerm is BarcodeTermPTPENGUIN ptPenguin)
            {
                ptPenguin.DataTableCreated -= DataTableCreated;
                ptPenguin.BeforeSave -= BeforeSave;
            }
        }

        void DataTableCreated(object sender, BarcodeTermPTPENGUIN.DataTableCreatedEventArgs e)
        {
            if (!e.DataTable.Columns.Contains("mycol"))
            {
                e.DataTable.Columns.Add("mycol", typeof(string));
                foreach (DataRow dr in e.DataTable.Rows)
                    dr["mycol"] = "";
            }
        }

        void BeforeSave(object sender, BarcodeTermPTPENGUIN.BeforeSaveEventArgs e)
        {
            BarcodeTermPTPENGUIN ptPenguin = (BarcodeTermPTPENGUIN) sender;
            if (!ptPenguin.PenguinBeforeSaveAnswers.ContainsKey(1))
            {
                e.PenguinQuestion = new MercatorPenguin.Question
                {
                    Id = 1,
                    Text = "Confirmer dans customizer ?",
                    Type = MercatorPenguin.Question.QuestionTypeEnum.YesNo,
                    AbortIfCancel = true
                };
                return;
            }
            ...
        }
    }
}