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