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 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 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; } } }