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

namespace OliviaAddIn
{

    public class LimpCampos : FormCampos
    {
        /**
         *	@file RecoCampos.cs
         * Archivo de la clase ventana para la edición de los campos a leer en la planificación de recogida de residuos
         */
        /**
         *	Clase ventana para la edición de los campos a leer en la planificación de recogida de residuos
         */
        Limpieza limp = null;
        
        ////////////////////////////////////////////
        /**
         * Clase para la estructura de propiedades
         */
        public class LimpCamposProps
        {            
            [DisplayNameAttribute("Nombre entidad")]
            [DescriptionAttribute("Campo donde leer el nombre de la entidad.")]
            [Category("Campos")]
            public string camp_nom_tipo_ent
            {
                get { return LimpiezaDef.Campos.consulta_entidad; }
                set { LimpiezaDef.Campos.consulta_entidad = value; }
            }
            [DisplayNameAttribute("Mecanizable")]
            [DescriptionAttribute("Campo donde leer si la entidad es mecanizable.")]
            [Category("Campos")]
            public string camp_mecaniz
            {
                get { return LimpiezaDef.Campos.consulta_mecan; }
                set { LimpiezaDef.Campos.consulta_mecan = value; }
            }
            ////////////////////////////////////////////
            //Atributos
            [DisplayNameAttribute("Bordillos libres")]
            [DescriptionAttribute("Atributo a consultar para los Bordillos libres.")]
            [Category("Atributos")]
            public string atr_bord
            {
                get { return LimpiezaDef.Atributos.atr_bord; }
                set { LimpiezaDef.Atributos.atr_bord = value; }
            }
            [DisplayNameAttribute("Bandas de Aparcamiento")]
            [DescriptionAttribute("Atributo a consultar para las Bandas de Aparcamiento.")]
            [Category("Atributos")]
            public string atr_aparc
            {
                get { return LimpiezaDef.Atributos.atr_aparc; }
                set { LimpiezaDef.Atributos.atr_aparc = value; }
            }
            [DisplayNameAttribute("Aceras")]
            [DescriptionAttribute("Atributo a consultar para las Aceras.")]
            [Category("Atributos")]
            public string atr_acera
            {
                get { return LimpiezaDef.Atributos.atr_acera; }
                set { LimpiezaDef.Atributos.atr_acera = value; }
            }
            [DisplayNameAttribute("Peatonales")]
            [DescriptionAttribute("Atributo a consultar para las Peatonales.")]
            [Category("Atributos")]
            public string atr_peat
            {
                get { return LimpiezaDef.Atributos.atr_peat; }
                set { LimpiezaDef.Atributos.atr_peat = value; }
            }
            [DisplayNameAttribute("Caida de Hoja")]
            [DescriptionAttribute("Atributo a consultar para la Caida de Hoja.")]
            [Category("Atributos")]
            public string atr_hoja
            {
                get { return LimpiezaDef.Atributos.atr_hoja; }
                set { LimpiezaDef.Atributos.atr_hoja = value; }
            }
            [DisplayNameAttribute("Zonas Infantiles")]
            [DescriptionAttribute("Atributo a consultar para las Zonas Infantiles.")]
            [Category("Atributos")]
            public string atr_infan
            {
                get { return LimpiezaDef.Atributos.atr_infan; }
                set { LimpiezaDef.Atributos.atr_infan = value; }
            }
            [DisplayNameAttribute("Papeleras")]
            [DescriptionAttribute("Atributo a consultar para las Papeleras.")]
            [Category("Atributos")]
            public string atr_pape
            {
                get { return LimpiezaDef.Atributos.atr_pape; }
                set { LimpiezaDef.Atributos.atr_pape = value; }
            }
            [DisplayNameAttribute("Pipicanes")]
            [DescriptionAttribute("Atributo a consultar para los Pipicanes.")]
            [Category("Atributos")]
            public string atr_pipi
            {
                get { return LimpiezaDef.Atributos.atr_pipi; }
                set { LimpiezaDef.Atributos.atr_pipi = value; }
            }
            [DisplayNameAttribute("Sanecanes")]
            [DescriptionAttribute("Atributo a consultar para los Sanecanes.")]
            [Category("Atributos")]
            public string atr_sane
            {
                get { return LimpiezaDef.Atributos.atr_sane; }
                set { LimpiezaDef.Atributos.atr_sane = value; }
            } 
        }
        ////////////////////////////////////////////////////        
        public LimpCamposProps props;
        public LimpCampos(Limpieza limp)
        {
            props = new LimpCamposProps();
            Text = "Campos de la capa de Limpieza";
            reinicia();
            propertyGrid.SelectedObject = props;
            this.limp = limp;
        }

        private void reinicia()
        {
            props.camp_nom_tipo_ent = LimpiezaDef.Campos.consulta_entidad;
            props.camp_mecaniz = LimpiezaDef.Campos.consulta_mecan;

            props.atr_bord = LimpiezaDef.Atributos.atr_bord;
            props.atr_aparc = LimpiezaDef.Atributos.atr_aparc;
            props.atr_acera = LimpiezaDef.Atributos.atr_acera;
            props.atr_peat = LimpiezaDef.Atributos.atr_peat;
            props.atr_hoja = LimpiezaDef.Atributos.atr_hoja;
            props.atr_infan = LimpiezaDef.Atributos.atr_infan;
            props.atr_pape = LimpiezaDef.Atributos.atr_pape;
            props.atr_pipi = LimpiezaDef.Atributos.atr_pipi;
            props.atr_sane = LimpiezaDef.Atributos.atr_sane;         
        }

        protected override void button_reset_Click(object sender, EventArgs e)
        {
            reinicia();
            propertyGrid.Refresh();
        }

        /*
         * Se validan los campos modificados y se guarda en memoria los nombres de los nuevos campos.
         */
        protected override void btn_acept_Click(object sender, EventArgs e)
        {
            LimpiezaDef.Campos.consulta_entidad = props.camp_nom_tipo_ent;
            LimpiezaDef.Campos.consulta_mecan = props.camp_mecaniz;

             LimpiezaDef.Atributos.atr_bord = props.atr_bord;
             LimpiezaDef.Atributos.atr_aparc = props.atr_aparc;
             LimpiezaDef.Atributos.atr_acera = props.atr_acera;
             LimpiezaDef.Atributos.atr_peat = props.atr_peat;
             LimpiezaDef.Atributos.atr_hoja = props.atr_hoja;
             LimpiezaDef.Atributos.atr_infan = props.atr_infan;
             LimpiezaDef.Atributos.atr_pape = props.atr_pape;
             LimpiezaDef.Atributos.atr_pipi = props.atr_pipi;
             LimpiezaDef.Atributos.atr_sane = props.atr_sane;

             OliviaGlob.forma_filtros_limp();

             DialogResult = DialogResult.OK;

            base.Close();
        }

        private void InitializeComponent()
        {
            this.SuspendLayout();
            // 
            // LimpCampos
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.ClientSize = new System.Drawing.Size(292, 309);
            this.Name = "LimpCampos";
            this.ResumeLayout(false);

        }

        protected override void button_guardar_Click(object sender, EventArgs e)
        {
            OliviaGlob.forma_filtros_limp();
            base.button_guardar_Click(sender, e);
        }
    }
}
