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.Platform; using KGIS.Framework.Maps; namespace Kingo.Plugin.MapView.Commands { public class AllLayerSelectableCommand : BaseCommand, ICommandSubType { private IHookHelper m_hookHelper = null;// Env.Instance.KMap.HookHelper; public long m_subType = 2; private bool Selectable = true; public AllLayerSelectableCommand() { } public override void OnCreate(object hook) { if (m_hookHelper == null) { m_hookHelper = new HookHelper(); m_hookHelper.Hook = hook; } } public override void OnClick() { List allLayers = MapsManager.Instance.MapService.GetAllLayerInMap();// LayerHelper.GetAllLayerInMap(m_hookHelper.FocusMap); Selectable = !Selectable; foreach (var layer in allLayers) { if (layer == null) continue; if (!Selectable) { layer.Selectable = false; } else { layer.Selectable = true; } } } public override bool Enabled { get { //int canSelectCount = 0; //int notCanSelectCount = 0; //List allLayers = Platform.Instance.MapsService.GetAllLayerInMap();//LayerHelper.GetAllLayerInMap(m_hookHelper.FocusMap); //foreach (var layer in allLayers) //{ // if (layer != null) // { // if (layer.Selectable == false) // { // notCanSelectCount++; // } // else // { // canSelectCount++; // } // } //} //if (m_subType == 1) //{ // //所有图层可选菜单 只有一种情况下不可点击(所有都已经选择上) // return !(notCanSelectCount == 0 && canSelectCount > 0); //} //else //{ // //所有图层不可选菜单只有一种情况下不可点击(所有都没选择上) // return !(canSelectCount == 0 && notCanSelectCount > 0); //} return true; } } public int GetCount() { return 2; } public void SetSubType(int SubType) { m_subType = SubType; } public override string Caption { get { if (!Selectable) return "设置所有图层可选"; else return "设置所有图层不可选"; } } } }