using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using VIZ.Framework.Core;

namespace VIZ.Package.Domain
{
    /// <summary>
    /// 控制对象模型
    /// </summary>
    public class ControlObjectModel : ModelBase
    {
        #region TreeNodeName -- 所在场景节点名称

        private string treeNodeName;
        /// <summary>
        /// 所在场景节点名称
        /// </summary>
        public string TreeNodeName
        {
            get { return treeNodeName; }
            set { treeNodeName = value; this.RaisePropertyChanged(nameof(TreeNodeName)); }
        }

        #endregion

        #region TreeNodePath -- 所在场景节点路径

        private string treeNodePath;
        /// <summary>
        /// 所在场景节点路径
        /// </summary>
        public string TreeNodePath
        {
            get { return treeNodePath; }
            set { treeNodePath = value; this.RaisePropertyChanged(nameof(TreeNodePath)); }
        }

        #endregion

        #region Description -- 描述

        private string description;
        /// <summary>
        /// 描述
        /// </summary>
        public string Description
        {
            get { return description; }
            set { description = value; this.RaisePropertyChanged(nameof(Description)); }
        }

        #endregion

        #region UseAllDirectors -- 使用所有的控制器

        private bool useAllDirectors;
        /// <summary>
        /// 使用所有的控制器
        /// </summary>
        public bool UseAllDirectors
        {
            get { return useAllDirectors; }
            set { useAllDirectors = value; this.RaisePropertyChanged(nameof(UseAllDirectors)); }
        }

        #endregion

        #region FieldDetails -- 字段描述

        private string fieldDetails;
        /// <summary>
        /// 字段描述
        /// </summary>
        public string FieldDetails
        {
            get { return fieldDetails; }
            set { fieldDetails = value; this.RaisePropertyChanged(nameof(FieldDetails)); }
        }

        #endregion

        #region FieldNodes -- 字段节点集合

        private List<ControlFieldNodeModel> fieldNodes = new List<ControlFieldNodeModel>();
        /// <summary>
        /// 字段节点集合
        /// </summary>
        public List<ControlFieldNodeModel> FieldNodes
        {
            get { return fieldNodes; }
            set { fieldNodes = value; this.RaisePropertyChanged(nameof(FieldNodes)); }
        }

        #endregion

        #region AllFiledNodes -- 所有字段节点集合

        private List<ControlFieldNodeModel> allFiledNodes = new List<ControlFieldNodeModel>();
        /// <summary>
        /// 所有字段节点集合
        /// </summary>
        public List<ControlFieldNodeModel> AllFiledNodes
        {
            get { return allFiledNodes; }
            set { allFiledNodes = value; this.RaisePropertyChanged(nameof(AllFiledNodes)); }
        }

        #endregion
    }
}
