using MainShell.Filewritable;
using MXJM.FileWritable;
using Stylet;
using System.Collections.Generic;

namespace MainShell.ParaSetting.Model
{
    public class AxisSoftLimitSetting : JsonFileWritableBase
    {
        private List<AxisSoftLimitItem> _axisSoftLimitItems = new List<AxisSoftLimitItem>();

        public override string Dir => Paths.CalibSettingPath;

        public override string FileName => "AxisSoftLimitSetting.json";

        public List<AxisSoftLimitItem> AxisSoftLimitItems
        {
            get
            {
                return _axisSoftLimitItems;
            }
            set
            {
                _axisSoftLimitItems = value ?? new List<AxisSoftLimitItem>();
            }
        }
    }

    public class AxisSoftLimitItem : PropertyChangedBase
    {
        private string _axisName;
        private string _cardName;
        private int _cardNum;
        private int _axisNum;
        private double _negativeSoftLimit;
        private double _positiveSoftLimit;

        public string AxisName
        {
            get
            {
                return _axisName;
            }
            set
            {
                SetAndNotify(ref _axisName, value);
            }
        }

        public string CardName
        {
            get
            {
                return _cardName;
            }
            set
            {
                SetAndNotify(ref _cardName, value);
            }
        }

        public int CardNum
        {
            get
            {
                return _cardNum;
            }
            set
            {
                SetAndNotify(ref _cardNum, value);
            }
        }

        public int AxisNum
        {
            get
            {
                return _axisNum;
            }
            set
            {
                SetAndNotify(ref _axisNum, value);
            }
        }

        public double NegativeSoftLimit
        {
            get
            {
                return _negativeSoftLimit;
            }
            set
            {
                SetAndNotify(ref _negativeSoftLimit, value);
            }
        }

        public double PositiveSoftLimit
        {
            get
            {
                return _positiveSoftLimit;
            }
            set
            {
                SetAndNotify(ref _positiveSoftLimit, value);
            }
        }
    }
}
