using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Aucma.Core.Palletiz.Common
{
    /// <summary>
    /// 窗口管理器
    /// </summary>
    public class WindowManager
    {
        static Dictionary<string, WindowStruct> _regWindowContainer = new Dictionary<string, WindowStruct>();

        /// <summary>
        /// 注册类型
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="name"></param>
        /// <param name="owner"></param>
        public static void Register<T>(string name, System.Windows.Window owner = null)
        {
            if (!_regWindowContainer.ContainsKey(name))
            {
                _regWindowContainer.Add(name, new WindowStruct { WindowType = typeof(T), Owner = owner });
            }
        }

        /// <summary>
        /// 获取对象
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="name"></param>
        /// <param name="dataContext"></param>
        /// <returns></returns>
        public static bool ShowDialog<T>(string name, T dataContext)
        {
            if (_regWindowContainer.ContainsKey(name))
            {
                Type type = _regWindowContainer[name].WindowType;
                //反射创建窗体对象
                var window = (System.Windows.Window)Activator.CreateInstance(type);
                window.Owner = _regWindowContainer[name].Owner;
                window.DataContext = dataContext;
                return window.ShowDialog() == true;
            }

            return false;
        }
    }
    public class WindowStruct
    {
        public Type WindowType { get; set; }
        public System.Windows.Window Owner { get; set; }
    }
}