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

namespace SigCli
{
    public class Customizer : MercatorUi.ICustomizers.IFormLoadCustomizer, MercatorUi.ICustomizers.IFormClosedCustomizer
    {
        public void FormLoadCustomize(Form form)
        {
            MercatorUi.Forms.Sig.SigForm sigForm = (MercatorUi.Forms.Sig.SigForm)form;
            MercatorUi.MovableControls.MovableTextBox textBox = sigForm.MovableControls.Values.OfType<MercatorUi.MovableControls.MovableTextBox>().FirstOrDefault(c => c.Source == "C_NOM");
            if (textBox != null)
            {
                textBox.AfterRead += textBox_AfterRead;
                textBox.BeforeWrite += textBox_BeforeWrite;
                textBox.AfterWrite += textBox_AfterWrite;
            }
        }

        public void FormClosedCustomize(Form form)
        {
            MercatorUi.Forms.Sig.SigForm sigForm = (MercatorUi.Forms.Sig.SigForm)form;
            MercatorUi.MovableControls.MovableTextBox textBox = sigForm.MovableControls.Values.OfType<MercatorUi.MovableControls.MovableTextBox>().FirstOrDefault(c => c.Source == "C_NOM");
            if (textBox != null)
            {
                textBox.AfterRead -= textBox_AfterRead;
                textBox.BeforeWrite -= textBox_BeforeWrite;
                textBox.AfterWrite -= textBox_AfterWrite;
            }
        }

        void textBox_AfterRead(object sender, EventArgs e)
        {
            MercatorUi.MovableControls.MovableTextBox textBox = (MercatorUi.MovableControls.MovableTextBox)sender;
            Dialogs.Stop(string.Format("De in de DB gelezen waarde is \"{0}\".", textBox.Text));
        }

        void textBox_BeforeWrite(object sender, EventArgs e)
        {
            MercatorUi.MovableControls.MovableTextBox textBox = (MercatorUi.MovableControls.MovableTextBox)sender;
            Dialogs.Stop(string.Format("De waarde die in geval van wijziging in de DB zal worden ingevoerd, is \"{0}\".", textBox.Text));
        }

        void textBox_AfterWrite(object sender, EventArgs e)
        {
            MercatorUi.MovableControls.MovableTextBox textBox = (MercatorUi.MovableControls.MovableTextBox)sender;
            Dialogs.Stop(string.Format("De waarde \"{0}\" is in de DB ingevoerd.", textBox.Text));
        }
    }
}