using DevExpress.LookAndFeel; using DevExpress.XtraBars.Docking; using ESRI.ArcGIS.Controls; using KGIS.Framework.Core.Services; using KGIS.Framework.Menus; using KGIS.Framework.Menus.Services; using KGIS.Framework.Platform; using KGIS.Framework.Utils; using KGIS.Framework.Utils.Helper; using KGIS.Framework.Views; using Kingo.PluginServiceInterface; using System; using System.Drawing; using System.Windows.Forms; using UIShell.OSGi; namespace Kingo.PlatformPlugin.Services { class PlatformService : IPlatformService { FrmMain _win; private IBundleContext _context; private Timer _timer; //private UCDataCatalog ucDataCatalog; //private UCMapControl ucMapCtrl; private IBaseMainView baseMainViewService; public PlatformService(IBundleContext context) { _context = context; _win = FrmMain.GetInstance(context); _win.Load += _win_Load; _win.Closing += _win_Closing; } private void _win_Load(object sender, EventArgs e) { } /// /// 程序右上角X号,关闭当前程序 /// /// /// private void _win_Closing(object sender, System.ComponentModel.CancelEventArgs e) { try { EngineEditor editor = new EngineEditorClass(); if (editor.EditState == esriEngineEditState.esriEngineStateEditing) { MessageHelper.ShowTips("当前工程正处于编辑状态,请先关闭编辑!"); e.Cancel = true; return; } if (MessageHelper.ShowYesNoAndTips(sender as IWin32Window, "是否退出系统?") != DialogResult.Yes) { e.Cancel = true; } else { System.Diagnostics.Process[] pro = System.Diagnostics.Process.GetProcessesByName("adb.exe"); foreach (System.Diagnostics.Process p in pro) { if (!string.IsNullOrEmpty(p.ProcessName)) { try { p.Kill(); } catch (Exception ex) { LogAPI.Debug(ex); } } } //GC.Collect(); //20231030 王冠杰 注释 软件关闭 未响应 //Platform.Instance.SendMsg(new KGIS.Framework.Utils.Interface.NotifyMsgPackage() { MsgType = "SaveProject" }); System.Environment.Exit(0); //Application.ExitThread(); //Application.Exit(); } } catch (Exception ex) { LogAPI.Debug("关闭当前程序报错:" + ex.Message); } } public Form Instance => _win; public void InitUI(object args) { try { System.Windows.Forms.Application.DoEvents(); //设置系统风格 //DevExpress.UserSkins.BonusSkins.Register(); //DevExpress.Skins.SkinManager.EnableFormSkins(); UserLookAndFeel.Default.SetSkinStyle("Office 2016 Colorful"); switch (Platform.Instance.SystemType) { case SystemTypeEnum.NDBGJK: break; case SystemTypeEnum.WYZS: break; case SystemTypeEnum.TBBG: UserLookAndFeel.Default.SetSkinMaskColors(Color.FromArgb(255, 135, 206, 235), Color.White); UserLookAndFeel.Default.SkinMaskColor = Color.FromArgb(255, 135, 206, 235); break; case SystemTypeEnum.BGFWCG: UserLookAndFeel.Default.SetSkinMaskColors(Color.FromArgb(255, 240, 128, 128), Color.White); UserLookAndFeel.Default.SkinMaskColor = Color.FromArgb(255, 240, 128, 128); break; default: break; } //DevExpress.XtraEditors.WindowsFormsSettings.DefaultLookAndFeel.SetSkinStyle("Office 2013 White"); baseMainViewService = _context.GetFirstOrDefaultService(); DockManager dockManager = null; if (baseMainViewService != null) { if (baseMainViewService.DocumentView is IDockManage) { dockManager = (baseMainViewService.DocumentView as IDockManage).dockManager; } } _context.AddService(new MenuService(_win.RibControl)); //_context.AddService(new AppMenuService(_win.backViewControl)); _context.AddService(new ViewService(_win.dockManager, dockManager, _win.tabbedView, _win.WorkPath)); if (baseMainViewService != null) { baseMainViewService.InitUI(); IRefreshMenuStatus t = baseMainViewService as IRefreshMenuStatus; t.InitUI(_win.RibControl); //object hook = null; //if (baseMainViewService.DocumentView is KGIS.Framework.AE.IKMap) //{ // hook = (baseMainViewService.DocumentView as KGIS.Framework.AE.IKMap).Hook; //} //初始化菜单 Platform.Instance.InitMainMenu(baseMainViewService.Hook); } //初始化系统开始菜单 //Platform.Instance.AppMenuManager.InitAppMenu(hook); //初始化数据目录右键菜单 //Platform.Instance.InitCatalogContextMenus(hook); //Platform.Instance.MapsManager.InitMapTools(); _timer = new Timer(); _timer.Tick += _timer_Tick; _timer.Interval = 1000; _timer.Start(); } catch (Exception ex) { LogAPI.Debug("InitUI异常:" + ex.Message); LogAPI.Debug("InitUI异常:" + ex.StackTrace); } } /// /// 初始化相关服务 /// /// public void InitService() { baseMainViewService = _context.GetFirstOrDefaultService(); DockManager dockManager = null; if (baseMainViewService != null) { //baseMainViewService.InitUI(); if (baseMainViewService.DocumentView is IDockManage) { dockManager = (baseMainViewService.DocumentView as IDockManage).dockManager; } _context.AddService(new MenuService(_win.RibControl)); //_context.AddService(new AppMenuService(_win.backViewControl)); _context.AddService(new ViewService(_win.dockManager, dockManager, _win.tabbedView, _win.WorkPath)); } } int num = 0; private void _timer_Tick(object sender, EventArgs e) { if (num <= 1) num++; if (num == 1) { if (baseMainViewService != null) { //初始化数据目录 //ucDataCatalog.Text = "数据目录"; Platform.Instance.OpenView(baseMainViewService.DefaultLeftDockPanel, false); //初始化地图控件 Platform.Instance.ViewManager.AddDocument(baseMainViewService.DocumentView); } if (Platform.Instance.SystemType == SystemTypeEnum.BGFWCG) { IUcZYQMagrHelper ucZYQMagrHelper = BundleRuntime.Instance.GetFirstOrDefaultService(); if (ucZYQMagrHelper != null) { ucZYQMagrHelper.InitView(); } } IWorkCatalog _workCatalog = _context.GetFirstOrDefaultService(); if (_workCatalog != null) { _workCatalog.Open(); } } Platform.Instance.RefreshMenuState(); if (baseMainViewService != null) baseMainViewService.RefreshMenuOrToolState(); //Platform.Instance.MapsManager.RefreshToolState(); } } }