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

namespace SigXlead
{
    public class Customizer : MercatorUi.ICustomizers.IFormLoadCustomizer
    {
        private DevComponents.DotNetBar.ColorPickerButton _colorPickerButton = null;
        private Control _controlColorPreview = null;    // Rectangle de preview de couleur
        private DataRow dr = null;
        
        public void FormLoadCustomize(Form form)
        {
            MercatorUi.Forms.Sig.SigForm sigForm = (MercatorUi.Forms.Sig.SigForm)form;
            dr = sigForm.DataSourceRow;
            // Création du control colorPicker
            _colorPickerButton = new DevComponents.DotNetBar.ColorPickerButton();
            _colorPickerButton.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
            _colorPickerButton.ColorTable = DevComponents.DotNetBar.eButtonColor.OrangeWithBackground;
            _colorPickerButton.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
            _colorPickerButton.Location = new System.Drawing.Point(405, 11);
            _colorPickerButton.Size = new System.Drawing.Size(35, 20);
            _colorPickerButton.SelectedColorImageRectangle = new System.Drawing.Rectangle(2, 2, 12, 12);
            _colorPickerButton.SelectedColorChanged += new EventHandler(ColorPicker_SelectedColorChanged);
            if (sigForm.DataSourceRow["X_COLOR"].ToString() != "")
            {
                _controlColorPreview = sigForm.MovableControls["A098594442"];
                _colorPickerButton.SelectedColor = System.Drawing.ColorTranslator.FromHtml(sigForm.DataSourceRow["X_COLOR"].ToString());
                if (_controlColorPreview != null)
                    _controlColorPreview.BackColor = _colorPickerButton.SelectedColor;
            }
            // Ajout du colorPicker dans le control parent du champ X_NOM
            List<Control> l = sigForm.FindMovableControlsBySource("X_NOM");
            if (l.Count > 0)
                l[0].Parent.Controls.Add(_colorPickerButton);
        }        

        void ColorPicker_SelectedColorChanged(object sender, EventArgs e)
        {
            DevComponents.DotNetBar.ColorPickerButton colorPickerButton = (DevComponents.DotNetBar.ColorPickerButton)sender;
            if (_colorPickerButton != null && _colorPickerButton.SelectedColor.ToString() != "")
            {
                _controlColorPreview.BackColor = _colorPickerButton.SelectedColor;
                Api.SmartReplace(dr, "X_COLOR", ColorTranslator.ToHtml(colorPickerButton.SelectedColor));
            }
        }
    }
}