using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using ArcGIS.Core.CIM;
using ArcGIS.Core.Data;
using ArcGIS.Core.Geometry;
using ArcGIS.Desktop.Catalog;
using ArcGIS.Desktop.Core;
using ArcGIS.Desktop.Editing;
using ArcGIS.Desktop.Extensions;
using ArcGIS.Desktop.Framework;
using ArcGIS.Desktop.Framework.Contracts;
using ArcGIS.Desktop.Framework.Dialogs;
using ArcGIS.Desktop.Framework.Threading.Tasks;
using ArcGIS.Desktop.Mapping;
using OliviaAddInPro.Model;

namespace OliviaAddInPro
{
    public class PaneLimpiezaSub2ViewModel : PanelViewModelBase
    {
        public PaneLimpiezaSub2ViewModel()
        {
            lblCapaRestr= lblCapaNiv= lblCapaZon= lblCapaInst = Resource1.String_selec_capa;
            txtBuffExport = ComunDef.BuffExport;
        }


        #region Properties     

        public override string DisplayName
        {
            get { return Resource1.String_zonif; }
        }

        private string lblCapaRestr;
        public string LblCapaRestr
        {
            get { return lblCapaRestr; }
            set { base.SetProperty(ref lblCapaRestr, value, () => LblCapaRestr); }
        }
        private string lblCapaNiv;
        public string LblCapaNiv
        {
            get { return lblCapaNiv; }
            set { base.SetProperty(ref lblCapaNiv, value, () => LblCapaNiv); }
        }
        private string lblCapaZon;
        public string LblCapaZon
        {
            get { return lblCapaZon; }
            set { base.SetProperty(ref lblCapaZon, value, () => LblCapaZon); }
        }
        private string lblCapaInst;
        public string LblCapaInst
        {
            get { return lblCapaInst; }
            set { base.SetProperty(ref lblCapaInst, value, () => LblCapaInst); }
        }
        private int txtBuffExport;
        public int TxtBuffExport
        {
            get { return txtBuffExport; }
            set { base.SetProperty(ref txtBuffExport, value, () => TxtBuffExport); }
        }
        private string textLblNiv = "Niveles";
        public string TextLblNiv
        {
            get { return textLblNiv; }
            set { base.SetProperty(ref textLblNiv, value, () => TextLblNiv); }
        }
        /**
         * Geometría para el filtro de ámbitos, incluye zonas, se añaden los ámbitos que pertenecen a esa geom
         */
        public Geometry GeomZon { get; set; } = null;
        /**
         * Geometría para el filtro de ámbitos, incluye zonas, se añaden los ámbitos que pertenecen a esa geom
         */
        public Geometry GeomNiv { get; set; } = null;
        /**
         * Geometría para el filtro de ámbitos, incluye restricciones, se quitan los ámbitos que pertenecen a esa geom
         */
        public Geometry GeomRestr { get; set; } = null;
        /**
         * Coordenadas de la instalación
         */
        public Coordinate2D CoordsInstal { get; set; } = new Coordinate2D(0, 0);
        #endregion Properties
    }
}
