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; } } } }