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.
		
		
		
		
		
			
		
			
				
					
					
						
							334 lines
						
					
					
						
							11 KiB
						
					
					
				
			
		
		
	
	
							334 lines
						
					
					
						
							11 KiB
						
					
					
				using DevExpress.XtraEditors; | 
						|
using DevExpress.XtraTreeList; | 
						|
using DevExpress.XtraTreeList.Nodes; | 
						|
using KGIS.Framework.Utils; | 
						|
using KGIS.Framework.Utils.Helper; | 
						|
using KGIS.Plugin.LayerProperty.EventHandler; | 
						|
using KGIS.Plugin.LayerProperty.Interface; | 
						|
using KGIS.Plugin.LayerProperty.Utils; | 
						|
using System; | 
						|
using System.Collections.Generic; | 
						|
using System.IO; | 
						|
using System.Windows.Forms; | 
						|
 | 
						|
namespace KGIS.Plugin.LayerProperty.View | 
						|
{ | 
						|
    public partial class FormGalleryPathSelector : XtraForm, IUIPlugIn, IPlugIn | 
						|
    { | 
						|
        private TreeListNode m_LocalRootNode; | 
						|
        private TreeListNode m_DBRootNode; | 
						|
        private KGIS.Framework.Utils.Dialog.OpenFileDialog m_OpenFileDialog; | 
						|
        private IDoStyleGalleryStorage m_DistStyleGalleryStorage; | 
						|
        private IDoStyleGallery m_DistStyleGallery; | 
						|
        private object selectedPath; | 
						|
        public string UpdateTextName; | 
						|
        public object SelectedPath | 
						|
        { | 
						|
            get | 
						|
            { | 
						|
                return this.selectedPath; | 
						|
            } | 
						|
            set | 
						|
            { | 
						|
                this.selectedPath = value; | 
						|
            } | 
						|
        } | 
						|
        public ICoreRDBHelper RDBHelper | 
						|
        { | 
						|
            get; | 
						|
            //{ | 
						|
            //    return RdbUtil.RDBHelper; | 
						|
            //} | 
						|
            set; | 
						|
            //{ | 
						|
            //    RdbUtil.RDBHelper = value; | 
						|
            //} | 
						|
        } | 
						|
        public ITraceHandler TraceHandler | 
						|
        { | 
						|
            get; | 
						|
            //{ | 
						|
            //    return RdbUtil.TraceHandler; | 
						|
            //} | 
						|
            set; | 
						|
            //{ | 
						|
            //    RdbUtil.TraceHandler = value; | 
						|
            //} | 
						|
        } | 
						|
        public ILogEvent Log | 
						|
        { | 
						|
            set | 
						|
            { | 
						|
                //RdbUtil.Log = value; | 
						|
            } | 
						|
        } | 
						|
        public FormGalleryPathSelector() | 
						|
        { | 
						|
            InitializeComponent(); | 
						|
        } | 
						|
        public void Init() | 
						|
        { | 
						|
            try | 
						|
            { | 
						|
                this.tlstGalleryTree.Nodes.Clear(); | 
						|
                this.tlstGalleryTree.OptionsBehavior.Editable = false; | 
						|
                TreeListNode treeListNode = this.tlstGalleryTree.AppendNode(new object[] | 
						|
                { | 
						|
                    "数据库图库" | 
						|
                }, null); | 
						|
                treeListNode.Tag = null; | 
						|
                treeListNode.StateImageIndex = 0; | 
						|
                this.RefreshRootNode(treeListNode); | 
						|
                this.m_DBRootNode = treeListNode; | 
						|
                TreeListNode treeListNode2 = this.tlstGalleryTree.AppendNode(new object[] | 
						|
                { | 
						|
                    "本地图库" | 
						|
                }, null); | 
						|
                treeListNode2.Tag = "local"; | 
						|
                treeListNode2.StateImageIndex = 0; | 
						|
                this.m_LocalRootNode = treeListNode2; | 
						|
                AddLocalFile(); | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                //RdbUtil.AddException(ex); | 
						|
            } | 
						|
        } | 
						|
        private void AddLocalFile() | 
						|
        { | 
						|
            try | 
						|
            { | 
						|
                string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"工作空间\符号库"); | 
						|
                if (Directory.Exists(path)) | 
						|
                { | 
						|
                    string[] fileInfo = Directory.GetFiles(path, "*.ServerStyle?"); | 
						|
                    if (fileInfo != null && fileInfo.Length > 0) | 
						|
                    { | 
						|
                        foreach (string text in fileInfo) | 
						|
                        { | 
						|
                            this.AddFile(text); | 
						|
                        } | 
						|
                    } | 
						|
 | 
						|
                } | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                throw ex; | 
						|
            } | 
						|
        } | 
						|
        private void RefreshRootNode(TreeListNode node) | 
						|
        { | 
						|
            try | 
						|
            { | 
						|
                if (node != null) | 
						|
                { | 
						|
                    node.Nodes.Clear(); | 
						|
                    StyleGalleryFactory.Clear(); | 
						|
                    StyleGalleryFactory.LoadAllDistStyleGalleryPath(); | 
						|
                    List<IDoStyleGalleryPath> distStyleGalleryPathList = StyleGalleryFactory.DistStyleGalleryPathList; | 
						|
                    foreach (IDoStyleGalleryPath current in distStyleGalleryPathList) | 
						|
                    { | 
						|
                        TreeListNode treeListNode = this.tlstGalleryTree.AppendNode(new object[] | 
						|
                        { | 
						|
                            current.Name | 
						|
                        }, node); | 
						|
                        treeListNode.Tag = current; | 
						|
                        treeListNode.StateImageIndex = 5; | 
						|
                    } | 
						|
                    if (node.Nodes.Count > 0) | 
						|
                    { | 
						|
                        this.tlstGalleryTree.FocusedNode = node.Nodes[0]; | 
						|
                        node.Nodes[0].Selected = true; | 
						|
                    } | 
						|
                } | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                //RdbUtil.AddException(ex); | 
						|
            } | 
						|
        } | 
						|
        private void tlstGalleryTree_FocusedNodeChanged(object sender, FocusedNodeChangedEventArgs e) | 
						|
        { | 
						|
            try | 
						|
            { | 
						|
                this.btnOK.Enabled = true; | 
						|
                if (e.Node == null) | 
						|
                { | 
						|
                    this.btnOK.Enabled = false; | 
						|
                } | 
						|
                if (e.Node == this.m_LocalRootNode) | 
						|
                { | 
						|
                    this.btnOK.Enabled = false; | 
						|
                } | 
						|
                if (e.Node == this.m_DBRootNode) | 
						|
                { | 
						|
                    this.btnOK.Enabled = false; | 
						|
                } | 
						|
                this.selectedPath = e.Node.Tag; | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                //RdbUtil.AddException(ex); | 
						|
            } | 
						|
        } | 
						|
        private string OpenServerStyleFile() | 
						|
        { | 
						|
            if (this.m_OpenFileDialog == null) | 
						|
            { | 
						|
                this.m_OpenFileDialog = new KGIS.Framework.Utils.Dialog.OpenFileDialog(); | 
						|
            } | 
						|
            this.m_OpenFileDialog.Filter = "ESRI ServerStyle(*.ServerStyle)|*.ServerStyle"; | 
						|
            if (this.m_DistStyleGalleryStorage != null) | 
						|
                this.m_OpenFileDialog.InitialDirectory = this.m_DistStyleGalleryStorage.DefaultStylePath; | 
						|
            if (this.m_OpenFileDialog.ShowDialog()) | 
						|
            { | 
						|
                return this.m_OpenFileDialog.FileName; | 
						|
            } | 
						|
            return ""; | 
						|
        } | 
						|
        private void AddFile(string filename) | 
						|
        { | 
						|
            if (!File.Exists(filename)) | 
						|
            { | 
						|
                return; | 
						|
            } | 
						|
            bool flag = false; | 
						|
            if (this.m_LocalRootNode != null && this.m_LocalRootNode.Nodes != null && this.m_LocalRootNode.Nodes.Count > 0) | 
						|
            { | 
						|
                foreach (TreeListNode treeListNode in this.m_LocalRootNode.Nodes) | 
						|
                { | 
						|
                    if (treeListNode.Tag.ToString() == filename) | 
						|
                    { | 
						|
                        flag = true; | 
						|
                    } | 
						|
                } | 
						|
            } | 
						|
            if (!flag) | 
						|
            { | 
						|
                FileInfo fileInfo = new FileInfo(filename); | 
						|
                TreeListNode treeListNode2 = this.tlstGalleryTree.AppendNode(new object[] | 
						|
                { | 
						|
                    fileInfo.Name | 
						|
                }, this.m_LocalRootNode); | 
						|
                treeListNode2.Tag = fileInfo.FullName; | 
						|
            } | 
						|
        } | 
						|
        public bool Save() | 
						|
        { | 
						|
            return true; | 
						|
        } | 
						|
        public void DiscardModify() | 
						|
        { | 
						|
        } | 
						|
        public bool CanLeave() | 
						|
        { | 
						|
            return true; | 
						|
        } | 
						|
        public void RefreshData() | 
						|
        { | 
						|
        } | 
						|
        public void SimpleCallBack(CallBack<string> param) | 
						|
        { | 
						|
        } | 
						|
        public void Initialize() | 
						|
        { | 
						|
        } | 
						|
        private void btnOK_Click(object sender, System.EventArgs e) | 
						|
        { | 
						|
            if (this.tlstGalleryTree.FocusedNode != null && this.tlstGalleryTree.FocusedNode.Tag != null) | 
						|
            { | 
						|
                base.DialogResult = DialogResult.OK; | 
						|
                this.UpdateTextName = this.tlstGalleryTree.FocusedNode.Tag.ToString(); | 
						|
                base.Close(); | 
						|
            } | 
						|
        } | 
						|
        private void btnCancel_Click(object sender, System.EventArgs e) | 
						|
        { | 
						|
            base.DialogResult = DialogResult.Cancel; | 
						|
            base.Close(); | 
						|
        } | 
						|
        private void btnAddStyleFile_Click(object sender, System.EventArgs e) | 
						|
        { | 
						|
            string text = this.OpenServerStyleFile(); | 
						|
            if (text != "") | 
						|
            { | 
						|
                this.AddFile(text); | 
						|
            } | 
						|
        } | 
						|
        private void btnDelete_Click(object sender, System.EventArgs e) | 
						|
        { | 
						|
            try | 
						|
            { | 
						|
                string str = null; | 
						|
                TreeListNodes treeListNode = this.tlstGalleryTree.Nodes; | 
						|
                if (tlstGalleryTree.FocusedNode.Tag == null) | 
						|
                { | 
						|
                    MessageHelper.Show("数据库图库不能删除!!!"); | 
						|
                    return; | 
						|
                } | 
						|
                str = tlstGalleryTree.FocusedNode.Tag.ToString(); | 
						|
 | 
						|
                if (this.m_LocalRootNode != null && this.m_LocalRootNode.Nodes.Count != 0) | 
						|
                { | 
						|
                    TreeListNodes localtreeListNode = this.m_LocalRootNode.Nodes;//删除本地图库下的节点 | 
						|
                    foreach (TreeListNode item in localtreeListNode) | 
						|
                    { | 
						|
                        if (str != null && item.Tag != null && item.Tag.ToString() == str) | 
						|
                        { | 
						|
                            this.m_LocalRootNode.Nodes.Remove(item); | 
						|
                            MessageHelper.ShowTips("删除成功!"); | 
						|
                            return; | 
						|
                        } | 
						|
                    } | 
						|
                } | 
						|
 | 
						|
                foreach (TreeListNode item in treeListNode)//删除数据库图库,本地图库节点 | 
						|
                { | 
						|
                    if (str != null &&  item.Tag != null && item.Tag.ToString() == str) | 
						|
                    { | 
						|
                        this.tlstGalleryTree.Nodes.Remove(item); | 
						|
                        MessageHelper.ShowTips("删除成功!"); | 
						|
                        return; | 
						|
                    } | 
						|
                } | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                LogAPI.Debug(ex); | 
						|
                MessageHelper.ShowError("删除失败!"); | 
						|
 | 
						|
            } | 
						|
 | 
						|
        } | 
						|
        private void tlstGalleryTree_MouseDoubleClick(object sender, MouseEventArgs e) | 
						|
        { | 
						|
            try | 
						|
            { | 
						|
                TreeListHitInfo treeListHitInfo = this.tlstGalleryTree.CalcHitInfo(System.Windows.Forms.Control.MousePosition); | 
						|
                if (treeListHitInfo != null) | 
						|
                { | 
						|
                    TreeListNode treeListNode = treeListHitInfo.Node; | 
						|
                    if (treeListNode == null) | 
						|
                    { | 
						|
                        treeListNode = this.tlstGalleryTree.FocusedNode; | 
						|
                    } | 
						|
                    if (treeListNode != null && treeListNode != this.m_LocalRootNode && treeListNode != this.m_DBRootNode) | 
						|
                    { | 
						|
                        this.selectedPath = treeListNode.Tag; | 
						|
                        this.btnOK_Click(null, null); | 
						|
                    } | 
						|
                } | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                //RdbUtil.AddException(ex); | 
						|
            } | 
						|
        } | 
						|
        bool IUIPlugIn.Visible | 
						|
        { | 
						|
            get; | 
						|
            set; | 
						|
        } | 
						|
    } | 
						|
}
 | 
						|
 |