using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; using ESRI.ArcGIS.ADF.BaseClasses; using ESRI.ArcGIS.SystemUI; using ESRI.ArcGIS.Controls; using ESRI.ArcGIS.Carto; using KGIS.Framework.AE.ExtensionMethod; using KGIS.Framework.Platform; using KGIS.Framework.Maps; using UIShell.OSGi; using Kingo.PluginServiceInterface; namespace Kingo.Plugin.MapView.Commands { [Guid("d6cf0401-78d0-4f87-b6e4-7b306f7d2014")] [ClassInterface(ClassInterfaceType.None)] [ProgId("KGIS.Commands.LayerSelectableCommand")] public class LayerSelectableCommand : BaseCommand, ICommandSubType { public long m_subType = 2; private IHookHelper m_hookHelper = null; private IDataCatalogService _DataCatalog = null; private IFeatureLayer FeatureLayer = null; private LayerCfg layerCfg = null; public override void OnCreate(object hook) { if (m_hookHelper == null) { m_hookHelper = new HookHelper { Hook = hook }; } } public override void OnClick() { if (layerCfg != null && FeatureLayer != null) { if (layerCfg.Selectable) { FeatureLayer.Selectable = false; } else { FeatureLayer.Selectable = true; } Platform.Instance.SendMsg(new KGIS.Framework.Utils.Interface.NotifyMsgPackage() { MsgType = "SaveProject" }); if (_DataCatalog != null) _DataCatalog.UpdateTree(); } } public override bool Enabled { get { return true; } } public int GetCount() { return 3; } public void SetSubType(int SubType) { m_subType = SubType; } public override string Caption { get { if (_DataCatalog == null) _DataCatalog = BundleRuntime.Instance.GetFirstOrDefaultService(); if (_DataCatalog.CurrentLayers == null) return "图层不可选"; LayerCfg layerInfo = _DataCatalog.CurrentLayers as LayerCfg; List lists = layerInfo.GetAllItem(); FeatureLayer = m_hookHelper.GetCustomProperty() as IFeatureLayer; if (!(m_hookHelper.GetCustomProperty() is FeatureLayer)) { m_hookHelper.Hook = MapsManager.Instance.MapService.Hook; FeatureLayer = m_hookHelper.GetCustomProperty() as IFeatureLayer; } if (FeatureLayer == null) return "图层不可选"; layerCfg = lists.FirstOrDefault(x => x.LayerName == FeatureLayer.Name); if (layerCfg != null && !layerCfg.Selectable) return "图层可选"; else return "图层不可选"; } } } }