年度变更建库软件5.0版本
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

100 lines
3.2 KiB

4 months ago
using DevExpress.XtraBars;
using DevExpress.XtraBars.Ribbon;
using ESRI.ArcGIS.SystemUI;
using KGIS.Framework.Maps;
using KGIS.Framework.Menus.Services;
using KGIS.Framework.Views;
using Kingo.PluginServiceInterface;
using System;
using UIShell.OSGi;
namespace Kingo.Plugin.MapView.Services
{
public class MainViewClass : IMainView<IMapsView>, IRefreshMenuStatus
{
IBundleContext _context;
IMapsView _view;
RibbonControl _mainMenu = null;
IMenuService _MenuService = null;
public MainViewClass(IBundleContext context)
{
_context = context;
_view = new MapsViewClass(_context);
DocumentView = _view.ucMapCtrl;
DefaultLeftDockPanel = _view.ucDataCatalog;
Hook = _view.Hook;
}
public IDockPanel DefaultLeftDockPanel { get; set; }
public IDocumentView DocumentView { get; set; }
public IDockPanel DefaultRightDockPanel { get; set; }
public IDockPanel DefaultBottomDockPanel { get; set; }
public IDockPanel DefaultFloatDockPanel { get; set; }
public object Hook { get; set; }
public void InitUI(IMapsView t)
{
}
public void InitUI(RibbonControl pMainMenu)
{
_mainMenu = pMainMenu;
_MenuService = BundleRuntime.Instance.GetFirstOrDefaultService<IMenuService>();
_MenuService.MenuItemClick += (s, e) => {
if (s is ICommand)
{
(s as ICommand).OnClick();
}
};
}
public void InitUI()
{
object o = MapsManager.Instance;
}
public void RefreshMenuOrToolState()
{
MapsManager.Instance.MapService.RefreshToolState();
RefreshMenuState(null);
}
public void RefreshMenuState(object currentTool)
{
try
{
if (_mainMenu == null) return;
foreach (RibbonPage page in _mainMenu.Pages)
{
foreach (RibbonPageGroup group in page.Groups)
{
foreach (BarItemLink item in group.ItemLinks)
{
if (item.Item.Tag is ICommand)
{
item.Item.Enabled = (item.Item.Tag as ICommand).Enabled;
if (item.Item is BarCheckItem)
{
(item.Item as BarCheckItem).Checked = (item.Item.Tag as ICommand).Checked;
if (currentTool == item.Item.Tag)
{
(item.Item as BarCheckItem).Checked = true;
}
}
}
}
}
}
}
catch (Exception ex)
{
//LogAPI.Debug("刷新工具条状态时发生异常,异常信息如下:");
//LogAPI.Debug(ex);
//LogAPI.Debug("异常信息结束");
}
}
}
}