using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using MercatorApi;
using MercatorUi;

namespace SigFou
{
    public class Customizer : MercatorUi.ICustomizers.IFormLoadCustomizer, MercatorUi.ICustomizers.IFormClosedCustomizer
    {

        public void FormLoadCustomize(System.Windows.Forms.Form WindowsForm)
        {
            MercatorUi.Forms.Sig.SigForm sigForm = (MercatorUi.Forms.Sig.SigForm)WindowsForm;
            if (sigForm.MovableControls.ContainsKey("841DDAADD9"))
            {
                MercatorUi.Forms.Sig.SigGrids.UserDefined userDefinedGrid = (MercatorUi.Forms.Sig.SigGrids.UserDefined)sigForm.MovableControls["841DDAADD9"];
                userDefinedGrid.HeaderCreated += new MercatorUi.MovableControls.MovableGrid.HeaderCreatedHandler(userDefinedGrid_HeaderCreated);
                userDefinedGrid.BeforeFillWithData += new MercatorUi.Forms.Sig.SigGrids.UserDefined.BeforeFillWithDataEventHandler(userDefinedGrid_BeforeFillWithData);
            }
        }

        public void FormClosedCustomize(System.Windows.Forms.Form WindowsForm)
        {
            MercatorUi.Forms.Sig.SigForm sigForm = (MercatorUi.Forms.Sig.SigForm)WindowsForm;
            if (sigForm.MovableControls.ContainsKey("841DDAADD9"))
            {
                MercatorUi.Forms.Sig.SigGrids.UserDefined userDefinedGrid = (MercatorUi.Forms.Sig.SigGrids.UserDefined)sigForm.MovableControls["841DDAADD9"];
                userDefinedGrid.HeaderCreated -= new MercatorUi.MovableControls.MovableGrid.HeaderCreatedHandler(userDefinedGrid_HeaderCreated);
                userDefinedGrid.BeforeFillWithData -= new MercatorUi.Forms.Sig.SigGrids.UserDefined.BeforeFillWithDataEventHandler(userDefinedGrid_BeforeFillWithData);
            }
        }

        // Voeg de spinner toe aan de header (opdat de header geen null is, voegen we een titel toe aan de grid eigenschappen)
        void userDefinedGrid_HeaderCreated(object sender, MercatorUi.MovableControls.MovableGrid.HeaderCreatedEventArgs e)
        {
            MercatorUi.Forms.Sig.SigGrids.UserDefined userDefinedGrid = (MercatorUi.Forms.Sig.SigGrids.UserDefined)sender;

            MercatorUi._BaseClasses.BindableIntegerInput spinnerYear = new MercatorUi._BaseClasses.BindableIntegerInput();
            spinnerYear.BackgroundStyle.Class = "DateTimeInputBackground";
            spinnerYear.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
            spinnerYear.Increment = 1;
            spinnerYear.Size = new System.Drawing.Size(51, 20);
            spinnerYear.Location = new System.Drawing.Point(userDefinedGrid.Header.Width - 15 - spinnerYear.Width, 10);
            spinnerYear.Anchor = System.Windows.Forms.AnchorStyles.Right;
            spinnerYear.MaxValue = 2099;
            spinnerYear.MinValue = 2014;
            spinnerYear.ShowUpDown = true;
            spinnerYear.Value = DateTime.Now.Year;
            spinnerYear.Name = "spinnerYear";
            spinnerYear.ValueChanged += new EventHandler(spinnerYear_ValueChanged);
            userDefinedGrid.Header.Controls.Add(spinnerYear);
        }

        // Wanneer we de waarde van de spinner veranderen forceren we een refresh van de grid
        void spinnerYear_ValueChanged(object sender, EventArgs e)
        {
            MercatorUi._BaseClasses.BindableIntegerInput spinnerYear = (MercatorUi._BaseClasses.BindableIntegerInput)sender;
            MercatorUi.Forms.Sig.SigGrids.UserDefined userDefinedGrid = (MercatorUi.Forms.Sig.SigGrids.UserDefined)spinnerYear.Parent.Parent;
            userDefinedGrid.FillWithData();
        }

        // De waarde van de spinner doorgeven als extra SQL-parameter
        void userDefinedGrid_BeforeFillWithData(object sender, MercatorUi.Forms.Sig.SigGrids.UserDefined.BeforeFillWithDataEventArgs e)
        {
            MercatorUi.Forms.Sig.SigGrids.UserDefined userDefinedGrid = (MercatorUi.Forms.Sig.SigGrids.UserDefined)sender;
            MercatorUi._BaseClasses.BindableIntegerInput spinnerYear = (MercatorUi._BaseClasses.BindableIntegerInput)userDefinedGrid.Header.Controls["spinnerYear"];
            e.ListSqlParams.Add(new MercatorSqlParam("@year", spinnerYear.Value));
        }
    }
}