using ESRI.ArcGIS.Controls;
using KGIS.Framework.Commands;
using KGIS.Framework.Platform;
using KGIS.Framework.Utils;
using KGIS.Framework.Utils.Helper;
using KGIS.Framework.Views;
using Kingo.PluginServiceInterface;
using System;
using UIShell.OSGi;
namespace Kingo.Plugin.MapView.Commands
{
    /// 
    /// 关闭工程
    /// 
    public class CmdCloseProject : BaseMenuCommand
    {
        /// 
        /// 编辑器
        /// 
        private IEngineEditor m_Editor;
        public object CmdParameter { get; set; }
        public IHookHelper m_hookHelper { get; set; }
        private IViewManager m_ViewManager;
        public override void OnClick()
        {
            try
            {
                if (MessageHelper.ShowYesNoAndTips("是否要关闭当前工程?") == System.Windows.Forms.DialogResult.No)
                {
                    return;
                }
                if (m_Editor.EditState != esriEngineEditState.esriEngineStateNotEditing)
                {
                    MessageHelper.ShowTips("当前工程正处于编辑状态,关闭之前请先结束编辑!");
                    return;
                }
                if (Platform.Instance.SystemType == SystemTypeEnum.BGFWCG)
                {
                    IUcMulitMapControlHelper ucMulitMapControlHelper = BundleRuntime.Instance.GetFirstOrDefaultService();
                    if (ucMulitMapControlHelper != null)
                    {
                        ucMulitMapControlHelper.ClearData();
                    }
                    IUcZYQMagrHelper ucZYQMagrHelper = BundleRuntime.Instance.GetFirstOrDefaultService();
                    if (ucZYQMagrHelper != null)
                    {
                        ucZYQMagrHelper.ClearData();
                    }
                }
                KGIS.Framework.Maps.MapsManager.Instance.MapService.CloseProject();
                Platform.Instance.SendMsg(new KGIS.Framework.Utils.Interface.NotifyMsgPackage() { MsgType = "RefreshLayer" });
                //关闭前关闭所有的未关闭的窗体
                //m_ViewManager = Platform.Instance.ViewManager;
                //m_ViewManager.CloseAllDocument();
                //m_ViewManager.CloseAllPanel();
            }
            catch (Exception ex)
            {
                LogAPI.Debug("关闭工程时发生异常,异常信息如下:");
                LogAPI.Debug(ex);
                LogAPI.Debug("异常信息结束");
            }
        }
        public override void OnCreate(object Hook)
        {
            try
            {
                if (m_hookHelper == null)
                {
                    m_hookHelper = new HookHelper
                    {
                        Hook = Hook
                    };
                }
                if (m_Editor == null)
                    m_Editor = new EngineEditorClass();
            }
            catch (Exception ex)
            {
                LogAPI.Debug("初始化 关闭工程命令 时异常,异常信息如下:");
                LogAPI.Debug(ex);
                LogAPI.Debug("初始化 关闭工程命令 时异常信息结束");
            }
        }
        public override bool Enabled
        {
            get
            {
                //验证是否打开工程
                object ProInfo = KGIS.Framework.Maps.MapsManager.Instance.MapService.GetProjectInfo();
                if (ProInfo == null)
                    return false;
                else
                    return true;
            }
        }
    }
}