using System; using System.Collections.Generic; using System.Linq; using System.Text; 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; namespace Kingo.Plugin.MapView.Commands { [Guid("d6cf0401-78d0-4f87-b6e4-7b306f7d2014")] [ClassInterface(ClassInterfaceType.None)] [ProgId("KGIS.Commands.LayerSelectableCommand")] public class LayerSelectableOnlyOneCommand : BaseCommand, ICommandSubType { //private IMapControl3 m_mapControl; public long m_subType = 1; private bool Selectable = true; private IHookHelper m_hookHelper = null; public void LayerSelectable() { } public override void OnCreate(object hook) { if (m_hookHelper == null) { m_hookHelper = new HookHelper(); m_hookHelper.Hook = hook; } } public override void OnClick() { IFeatureLayer layer = m_hookHelper.GetCustomProperty() as IFeatureLayer; if (layer == null) { m_hookHelper.Hook = MapsManager.Instance.MapService.Hook; layer = m_hookHelper.GetCustomProperty() as IFeatureLayer; } if (layer != null) { //if (m_subType == 1) //{ // layer.Selectable = true; //} //else if (m_subType == 2) //{ List allLayers = MapsManager.Instance.MapService.GetAllLayerInMap();//LayerHelper.GetAllLayerInMap(this.m_hookHelper.FocusMap); foreach (var item in allLayers) { if (item != null) { item.Selectable = !Selectable; } } layer.Selectable = Selectable; Selectable = !Selectable; //} //else if (m_subType == 3) //{ // layer.Selectable = false; //} } } 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 (Selectable) return "将此图层设置成唯一可选图层"; else return "将此图层设置成唯一不可选图层"; } } } }