using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;

namespace GescomButtons
{
    public partial class GescomButtonsUserControl : UserControl, MercatorUi.MovableControls.Interfaces.IMovableControl
    {
        public GescomButtonsUserControl()
        {
            InitializeComponent();
            // on "cache" le s_id de l'article dans le tag du bouton correspondant
            button1.Tag = "618173914H";
            button2.Tag = "618173915I";
            button3.Tag = "618173916K";
        }


#region propriétés requises par IMovableControl

        // la Form qui héberge ce MovableObject
        private MercatorUi.MovableControls.Interfaces.IFormForMovableControls _form = null;
        public MercatorUi.MovableControls.Interfaces.IFormForMovableControls Form { get { return _form; } set { if (_form == null) _form = value; } }


        // indique que le contrôle est à la disposition de l'utilisateur : tous les évènements du style "valueChanged" sont causés par l'utilisateur, pas par Mercator
        private bool _userMode = false;
        public bool UserMode { get { return _userMode; } set { _userMode = value; } }

        internal bool afterDone = false;
        public bool AfterDone { get { return afterDone; } set { afterDone = value; } }
        
        private List<MercatorUi.MovableControls.MovableExpression> _expressionsToRefresh = null;
        public List<MercatorUi.MovableControls.MovableExpression> ExpressionsToRefresh { get { return _expressionsToRefresh; } set { _expressionsToRefresh = value; } }

#endregion


#region méthodes requises par IMovableControl

        public void OnAfterRead(EventArgs e)
        {
        }

        public void OnBeforeWrite(EventArgs e)
        {
        }

        public void OnAfterWrite(EventArgs e)
        {
        }

#endregion

        private void button1_Click(object sender, EventArgs e)
        {
            addItem(sender);
        }

        private void button2_Click(object sender, EventArgs e)
        {
            addItem(sender);
        }

        private void button3_Click(object sender, EventArgs e)
        {
            addItem(sender);
        }

        private void addItem(object sender)
        {
            Button button = (Button)sender;
            string s_id = button.Tag.ToString();
            MercatorUi.Forms.Billing.BillingForm billingForm = (MercatorUi.Forms.Billing.BillingForm)_form;
            MercatorUi.Engine.Gescom.BillingEngine billingEngine = billingForm.BillingEngine;
            if (billingEngine.ReadOnly) // si l'utilisateur n'a pas le droit de modifier ce document
                return;
            int n = billingEngine.AppendLine(true); // le paramètre true permet de ne pas créer une nouvelle ligne si la dernière ligne est vide
            if (billingEngine.InsertItem(s_id, billingEngine.LIGNES.Rows[n]))
            {
                n = billingEngine.AppendLine();  // ajouter une nouvelle ligne vide
                billingForm.LinesEditor.Grid.CurrentCell = billingForm.LinesEditor.Grid.Rows[n].Cells[0]; // activer la première cellule de la ligne créée
            }

        }

    }
}