using ComPDFKitViewer.AnnotEvent;
using ComPDFKitViewer.PdfViewer;
using PDF_Office.Model;
using Prism.Mvvm;
using Prism.Regions;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Media;

namespace PDF_Office.ViewModels.Form
{
    public class ButtonPropertyViewModel : FormBaseVM, INavigationAware
    {
        #region 属性

        #region 选项
        //标签
        private string _labelContent;
        public string LabelContent
        {
            get { return _labelContent; }
            set { SetProperty(ref _labelContent, value); }
        }

        private string _emailContent;
        public string EmailContent
        {
            get { return _emailContent; }
            set { SetProperty(ref _emailContent, value); }
        }

        #endregion


        #endregion

        #region Command

        #endregion

        #region 变量
        private CPDFViewer PDFViewer;
        private WidgetPushButtonArgs pushButtonArgs;
        #endregion

        #region 初始化
        public ButtonPropertyViewModel()
        {
            InitVariable();
            InitCommand();
        }

        private void InitVariable()
        {

        }

        private void InitCommand()
        {
            ChangeValueHandler -= ChangeValue;
            ChangeValueHandler += ChangeValue;
        }

      
        #endregion


        #region 一般处理

        #endregion

        #region 外观处理

        #endregion

        #region 选项处理

        #endregion

        #region Navegation
        public bool IsNavigationTarget(NavigationContext navigationContext)
        {
            return true;
        }

        public void OnNavigatedFrom(NavigationContext navigationContext)
        {
            pushButtonArgs = null;
        }

        public void OnNavigatedTo(NavigationContext navigationContext)
        {
            navigationContext.Parameters.TryGetValue<CPDFViewer>(ParameterNames.PDFViewer, out PDFViewer);
            navigationContext.Parameters.TryGetValue<WidgetPushButtonArgs>("WidgetArgs", out pushButtonArgs);

            GetWidgeText();
            GetProperty();
        }

        private void GetWidgeText()
        {
            PDFViewer.SetMouseMode(MouseModes.FormEditTool);
            if (pushButtonArgs == null)
            {
                WidgetPushButtonArgs pushButtonArgs = new WidgetPushButtonArgs();
                pushButtonArgs.BgColor = Colors.White;
                pushButtonArgs.FontFamily = "Courier New";
                pushButtonArgs.FontSize = 12;
                pushButtonArgs.FontColor = Colors.Black;
                pushButtonArgs.LineColor = Colors.Black;
                pushButtonArgs.LineWidth = 1;
                var action = new Dictionary<ComPDFKit.PDFDocument.Action.C_ACTION_TYPE, string>();
                action.Add(ComPDFKit.PDFDocument.Action.C_ACTION_TYPE.ACTION_TYPE_URI, "");
                pushButtonArgs.ActionDict = action;
                pushButtonArgs.FieldName = "PushButton";
                pushButtonArgs.Text = "PushButton";

                this.pushButtonArgs = pushButtonArgs;
                PDFViewer.SetToolParam(pushButtonArgs);
            }
            else
            {
                PDFViewer.SetToolParam(new AnnotHandlerEventArgs());
            }
        }

        private void GetProperty()
        {
            
        }

        //更改基类公共属性后，触发的事件
        private void ChangeValue(object sender, FormAttributeType e)
        {
            switch (e)
            {
                case FormAttributeType.Name:
                    break;

                case FormAttributeType.ToolTip:

                    break;

                case FormAttributeType.IsSolid:
                    break;

                case FormAttributeType.IsLocked:
                    break;

                case FormAttributeType.HeightSize:
                    break;

                case FormAttributeType.BorderThiness:
                    break;

                case FormAttributeType.BorderColor:
                    break;

                case FormAttributeType.ContentColor:
                    break;

                case FormAttributeType.IsReadOnly:
                    break;

                case FormAttributeType.WidthSize:
                    break;

                case FormAttributeType.IsRequiredField:
                    break;

            }

        }
        #endregion
    }
}
