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.
		
		
		
		
		
			
		
			
				
					
					
						
							133 lines
						
					
					
						
							4.9 KiB
						
					
					
				
			
		
		
	
	
							133 lines
						
					
					
						
							4.9 KiB
						
					
					
				using ESRI.ArcGIS.Carto; | 
						|
using ESRI.ArcGIS.Controls; | 
						|
using KGIS.Framework.AE.ExtensionMethod; | 
						|
using KGIS.Framework.Maps; | 
						|
using KGIS.Framework.Platform; | 
						|
using KGIS.Framework.Utils; | 
						|
using KGIS.Framework.Utils.Helper; | 
						|
using Kingo.PluginServiceInterface; | 
						|
using System; | 
						|
using System.Collections.Generic; | 
						|
using System.IO; | 
						|
using System.Linq; | 
						|
using System.Windows.Forms; | 
						|
using UIShell.OSGi; | 
						|
 | 
						|
namespace Kingo.Plugin.MapView.Commands | 
						|
{ | 
						|
    //[PathAttribute("Kingo.Plugin.MapView.Commands.CmdRemoveLayer")] | 
						|
    public class CmdRemoveLayer : BaseMapMenuCommand | 
						|
    { | 
						|
        private LayerCfg StrLayerInfo = null; | 
						|
        public override void OnClick() | 
						|
        { | 
						|
            try | 
						|
            { | 
						|
                if (m_hookHelper == null) return; | 
						|
 | 
						|
                object layer = m_hookHelper.GetCustomProperty(); | 
						|
                if (layer is ILayer) | 
						|
                { | 
						|
                    if (MessageHelper.ShowYesNoAndTips("是否确定移除该图层?") == DialogResult.Yes) | 
						|
                    { | 
						|
                        string strMxdPath = Path.Combine(SysAppPath.GetCurrentAppPath() + "工作空间DTBJK\\初始化工程模板\\LatersToXMLForDTBJK" + ".xml"); | 
						|
                        if (File.Exists(strMxdPath)) | 
						|
                            StrLayerInfo = SerializeAPI.DeserializeToObject2<LayerCfg>(strMxdPath); | 
						|
                        if (StrLayerInfo == null) | 
						|
                            return; | 
						|
                        ILayer layerTemp = layer as ILayer; | 
						|
                        IDataCatalogService _DataCatalog = BundleRuntime.Instance.GetFirstOrDefaultService<IDataCatalogService>(); | 
						|
                        if (_DataCatalog == null) return; | 
						|
                        List<LayerCfg> Layers = (_DataCatalog.CurrentLayers as LayerCfg).GetAllItem(); | 
						|
                        LayerCfg info2 = Layers.FirstOrDefault(x => x.LayerName == layerTemp.Name); | 
						|
                        LayerCfg infoTemp = Layers.FirstOrDefault(x => x.ID == info2.PID); | 
						|
                        if (ContainsLayerRecursive(StrLayerInfo.Layers, info2.LayerName)) | 
						|
                        { | 
						|
                            MessageHelper.ShowWarning("基础配置图层不能移除!"); | 
						|
                            return; | 
						|
                        } | 
						|
                        infoTemp.Layers.Remove(info2); | 
						|
                        _DataCatalog.UpdateTree(); | 
						|
                        Platform.Instance.SendMsg(new KGIS.Framework.Utils.Interface.NotifyMsgPackage() { MsgType = "SaveProject" }); | 
						|
 | 
						|
                        m_hookHelper.FocusMap.DeleteLayer(layer as ILayer); | 
						|
                        m_hookHelper.ActiveView.Refresh(); | 
						|
                        //Platform.Instance.SendMsg(new KGIS.Framework.Utils.Interface.NotifyMsgPackage() { MsgType = "RefreshLayer" }); | 
						|
                    } | 
						|
                } | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                LogAPI.Debug(ex.Message); | 
						|
            } | 
						|
        } | 
						|
 | 
						|
        private bool ContainsLayerRecursive(IEnumerable<LayerCfg> layers, string targetName) | 
						|
        { | 
						|
            return layers?.Any(layer => layer.LayerName == targetName || (layer.Layers != null && ContainsLayerRecursive(layer.Layers, targetName))) ?? false; | 
						|
        } | 
						|
 | 
						|
        public override void OnCreate(object Hook) | 
						|
        { | 
						|
            try | 
						|
            { | 
						|
                if (m_hookHelper == null) | 
						|
                { | 
						|
                    m_hookHelper = new HookHelper(); | 
						|
                    m_hookHelper.Hook = Hook; | 
						|
                } | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                LogAPI.Debug("加载 移除图层 命令时发生异常,异常信息如下:"); | 
						|
                LogAPI.Debug(ex); | 
						|
                LogAPI.Debug("异常信息结束"); | 
						|
            } | 
						|
        } | 
						|
 | 
						|
        public override bool Enabled | 
						|
        { | 
						|
            get | 
						|
            { | 
						|
                return ReomveISEnabled(); | 
						|
            } | 
						|
        } | 
						|
 | 
						|
        private bool ReomveISEnabled() | 
						|
        { | 
						|
            bool iSEnabled = true; | 
						|
            try | 
						|
            { | 
						|
                object layer = m_hookHelper.GetCustomProperty(); | 
						|
                if (layer is ILayer) | 
						|
                { | 
						|
                    IFeatureLayer featurelayer = layer as IFeatureLayer; | 
						|
                    if (featurelayer is ESRI.ArcGIS.Geodatabase.IDataset) | 
						|
                    { | 
						|
                        ESRI.ArcGIS.Geodatabase.IDataset dataset = featurelayer as ESRI.ArcGIS.Geodatabase.IDataset; | 
						|
                        string layername = dataset.BrowseName; | 
						|
                        if (layername == "BHTB" || layername == "DHCG") | 
						|
                        { | 
						|
                            iSEnabled = false; | 
						|
                        } | 
						|
                        else | 
						|
                        { | 
						|
                            iSEnabled = true; | 
						|
                        } | 
						|
                    } | 
						|
                } | 
						|
                else | 
						|
                { | 
						|
                    iSEnabled = true; | 
						|
                } | 
						|
                return iSEnabled; | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                LogAPI.Debug(ex.Message); | 
						|
                return iSEnabled; | 
						|
            } | 
						|
        } | 
						|
 | 
						|
    } | 
						|
}
 | 
						|
 |