using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Controls;
using KGIS.Framework.Commands;
using KGIS.Framework.Maps;
using KGIS.Framework.Utils;
using KGIS.Framework.Utils.Helper;
using Kingo.Plugin.MapView.Views;
using System;
namespace Kingo.Plugin.MapView.Commands
{
    /// 
    /// 打开最近工程文件
    /// 
    public class CmdOpenAerialView : BaseMenuCommand
    {
        /// 
        /// 打开工程页面
        /// 
        FrmAerialView mView = null;
        IHookHelper hookHelper = null;
        public override void OnClick()
        {
            try
            {
                EngineEditorClass engineEditorClass = new EngineEditorClass();
                if (engineEditorClass.EditState != esriEngineEditState.esriEngineStateNotEditing)
                {
                    MessageHelper.ShowTips("当前工程正处于编辑状态,打开工程之前请先结束编辑!");
                    return;
                }
                ILayer layer = MapsManager.Instance.MapService.GetFeatureLayerByLayerName("行政区");
                if (layer == null)
                {
                    MessageHelper.ShowTips("请进行基础数据加载-行政区!");
                    return;
                }
                if (mView == null)
                {
                    mView = new FrmAerialView(layer);
                    mView.Closed += UcOpenProject_Closed;
                }
                mView.ShowInMainWindow(false);
            }
            catch (Exception ex)
            {
                LogAPI.Debug("在打开工程时发生异常,异常信息如下:" + ex.Message);
            }
        }
        private void UcOpenProject_Closed(object sender, EventArgs e)
        {
            try
            {
                if (mView != null)
                    mView = null;
            }
            catch (Exception ex)
            {
                LogAPI.Debug("在关闭工程时发生异常,异常信息如下:" + ex.Message);
            }
        }
        public override void OnCreate(object Hook)
        {
            try
            {
                if (hookHelper == null)
                {
                    hookHelper = new HookHelper();
                    hookHelper.Hook = Hook;
                }
            }
            catch (Exception ex)
            {
                LogAPI.Debug("在 初始化 打开工程 命令时异常,异常信息如下:");
                LogAPI.Debug(ex);
                LogAPI.Debug("在 初始化 打开工程 命令时异常信息结束");
            }
        }
    }
}