using MainShell.Models;
using Stylet;
using System.Collections.ObjectModel;
using System.ComponentModel;

namespace MainShell.Recipe.Models.SubstrateParameter
{
    public enum SubstrateHeightMeasureMode
    {
        [Description("标准示教位置")]
        StandardTeachPosition = 0,

        [Description("行列坐标+偏移补偿")]
        RowColumnOffset = 1,
    }

    public class SubstrateHeightMeasurePoint : PropertyChangedBase
    {
        private string _pointName;
        public string PointName
        {
            get { return _pointName; }
            set { SetAndNotify(ref _pointName, value); }
        }

        private MPoint _teachPosition = new MPoint();
        public MPoint TeachPosition
        {
            get { return _teachPosition; }
            set { SetAndNotify(ref _teachPosition, value); }
        }

        private int _rowIndex;
        public int RowIndex
        {
            get { return _rowIndex; }
            set { SetAndNotify(ref _rowIndex, value); }
        }

        private int _columnIndex;
        public int ColumnIndex
        {
            get { return _columnIndex; }
            set { SetAndNotify(ref _columnIndex, value); }
        }

        private MPoint _offsetCompensation = new MPoint();
        public MPoint OffsetCompensation
        {
            get { return _offsetCompensation; }
            set { SetAndNotify(ref _offsetCompensation, value); }
        }
    }

    public class SubstrateHeightMeasureSetting : PropertyChangedBase
    {
        private SubstrateHeightMeasureMode _mode = SubstrateHeightMeasureMode.StandardTeachPosition;
        public SubstrateHeightMeasureMode Mode
        {
            get { return _mode; }
            set { SetAndNotify(ref _mode, value); }
        }

        private MPoint _commonOffsetCompensation = new MPoint();
        public MPoint CommonOffsetCompensation
        {
            get { return _commonOffsetCompensation; }
            set { SetAndNotify(ref _commonOffsetCompensation, value); }
        }

        private ObservableCollection<SubstrateHeightMeasurePoint> _points = new ObservableCollection<SubstrateHeightMeasurePoint>();
        public ObservableCollection<SubstrateHeightMeasurePoint> Points
        {
            get { return _points; }
            set { SetAndNotify(ref _points, value); }
        }
    }
}
