|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Drawing;
|
|
|
|
|
using System.IO;
|
|
|
|
|
using System.Windows.Forms;
|
|
|
|
|
using DevExpress.XtraBars;
|
|
|
|
|
using DevExpress.XtraTreeList;
|
|
|
|
|
using DevExpress.XtraTreeList.Nodes;
|
|
|
|
|
using ESRI.ArcGIS.Display;
|
|
|
|
|
using ESRI.ArcGIS.esriSystem;
|
|
|
|
|
using KGIS.Plugin.LayerProperty.Enum;
|
|
|
|
|
using KGIS.Plugin.LayerProperty.EventHandler;
|
|
|
|
|
using KGIS.Plugin.LayerProperty.Interface;
|
|
|
|
|
using KGIS.Plugin.LayerProperty.Utils;
|
|
|
|
|
using KGIS.Plugin.LayerProperty.View.UC_Controls;
|
|
|
|
|
|
|
|
|
|
namespace KGIS.Plugin.LayerProperty.View
|
|
|
|
|
{
|
|
|
|
|
public partial class FormSymbolSelector : DevExpress.XtraEditors.XtraForm, IUIPlugIn, IPlugIn, ISymbolSelector
|
|
|
|
|
{
|
|
|
|
|
private const string ConstStr = "<所有分组>";
|
|
|
|
|
private IDoStyleGalleryStorage m_DistStyleGalleryStorage;
|
|
|
|
|
private IDoStyleGallery m_DistStyleGallery;
|
|
|
|
|
private Dictionary<string, List<ListViewItem>> m_ViewItemDictionary;
|
|
|
|
|
private int m_ClassIndex;
|
|
|
|
|
private TreeListNode m_LocalRootNode;
|
|
|
|
|
private TreeListNode m_DBRootNode;
|
|
|
|
|
private KGIS.Framework.Utils.Dialog.OpenFileDialog m_OpenFileDialog;
|
|
|
|
|
private IDoStyleGalleryItem m_DistStyleGalleryItem;
|
|
|
|
|
private IDoStyleGalleryItem m_SelectSymbol;
|
|
|
|
|
private IUCSymbolAtrribute ucFillSymbolAtrribute;
|
|
|
|
|
private IUCSymbolAtrribute ucMarkSymbolAtrribute;
|
|
|
|
|
private IUCSymbolAtrribute ucLineSymbolAtrribute;
|
|
|
|
|
private IUCSymbolAtrribute ucTextSymbolAtrribute;
|
|
|
|
|
private IUCSymbolAtrribute m_CurrentUc;
|
|
|
|
|
private List<TreeListNode> m_CheckedNodes;
|
|
|
|
|
private IClone m_SrcSymbolClone;
|
|
|
|
|
private ISymbol m_TarCloneSymbol;
|
|
|
|
|
private ISymbol m_DeafultSymbol;
|
|
|
|
|
private object resultSymbol;
|
|
|
|
|
public IDoStyleGalleryItem DoStyleGalleryItem
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return this.m_SelectSymbol;
|
|
|
|
|
}
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
this.m_SelectSymbol = value;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public object ResultSymbol
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return this.resultSymbol;
|
|
|
|
|
}
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
this.resultSymbol = 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 FormSymbolSelector()
|
|
|
|
|
{
|
|
|
|
|
this.InitializeComponent();
|
|
|
|
|
this.m_DistStyleGallery = StyleGalleryFactory.CreateDistStyleGallery();
|
|
|
|
|
this.m_DistStyleGalleryStorage = (this.m_DistStyleGallery as IDoStyleGalleryStorage);
|
|
|
|
|
this.m_CheckedNodes = new List<TreeListNode>();
|
|
|
|
|
this.picPreview.Width = this.gpOptions.Width;//白明雅 2018-12-20 调大宽度
|
|
|
|
|
//Bug-13254 霍岩 2018-11-23 添加窗体已关闭事件
|
|
|
|
|
FormClosed += (sender, e) =>
|
|
|
|
|
{
|
|
|
|
|
if (base.DialogResult != DialogResult.OK)
|
|
|
|
|
{
|
|
|
|
|
this.ResultSymbol = null;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
public void Init()
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
this.tlstGalleryTree.Nodes.Clear();
|
|
|
|
|
this.tlstGalleryTree.OptionsBehavior.Editable = false;
|
|
|
|
|
this.tlstGalleryTree.OptionsView.AutoWidth = true;
|
|
|
|
|
this.tlstGalleryTree.OptionsBehavior.AutoPopulateColumns = true;
|
|
|
|
|
//TreeListNode treeListNode = this.tlstGalleryTree.AppendNode(new object[]
|
|
|
|
|
//{
|
|
|
|
|
// "数据库图库",
|
|
|
|
|
// CheckState.Unchecked
|
|
|
|
|
//}, null);
|
|
|
|
|
//treeListNode.Tag = null;
|
|
|
|
|
//treeListNode.StateImageIndex = 0;
|
|
|
|
|
//this.RefreshRootNode(treeListNode);
|
|
|
|
|
//this.m_DBRootNode = treeListNode;
|
|
|
|
|
TreeListNode treeListNode2 = this.tlstGalleryTree.AppendNode(new object[]
|
|
|
|
|
{
|
|
|
|
|
"本地图库",
|
|
|
|
|
CheckState.Unchecked
|
|
|
|
|
}, null);
|
|
|
|
|
treeListNode2.Tag = "local";
|
|
|
|
|
treeListNode2.StateImageIndex = 0;
|
|
|
|
|
this.m_LocalRootNode = treeListNode2;
|
|
|
|
|
//Bug-13011 霍岩 2018-11-06 加载首个TreeListNode
|
|
|
|
|
NodeChange(treeListNode2);
|
|
|
|
|
}
|
|
|
|
|
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 NodeChange(TreeListNode node)
|
|
|
|
|
{
|
|
|
|
|
this.m_DistStyleGalleryStorage.ClearFiles();
|
|
|
|
|
//BUG12486 郑英杰 2018-09-27
|
|
|
|
|
//string text = node.Tag.ToString();
|
|
|
|
|
//if (text != "")
|
|
|
|
|
//{
|
|
|
|
|
// this.m_DistStyleGalleryStorage.AddFile(text);
|
|
|
|
|
// this.RefreshView(text);
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
if (node != null && node.Tag != null)
|
|
|
|
|
{
|
|
|
|
|
string text = node.Tag.ToString();
|
|
|
|
|
if (text != "")
|
|
|
|
|
{
|
|
|
|
|
this.m_DistStyleGalleryStorage.AddFile(text);
|
|
|
|
|
this.RefreshView(text);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void Init(esriStyleClass styleClass)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
this.gpOptions.Controls.Clear();
|
|
|
|
|
this.m_ClassIndex = (int)styleClass;
|
|
|
|
|
for (int i = 0; i < this.m_DistStyleGallery.ClassCount; i++)
|
|
|
|
|
{
|
|
|
|
|
IStyleGalleryClass styleclass = m_DistStyleGallery.get_Class(i);
|
|
|
|
|
if (styleclass != null &&
|
|
|
|
|
styleclass.Name.Replace(" ", "").ToLower() == styleClass.ToString().ToLower())
|
|
|
|
|
{
|
|
|
|
|
this.m_ClassIndex = i;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
this.m_TarCloneSymbol = null;
|
|
|
|
|
this.gpOptions.Visible = false;
|
|
|
|
|
switch (styleClass)
|
|
|
|
|
{
|
|
|
|
|
case esriStyleClass.FillSymbols:
|
|
|
|
|
this.gpOptions.Visible = true;
|
|
|
|
|
if (this.ucFillSymbolAtrribute == null)
|
|
|
|
|
{
|
|
|
|
|
this.ucFillSymbolAtrribute = new UCFillSymbolAtrribute();
|
|
|
|
|
this.ucFillSymbolAtrribute.Dock = DockStyle.Fill;
|
|
|
|
|
this.ucFillSymbolAtrribute.SetPicture(this.picPreview);
|
|
|
|
|
}
|
|
|
|
|
this.gpOptions.Controls.Add(this.ucFillSymbolAtrribute as System.Windows.Forms.Control);
|
|
|
|
|
this.m_CurrentUc = this.ucFillSymbolAtrribute;
|
|
|
|
|
break;
|
|
|
|
|
case esriStyleClass.LineSymbols:
|
|
|
|
|
this.gpOptions.Visible = true;
|
|
|
|
|
if (this.ucLineSymbolAtrribute == null)
|
|
|
|
|
{
|
|
|
|
|
this.ucLineSymbolAtrribute = new UCLineSymbolAtrribute();
|
|
|
|
|
this.ucLineSymbolAtrribute.Dock = DockStyle.Fill;
|
|
|
|
|
this.ucLineSymbolAtrribute.SetPicture(this.picPreview);
|
|
|
|
|
}
|
|
|
|
|
this.gpOptions.Controls.Add(this.ucLineSymbolAtrribute as System.Windows.Forms.Control);
|
|
|
|
|
this.m_CurrentUc = this.ucLineSymbolAtrribute;
|
|
|
|
|
break;
|
|
|
|
|
case esriStyleClass.MarkerSymbols:
|
|
|
|
|
this.gpOptions.Visible = true;
|
|
|
|
|
if (this.ucMarkSymbolAtrribute == null)
|
|
|
|
|
{
|
|
|
|
|
this.ucMarkSymbolAtrribute = new UCMarkSymbolAtrribute();
|
|
|
|
|
this.ucMarkSymbolAtrribute.Dock = DockStyle.Fill;
|
|
|
|
|
this.ucMarkSymbolAtrribute.SetPicture(this.picPreview);
|
|
|
|
|
}
|
|
|
|
|
this.gpOptions.Controls.Add(this.ucMarkSymbolAtrribute as System.Windows.Forms.Control);
|
|
|
|
|
this.m_CurrentUc = this.ucMarkSymbolAtrribute;
|
|
|
|
|
break;
|
|
|
|
|
case esriStyleClass.TextSymbols:
|
|
|
|
|
this.gpOptions.Visible = true;
|
|
|
|
|
if (this.ucTextSymbolAtrribute == null)
|
|
|
|
|
{
|
|
|
|
|
this.ucTextSymbolAtrribute = new UCTextSymbolAtrribute();
|
|
|
|
|
this.ucTextSymbolAtrribute.Dock = DockStyle.Fill;
|
|
|
|
|
this.ucTextSymbolAtrribute.SetPicture(this.picPreview);
|
|
|
|
|
}
|
|
|
|
|
this.gpOptions.Controls.Add(this.ucTextSymbolAtrribute as System.Windows.Forms.Control);
|
|
|
|
|
this.m_CurrentUc = this.ucTextSymbolAtrribute;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//初始化路径,不然在后面会报错,获取不到数据
|
|
|
|
|
string path = this.m_DistStyleGalleryStorage.DefaultStylePath;
|
|
|
|
|
AddLocalFile();
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
//RdbUtil.AddException(ex);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public void Init(esriStyleClass styleClass, ref ISymbol symbol)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
this.Init(styleClass);
|
|
|
|
|
if (this.m_CurrentUc != null)
|
|
|
|
|
{
|
|
|
|
|
this.resultSymbol = symbol;
|
|
|
|
|
this.m_CurrentUc.Init(ref symbol);
|
|
|
|
|
this.m_CurrentUc.SymbolEdited -= new System.EventHandler(this.m_CurrentUc_SymbolEdited);
|
|
|
|
|
this.m_CurrentUc.SymbolEdited += new System.EventHandler(this.m_CurrentUc_SymbolEdited);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
//RdbUtil.AddException(ex);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private void m_CurrentUc_SymbolEdited(object sender, System.EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (this.resultSymbol != null)
|
|
|
|
|
{
|
|
|
|
|
this.btnOK.Enabled = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private void InitCategories(List<string> list)
|
|
|
|
|
{
|
|
|
|
|
this.repositoryItemComboBox1.Items.Clear();
|
|
|
|
|
list.Insert(0, "<所有分组>");
|
|
|
|
|
this.repositoryItemComboBox1.Items.AddRange(list);
|
|
|
|
|
this.barCategories.EditValue = "<所有分组>";
|
|
|
|
|
}
|
|
|
|
|
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,
|
|
|
|
|
CheckState.Unchecked
|
|
|
|
|
}, 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_GetStateImage(object sender, GetStateImageEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
CheckState checkState = (CheckState)e.Node.GetValue("Check");
|
|
|
|
|
if (checkState == CheckState.Unchecked)
|
|
|
|
|
{
|
|
|
|
|
e.NodeImageIndex = 0;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (checkState == CheckState.Checked)
|
|
|
|
|
{
|
|
|
|
|
e.NodeImageIndex = 1;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
e.NodeImageIndex = 2;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private void SetCheckedNode(TreeListNode node)
|
|
|
|
|
{
|
|
|
|
|
CheckState checkState = (CheckState)node.GetValue("Check");
|
|
|
|
|
if (checkState == CheckState.Indeterminate || checkState == CheckState.Unchecked)
|
|
|
|
|
{
|
|
|
|
|
checkState = CheckState.Checked;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
checkState = CheckState.Unchecked;
|
|
|
|
|
}
|
|
|
|
|
this.tlstGalleryTree.FocusedNode = node;
|
|
|
|
|
this.tlstGalleryTree.BeginUpdate();
|
|
|
|
|
node["Check"] = checkState;
|
|
|
|
|
this.SetCheckedChildNodes(node, checkState);
|
|
|
|
|
this.SetCheckedParentNodes(node, checkState);
|
|
|
|
|
this.tlstGalleryTree.EndUpdate();
|
|
|
|
|
this.GetAllCheckedNode();
|
|
|
|
|
this.RefreshView(node.Tag as string);
|
|
|
|
|
}
|
|
|
|
|
private void SetCheckedChildNodes(TreeListNode node, CheckState check)
|
|
|
|
|
{
|
|
|
|
|
for (int i = 0; i < node.Nodes.Count; i++)
|
|
|
|
|
{
|
|
|
|
|
node.Nodes[i]["Check"] = check;
|
|
|
|
|
this.SetCheckedChildNodes(node.Nodes[i], check);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private void SetCheckedParentNodes(TreeListNode node, CheckState check)
|
|
|
|
|
{
|
|
|
|
|
if (node.ParentNode != null)
|
|
|
|
|
{
|
|
|
|
|
bool flag = false;
|
|
|
|
|
for (int i = 0; i < node.ParentNode.Nodes.Count; i++)
|
|
|
|
|
{
|
|
|
|
|
if (!check.Equals(node.ParentNode.Nodes[i]["Check"]))
|
|
|
|
|
{
|
|
|
|
|
flag = !flag;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
node.ParentNode["Check"] = (flag ? CheckState.Indeterminate : check);
|
|
|
|
|
this.SetCheckedParentNodes(node.ParentNode, check);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private void InitView(IDoStyleGalleryClass galleryClass, List<IDoStyleGalleryItem> list)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
long arg_0E_0 = DateTime.Now.Ticks;
|
|
|
|
|
this.m_ViewItemDictionary = new Dictionary<string, List<ListViewItem>>();
|
|
|
|
|
this.lvSymbolView.Items.Clear();
|
|
|
|
|
this.lvSymbolView.Columns.Clear();
|
|
|
|
|
this.lvSymbolView.Groups.Clear();
|
|
|
|
|
ImageList imageList = new ImageList();
|
|
|
|
|
ImageList imageList2 = new ImageList();
|
|
|
|
|
int num = Convert.ToInt32(32.0 * galleryClass.PreviewRatio);
|
|
|
|
|
int num2 = 32;
|
|
|
|
|
if (num > 256)
|
|
|
|
|
{
|
|
|
|
|
num = 256;
|
|
|
|
|
}
|
|
|
|
|
imageList.ImageSize = new Size(num, num2);
|
|
|
|
|
imageList2.ImageSize = new Size(num / 2, num2 / 2);
|
|
|
|
|
this.lvSymbolView.Items.Clear();
|
|
|
|
|
this.lvSymbolView.Columns.Clear();
|
|
|
|
|
this.lvSymbolView.LargeImageList = imageList;
|
|
|
|
|
this.lvSymbolView.SmallImageList = imageList2;
|
|
|
|
|
this.lvSymbolView.Columns.Add("名称", 180, HorizontalAlignment.Left);
|
|
|
|
|
this.lvSymbolView.Columns.Add("索引", 50, HorizontalAlignment.Left);
|
|
|
|
|
this.lvSymbolView.Columns.Add("分组", 120, HorizontalAlignment.Left);
|
|
|
|
|
int num3 = 0;
|
|
|
|
|
foreach (IDoStyleGalleryItem current in list)
|
|
|
|
|
{
|
|
|
|
|
Bitmap value = galleryClass.StyleGalleryItemToBmp(current, num2);
|
|
|
|
|
Bitmap value2 = galleryClass.StyleGalleryItemToBmp(current, num2 / 2);
|
|
|
|
|
imageList.Images.Add(value);
|
|
|
|
|
imageList2.Images.Add(value2);
|
|
|
|
|
ListViewItem listViewItem = new ListViewItem(new string[]
|
|
|
|
|
{
|
|
|
|
|
current.Name,
|
|
|
|
|
current.Number.ToString(),
|
|
|
|
|
current.Category
|
|
|
|
|
}, num3);
|
|
|
|
|
listViewItem.Tag = current;
|
|
|
|
|
this.lvSymbolView.Items.Add(listViewItem);
|
|
|
|
|
if (this.m_ViewItemDictionary.ContainsKey(current.Category))
|
|
|
|
|
{
|
|
|
|
|
this.m_ViewItemDictionary[current.Category].Add(listViewItem);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
this.m_ViewItemDictionary.Add(current.Category, new List<ListViewItem>());
|
|
|
|
|
this.m_ViewItemDictionary[current.Category].Add(listViewItem);
|
|
|
|
|
}
|
|
|
|
|
num3++;
|
|
|
|
|
if (num3 % 10 == 0)
|
|
|
|
|
{
|
|
|
|
|
Application.DoEvents();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
//RdbUtil.AddException(ex);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private void InitView(IStyleGalleryClass galleryClass, List<IDoStyleGalleryItem> list)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
long ticks = DateTime.Now.Ticks;
|
|
|
|
|
this.m_ViewItemDictionary = new Dictionary<string, List<ListViewItem>>();
|
|
|
|
|
this.lvSymbolView.Items.Clear();
|
|
|
|
|
this.lvSymbolView.Columns.Clear();
|
|
|
|
|
this.lvSymbolView.Groups.Clear();
|
|
|
|
|
ImageList imageList = new ImageList();
|
|
|
|
|
ImageList imageList2 = new ImageList();
|
|
|
|
|
int num = Convert.ToInt32(32.0 * galleryClass.PreviewRatio);
|
|
|
|
|
int num2 = 32;
|
|
|
|
|
if (num > 256)
|
|
|
|
|
{
|
|
|
|
|
num = 256;
|
|
|
|
|
}
|
|
|
|
|
imageList.ImageSize = new Size(num, num2);
|
|
|
|
|
imageList2.ImageSize = new Size(num / 2, num2 / 2);
|
|
|
|
|
this.lvSymbolView.Items.Clear();
|
|
|
|
|
this.lvSymbolView.Columns.Clear();
|
|
|
|
|
this.lvSymbolView.LargeImageList = imageList;
|
|
|
|
|
this.lvSymbolView.SmallImageList = imageList2;
|
|
|
|
|
this.lvSymbolView.Columns.Add("名称", 180, HorizontalAlignment.Left);
|
|
|
|
|
this.lvSymbolView.Columns.Add("索引", 50, HorizontalAlignment.Left);
|
|
|
|
|
this.lvSymbolView.Columns.Add("分组", 120, HorizontalAlignment.Left);
|
|
|
|
|
int num3 = 0;
|
|
|
|
|
foreach (IDoStyleGalleryItem current in list)
|
|
|
|
|
{
|
|
|
|
|
Bitmap value = StyleGalleryItemView.StyleGalleryItemToBmp(num2, galleryClass, current.Item);
|
|
|
|
|
Bitmap value2 = StyleGalleryItemView.StyleGalleryItemToBmp(num2 / 2, galleryClass, current.Item);
|
|
|
|
|
imageList.Images.Add(value);
|
|
|
|
|
imageList2.Images.Add(value2);
|
|
|
|
|
ListViewItem listViewItem = new ListViewItem(new string[]
|
|
|
|
|
{
|
|
|
|
|
current.Name,
|
|
|
|
|
current.Number.ToString(),
|
|
|
|
|
current.Category
|
|
|
|
|
}, num3);
|
|
|
|
|
listViewItem.Tag = current;
|
|
|
|
|
this.lvSymbolView.Items.Add(listViewItem);
|
|
|
|
|
if (this.m_ViewItemDictionary.ContainsKey(current.Category))
|
|
|
|
|
{
|
|
|
|
|
this.m_ViewItemDictionary[current.Category].Add(listViewItem);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
this.m_ViewItemDictionary.Add(current.Category, new List<ListViewItem>());
|
|
|
|
|
this.m_ViewItemDictionary[current.Category].Add(listViewItem);
|
|
|
|
|
}
|
|
|
|
|
num3++;
|
|
|
|
|
if (num3 % 10 == 0)
|
|
|
|
|
{
|
|
|
|
|
Application.DoEvents();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
long ticks2 = DateTime.Now.Ticks;
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
//RdbUtil.AddException(ex);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private void tlstGalleryTree_MouseDown(object sender, MouseEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (e.Button == MouseButtons.Left)
|
|
|
|
|
{
|
|
|
|
|
TreeListHitInfo treeListHitInfo = this.tlstGalleryTree.CalcHitInfo(new Point(e.X, e.Y));
|
|
|
|
|
this.NodeChange(treeListHitInfo.Node);
|
|
|
|
|
//if (treeListHitInfo.HitInfoType == HitInfoType.StateImage)
|
|
|
|
|
//{
|
|
|
|
|
// this.SetCheckedNode(treeListHitInfo.Node);
|
|
|
|
|
//}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private void GetAllCheckedNode()
|
|
|
|
|
{
|
|
|
|
|
//this.m_DistStyleGalleryStorage.ClearGalleryPaths();
|
|
|
|
|
//foreach (TreeListNode treeListNode in this.m_DBRootNode.Nodes)
|
|
|
|
|
//{
|
|
|
|
|
// CheckState checkState = (CheckState)treeListNode.GetValue("Check");
|
|
|
|
|
// if (checkState == CheckState.Checked)
|
|
|
|
|
// {
|
|
|
|
|
// IDoStyleGalleryPath doStyleGalleryPath = treeListNode.Tag as IDoStyleGalleryPath;
|
|
|
|
|
// if (doStyleGalleryPath != null)
|
|
|
|
|
// {
|
|
|
|
|
// this.m_DistStyleGalleryStorage.AddDoStyleGalleryPath(doStyleGalleryPath);
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
//}
|
|
|
|
|
this.m_DistStyleGalleryStorage.ClearFiles();
|
|
|
|
|
foreach (TreeListNode treeListNode2 in this.m_LocalRootNode.Nodes)
|
|
|
|
|
{
|
|
|
|
|
CheckState checkState2 = (CheckState)treeListNode2.GetValue("Check");
|
|
|
|
|
if (checkState2 == CheckState.Checked)
|
|
|
|
|
{
|
|
|
|
|
string text = treeListNode2.Tag.ToString();
|
|
|
|
|
if (text != "")
|
|
|
|
|
{
|
|
|
|
|
this.m_DistStyleGalleryStorage.AddFile(text);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private void RefreshView(string fileName)
|
|
|
|
|
{
|
|
|
|
|
if (!fileName.Equals("local"))
|
|
|
|
|
{
|
|
|
|
|
this.Cursor = Cursors.WaitCursor;
|
|
|
|
|
|
|
|
|
|
IStyleGalleryClass styleGalleryClass = this.m_DistStyleGallery.get_Class(this.m_ClassIndex);
|
|
|
|
|
List<IDoStyleGalleryItem> list3 = this.m_DistStyleGallery.get_Items(styleGalleryClass.Name, fileName, "");
|
|
|
|
|
List<string> list4 = this.m_DistStyleGallery.get_Categories(styleGalleryClass.Name);
|
|
|
|
|
list4.AddRange(this.m_DistStyleGallery.get_DoCategories(styleGalleryClass.Name));
|
|
|
|
|
this.InitCategories(list4);
|
|
|
|
|
this.InitView(styleGalleryClass, list3);
|
|
|
|
|
|
|
|
|
|
//IDoStyleGalleryClass doStyleGalleryClass = this.m_DistStyleGallery.get_DoClass(this.m_ClassIndex);
|
|
|
|
|
//if (doStyleGalleryClass != null)
|
|
|
|
|
//{
|
|
|
|
|
// IDoStyleGalleryPath path = null;
|
|
|
|
|
// List<IDoStyleGalleryItem> list = this.m_DistStyleGallery.get_Items(doStyleGalleryClass.Name, path, "");
|
|
|
|
|
// list.AddRange(this.m_DistStyleGallery.get_Items(doStyleGalleryClass.Name, "", ""));
|
|
|
|
|
// List<string> list2 = this.m_DistStyleGallery.get_Categories(doStyleGalleryClass.Name);
|
|
|
|
|
// list2.AddRange(this.m_DistStyleGallery.get_DoCategories(doStyleGalleryClass.Name));
|
|
|
|
|
// this.InitCategories(list2);
|
|
|
|
|
// this.InitView(doStyleGalleryClass, list);
|
|
|
|
|
//}
|
|
|
|
|
//else
|
|
|
|
|
//{
|
|
|
|
|
// if (this.m_OpenFileDialog != null)
|
|
|
|
|
// {
|
|
|
|
|
// IStyleGalleryClass styleGalleryClass = this.m_DistStyleGallery.get_Class(this.m_ClassIndex);
|
|
|
|
|
// List<IDoStyleGalleryItem> list3 = this.m_DistStyleGallery.get_Items(styleGalleryClass.Name, this.m_OpenFileDialog.FileName, "");
|
|
|
|
|
// List<string> list4 = this.m_DistStyleGallery.get_Categories(styleGalleryClass.Name);
|
|
|
|
|
// list4.AddRange(this.m_DistStyleGallery.get_DoCategories(styleGalleryClass.Name));
|
|
|
|
|
// this.InitCategories(list4);
|
|
|
|
|
// this.InitView(styleGalleryClass, list3);
|
|
|
|
|
// }
|
|
|
|
|
//}
|
|
|
|
|
this.Cursor = Cursors.Default;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private void btnMoreStyle_ItemClick(object sender, ItemClickEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
string text = this.OpenServerStyleFile();
|
|
|
|
|
if (text != "")
|
|
|
|
|
{
|
|
|
|
|
this.AddFile(text);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
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";
|
|
|
|
|
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;
|
|
|
|
|
TreeListNode selectNode = null;
|
|
|
|
|
foreach (TreeListNode treeListNode in this.m_LocalRootNode.Nodes)
|
|
|
|
|
{
|
|
|
|
|
if (treeListNode.Tag.ToString() == filename)
|
|
|
|
|
{
|
|
|
|
|
selectNode = treeListNode;
|
|
|
|
|
flag = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (!flag)
|
|
|
|
|
{
|
|
|
|
|
FileInfo fileInfo = new FileInfo(filename);
|
|
|
|
|
TreeListNode treeListNode2 = this.tlstGalleryTree.AppendNode(new object[]
|
|
|
|
|
{
|
|
|
|
|
fileInfo.Name,
|
|
|
|
|
CheckState.Unchecked
|
|
|
|
|
}, this.m_LocalRootNode);
|
|
|
|
|
treeListNode2.Tag = fileInfo.FullName;
|
|
|
|
|
this.NodeChange(treeListNode2);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
this.NodeChange(selectNode);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private void lvSymbolView_SelectedIndexChanged(object sender, System.EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
this.m_DistStyleGalleryItem = null;
|
|
|
|
|
if (this.lvSymbolView.SelectedItems.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
if (this.lvSymbolView.SelectedItems[0].Tag is IDoStyleGalleryItem)
|
|
|
|
|
{
|
|
|
|
|
this.m_DistStyleGalleryItem = (this.lvSymbolView.SelectedItems[0].Tag as IDoStyleGalleryItem);
|
|
|
|
|
if (this.m_DistStyleGalleryItem != null)
|
|
|
|
|
{
|
|
|
|
|
this.btnOK.Enabled = true;
|
|
|
|
|
this.m_SelectSymbol = this.m_DistStyleGalleryItem;
|
|
|
|
|
this.resultSymbol = this.m_SelectSymbol.Item.Item;
|
|
|
|
|
this.PreviewGalleryItem();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
this.btnOK.Enabled = false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private void chkLargeIcon_CheckedChanged(object sender, ItemClickEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (this.chkLargeIcon.Checked)
|
|
|
|
|
{
|
|
|
|
|
this.lvSymbolView.View = System.Windows.Forms.View.LargeIcon;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private void chkSmallIcon_CheckedChanged(object sender, ItemClickEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (this.chkSmallIcon.Checked)
|
|
|
|
|
{
|
|
|
|
|
this.lvSymbolView.View = System.Windows.Forms.View.SmallIcon;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private void chkTile_CheckedChanged(object sender, ItemClickEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (this.chkTile.Checked)
|
|
|
|
|
{
|
|
|
|
|
this.lvSymbolView.View = System.Windows.Forms.View.Tile;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private void chkDetail_CheckedChanged(object sender, ItemClickEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (this.chkDetail.Checked)
|
|
|
|
|
{
|
|
|
|
|
this.lvSymbolView.View = System.Windows.Forms.View.Details;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private void chkList_CheckedChanged(object sender, ItemClickEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (this.chkList.Checked)
|
|
|
|
|
{
|
|
|
|
|
this.lvSymbolView.View = System.Windows.Forms.View.List;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private void lvSymbolView_MouseUp(object sender, MouseEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (e.Button == MouseButtons.Right)
|
|
|
|
|
{
|
|
|
|
|
this.pmView.ShowPopup(System.Windows.Forms.Control.MousePosition);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private void PreviewGalleryItem()
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
//霍岩 2018-11-13 刷新右侧预览PictureEdit
|
|
|
|
|
this.picPreview.Image = StyleGalleryItemView.StyleGalleryItemToBmp(64, m_DistStyleGallery.get_Class(this.m_ClassIndex), m_DistStyleGalleryItem.Item);
|
|
|
|
|
if (this.m_CurrentUc != null)
|
|
|
|
|
{
|
|
|
|
|
this.m_SrcSymbolClone = (this.m_DistStyleGalleryItem.Item.Item as IClone);
|
|
|
|
|
if (this.m_SrcSymbolClone != null)
|
|
|
|
|
{
|
|
|
|
|
this.m_TarCloneSymbol = (this.m_SrcSymbolClone.Clone() as ISymbol);
|
|
|
|
|
this.m_CurrentUc.Init(ref this.m_TarCloneSymbol);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
//RdbUtil.AddException(ex);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private void btnOK_Click(object sender, System.EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (this.m_TarCloneSymbol != null)
|
|
|
|
|
{
|
|
|
|
|
this.m_DistStyleGalleryItem.Item.Item = this.m_TarCloneSymbol;
|
|
|
|
|
this.resultSymbol = this.m_TarCloneSymbol;
|
|
|
|
|
}
|
|
|
|
|
base.DialogResult = DialogResult.OK;
|
|
|
|
|
base.Close();
|
|
|
|
|
}
|
|
|
|
|
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 barCategories_EditValueChanged(object sender, System.EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
this.Cursor = Cursors.WaitCursor;
|
|
|
|
|
string text = this.barCategories.EditValue.ToString();
|
|
|
|
|
this.lvSymbolView.Items.Clear();
|
|
|
|
|
if (text == "<所有分组>")
|
|
|
|
|
{
|
|
|
|
|
if (this.m_ViewItemDictionary == null)
|
|
|
|
|
return;
|
|
|
|
|
using (Dictionary<string, List<ListViewItem>>.Enumerator enumerator = this.m_ViewItemDictionary.GetEnumerator())
|
|
|
|
|
{
|
|
|
|
|
while (enumerator.MoveNext())
|
|
|
|
|
{
|
|
|
|
|
KeyValuePair<string, List<ListViewItem>> current = enumerator.Current;
|
|
|
|
|
this.lvSymbolView.Items.AddRange(current.Value.ToArray());
|
|
|
|
|
}
|
|
|
|
|
goto IL_DF;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
foreach (KeyValuePair<string, List<ListViewItem>> current2 in this.m_ViewItemDictionary)
|
|
|
|
|
{
|
|
|
|
|
if (current2.Key == text)
|
|
|
|
|
{
|
|
|
|
|
this.lvSymbolView.Items.AddRange(current2.Value.ToArray());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
IL_DF:
|
|
|
|
|
this.Cursor = Cursors.Default;
|
|
|
|
|
}
|
|
|
|
|
catch
|
|
|
|
|
{
|
|
|
|
|
this.Cursor = Cursors.Default;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
bool IUIPlugIn.Visible
|
|
|
|
|
{
|
|
|
|
|
get;
|
|
|
|
|
set;
|
|
|
|
|
}
|
|
|
|
|
DialogResult ISymbolSelector.ShowDialog()
|
|
|
|
|
{
|
|
|
|
|
return base.ShowDialog();
|
|
|
|
|
}
|
|
|
|
|
DialogResult ISymbolSelector.ShowDialog(IWin32Window owner)
|
|
|
|
|
{
|
|
|
|
|
return base.ShowDialog(owner);
|
|
|
|
|
}
|
|
|
|
|
FormStartPosition ISymbolSelector.StartPosition
|
|
|
|
|
{
|
|
|
|
|
get;
|
|
|
|
|
set;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 取消按钮点击事件
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="sender"></param>
|
|
|
|
|
/// <param name="e"></param>
|
|
|
|
|
/// 霍岩 2018-11-13 增加
|
|
|
|
|
private void btnCancel_Click(object sender, System.EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
this.resultSymbol = null;
|
|
|
|
|
base.DialogResult = DialogResult.Cancel;
|
|
|
|
|
base.Close();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnView_ItemClick(object sender, ItemClickEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|