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, 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(); _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("异常信息结束"); } } } }