using ComPDFKit.PDFDocument;
using Prism.Mvvm;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;

namespace PDF_Office.Model.BOTA
{
    public class OutlineNode : BindableBase
    {
        /// <summary>
        /// 父类大纲
        /// </summary>
        private OutlineNode parent = null;

        public OutlineNode Parent
        {
            get { return parent; }
            set
            {
                SetProperty(ref parent, value);
            }
        }
        /// <summary>
        /// 当前大纲对象
        /// </summary>
        private CPDFOutline outline = null;

        public CPDFOutline Outline
        {
            get { return outline; }
            set
            {
                SetProperty(ref outline, value);
            }
        }

        /// <summary>
        /// 子类大纲集合
        /// </summary>
        private ObservableCollection<OutlineNode> chlidlist = new ObservableCollection<OutlineNode>();

        public ObservableCollection<OutlineNode> Chlidlist
        {
            get { return chlidlist; }
            set
            {
                SetProperty(ref chlidlist, value);
            }
        }

        /// <summary>
        /// 控制虚线的显示
        /// </summary>
        private bool isInsertNextLayer = false;

        public bool IsInsertNextLayer
        {
            get { return isInsertNextLayer; }
            set
            {
                SetProperty(ref isInsertNextLayer, value);
            }
        }

        /// <summary>
        /// 控制实线的显示
        /// </summary>
        private bool isInsertCurrentLayer = false;

        public bool IsInsertCurrentLayer
        {
            get { return isInsertCurrentLayer; }
            set
            {
                SetProperty(ref isInsertCurrentLayer, value);
            }
        }

        /// <summary>
        /// 当前节点展开状态
        /// </summary>
        private bool isExpanded = false;

        public bool IsExpanded
        {
            get { return isExpanded; }
            set
            {
                SetProperty(ref isExpanded, value);
            }
        }

        private bool isSelected;

        public bool IsSelected
        {
            get { return isSelected; }
            set
            {
                SetProperty(ref isSelected, value);
            }
        }

        private bool canDown = true;

        public bool CanDown
        {
            get { return canDown; }
            set
            {
                SetProperty(ref canDown, value);
            }
        }

        private bool canUp = true;

        public bool CanUp
        {
            get { return canUp; }
            set
            {
                SetProperty(ref canUp, value);
            }
        }

        private bool canAddParent = true;

        public bool CanAddParent
        {
            get { return canAddParent; }
            set
            {
                SetProperty(ref canAddParent, value);
            }
        }

        private Visibility isReName=Visibility.Visible;

        public Visibility IsReName
        {
            get { return isReName; }
            set
            {
                SetProperty(ref isReName, value);
            }
        }



        private string pageIndex = "";

        public string PageIndex
        {
            get { return pageIndex; }
            set
            {
                SetProperty(ref pageIndex, value);
            }
        }

        private double positionX;

        public double PositionX
        {
            get { return positionX; }
            set
            {
                SetProperty(ref positionX, value);
            }
        }

        private double positionY;

        public double PositionY
        {
            get { return positionY; }
            set
            {
                SetProperty(ref positionY, value);
            }
        }

        private double zoom;

        public double Zoom
        {
            get { return zoom; }
            set
            {
                SetProperty(ref zoom, value);
            }
        }

    }
}