|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.ComponentModel;
|
|
|
|
|
using System.Drawing;
|
|
|
|
|
using System.Data;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
using System.Windows.Forms;
|
|
|
|
|
using DevExpress.XtraEditors;
|
|
|
|
|
using KGIS.Plugin.LayerProperty.Interface;
|
|
|
|
|
using ESRI.ArcGIS.Carto;
|
|
|
|
|
using ESRI.ArcGIS.Display;
|
|
|
|
|
using ESRI.ArcGIS.Geodatabase;
|
|
|
|
|
using KGIS.Plugin.LayerProperty.Utils;
|
|
|
|
|
using ESRI.ArcGIS.esriSystem;
|
|
|
|
|
using stdole;
|
|
|
|
|
using ESRI.ArcGIS.ADF;
|
|
|
|
|
using ESRI.ArcGIS.Geometry;
|
|
|
|
|
using DevExpress.XtraEditors.Controls;
|
|
|
|
|
using KGIS.Plugin.LayerProperty.Enum;
|
|
|
|
|
using KGIS.Framework.Utils.Helper;
|
|
|
|
|
|
|
|
|
|
namespace KGIS.Plugin.LayerProperty.View.UC_Controls
|
|
|
|
|
{
|
|
|
|
|
public partial class UCLabelPropertyPage : XtraUserControl, IUCPropertyPageEx, IPropertyPage
|
|
|
|
|
{
|
|
|
|
|
private string m_FontName;
|
|
|
|
|
private string m_LabelFieldName;
|
|
|
|
|
private float m_FontSize = 10f;
|
|
|
|
|
private bool m_CanLabel;
|
|
|
|
|
private bool m_Bold;
|
|
|
|
|
private bool m_Italic;
|
|
|
|
|
private bool m_Underline;
|
|
|
|
|
private string m_FontColor;
|
|
|
|
|
private double m_LabelMinScale;
|
|
|
|
|
private double m_LabelMaxScale;
|
|
|
|
|
private IAnnotateLayerPropertiesCollection m_AnnotateLayerPropertiesCollection;
|
|
|
|
|
private ILabelEngineLayerProperties2 m_LabelEngineLayerProps;
|
|
|
|
|
private ILabelEngineLayerProperties2 m_CloneLabelEngineLayerProps;
|
|
|
|
|
private IBasicOverposterLayerProperties4 m_TempBasicOverposterLayerProperties;
|
|
|
|
|
private IStyleGalleryClass m_StyleGalleryClass;
|
|
|
|
|
private ILayer m_Layer;
|
|
|
|
|
private FormLabelScaleRangeSet m_frmLabelScaleRangeSet;
|
|
|
|
|
private List<IPropertyPage> PropertyList;
|
|
|
|
|
private FormPlacmentProps m_PlacmentSet;
|
|
|
|
|
private ITextSymbol m_TextSymbol;
|
|
|
|
|
private IFontDisp m_TextFont;
|
|
|
|
|
private IFields m_Fields;
|
|
|
|
|
private string m_LabelExpression;
|
|
|
|
|
private bool m_IsExpressionSimple = true;
|
|
|
|
|
private IGeoFeatureLayer geoFeaLyr;
|
|
|
|
|
private FormSQLCreator frmSQLCreator;
|
|
|
|
|
private IAnnotateLayerProperties m_CurrentAnnoLyrProp;
|
|
|
|
|
private bool m_ReadProp;
|
|
|
|
|
private bool isCustomLayer;
|
|
|
|
|
private bool isDirty;
|
|
|
|
|
public event System.EventHandler EditorChanged;
|
|
|
|
|
public bool IsCustomLayer
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return this.isCustomLayer;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public bool IsPageDirty
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return this.isDirty;
|
|
|
|
|
}
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
this.isDirty = value;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public int Priority
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
throw new Exception("The method or operation is not implemented.");
|
|
|
|
|
}
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
throw new Exception("The method or operation is not implemented.");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public string Title
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
throw new Exception("The method or operation is not implemented.");
|
|
|
|
|
}
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
throw new Exception("The method or operation is not implemented.");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public UCLabelPropertyPage()
|
|
|
|
|
{
|
|
|
|
|
InitializeComponent();
|
|
|
|
|
PopupBaseAutoSearchEdit popupBaseAutoSearchEdit = this.cmbFontSize;
|
|
|
|
|
DevExpressControlCommand.SetAllEditorInteger2(ref popupBaseAutoSearchEdit, false, false, 3);
|
|
|
|
|
}
|
|
|
|
|
public void InitUC(object layerProperty)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
this.isCustomLayer = false;
|
|
|
|
|
this.m_Layer = (layerProperty as ILayer);
|
|
|
|
|
this.geoFeaLyr = (layerProperty as IGeoFeatureLayer);
|
|
|
|
|
this.PropertyList = new List<IPropertyPage>();
|
|
|
|
|
this.m_TempBasicOverposterLayerProperties = null;
|
|
|
|
|
this.fontEdit2.EditValue = "宋体";
|
|
|
|
|
this.chkBold.Checked = false;
|
|
|
|
|
this.chkItalic.Checked = false;
|
|
|
|
|
this.chkUnderline.Checked = false;
|
|
|
|
|
this.clrFontColor.Color = Color.Black;
|
|
|
|
|
this.btnDeleteClass.Enabled = true;
|
|
|
|
|
this.cmbAnnoLyrPropClass.Properties.Items.Clear();
|
|
|
|
|
if (this.geoFeaLyr != null)
|
|
|
|
|
{
|
|
|
|
|
this.chkLabelFeatures.Checked = this.geoFeaLyr.DisplayAnnotation;
|
|
|
|
|
this.m_AnnotateLayerPropertiesCollection = this.geoFeaLyr.AnnotationProperties;
|
|
|
|
|
if (this.m_AnnotateLayerPropertiesCollection == null)
|
|
|
|
|
{
|
|
|
|
|
this.CreateDefaultAnnonation();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
IAnnotateLayerProperties annotateLayerProperties = null;
|
|
|
|
|
IElementCollection elementCollection = null;
|
|
|
|
|
IElementCollection elementCollection2 = null;
|
|
|
|
|
for (int i = 0; i < this.m_AnnotateLayerPropertiesCollection.Count; i++)
|
|
|
|
|
{
|
|
|
|
|
this.m_AnnotateLayerPropertiesCollection.QueryItem(i, out annotateLayerProperties, out elementCollection2, out elementCollection);
|
|
|
|
|
IAnnotateLayerProperties innervalue = (annotateLayerProperties as IClone).Clone() as IAnnotateLayerProperties;
|
|
|
|
|
ItemInfo<IAnnotateLayerProperties, string> item = new ItemInfo<IAnnotateLayerProperties, string>(innervalue, annotateLayerProperties.Class);
|
|
|
|
|
this.cmbAnnoLyrPropClass.Properties.Items.Add(item);
|
|
|
|
|
}
|
|
|
|
|
this.cmbAnnoLyrPropClass.SelectedIndex = 0;
|
|
|
|
|
if (this.m_AnnotateLayerPropertiesCollection.Count > 1)
|
|
|
|
|
{
|
|
|
|
|
this.cmbLabelType.SelectedIndex = 1;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
this.cmbLabelType.SelectedIndex = 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
this.btnGetAnnoLyrPropBySymbol.Enabled = this.CanGetClassFromSymbols();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
//RdbUtil.AddException(ex);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public void ReadAnnotateLayerProperties(IAnnotateLayerProperties pAnnotateLayerProperties)
|
|
|
|
|
{
|
|
|
|
|
if (pAnnotateLayerProperties == null)
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
this.m_CurrentAnnoLyrProp = pAnnotateLayerProperties;
|
|
|
|
|
this.m_LabelEngineLayerProps = (pAnnotateLayerProperties as ILabelEngineLayerProperties2);
|
|
|
|
|
IClone clone = this.m_LabelEngineLayerProps.BasicOverposterLayerProperties as IClone;
|
|
|
|
|
this.m_TempBasicOverposterLayerProperties = (clone.Clone() as IBasicOverposterLayerProperties4);
|
|
|
|
|
clone = (this.m_LabelEngineLayerProps as IClone);
|
|
|
|
|
this.m_CloneLabelEngineLayerProps = (clone.Clone() as ILabelEngineLayerProperties2);
|
|
|
|
|
this.m_LabelMaxScale = pAnnotateLayerProperties.AnnotationMaximumScale;
|
|
|
|
|
this.m_LabelMinScale = pAnnotateLayerProperties.AnnotationMinimumScale;
|
|
|
|
|
if (this.m_LabelEngineLayerProps == null)
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
this.chkDisplayAnnotation.Checked = pAnnotateLayerProperties.DisplayAnnotation;
|
|
|
|
|
this.m_LabelExpression = this.m_LabelEngineLayerProps.Expression;
|
|
|
|
|
this.m_IsExpressionSimple = this.m_LabelEngineLayerProps.IsExpressionSimple;
|
|
|
|
|
this.m_Fields = this.geoFeaLyr.FeatureClass.Fields;
|
|
|
|
|
this.SetCmbLabelField(this.m_LabelEngineLayerProps);
|
|
|
|
|
if (this.m_LabelEngineLayerProps.Symbol == null)
|
|
|
|
|
{
|
|
|
|
|
this.m_TextSymbol = this.ConvertToSymbol();
|
|
|
|
|
this.m_LabelEngineLayerProps.Symbol = this.m_TextSymbol;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
this.m_TextSymbol = this.m_LabelEngineLayerProps.Symbol;
|
|
|
|
|
}
|
|
|
|
|
this.SetBySymbol(this.m_TextSymbol);
|
|
|
|
|
}
|
|
|
|
|
private void GetLabelSet()
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
this.GetCurrentLabelSet();
|
|
|
|
|
this.m_AnnotateLayerPropertiesCollection.Clear();
|
|
|
|
|
for (int i = 0; i < this.cmbAnnoLyrPropClass.Properties.Items.Count; i++)
|
|
|
|
|
{
|
|
|
|
|
ItemInfo<IAnnotateLayerProperties, string> itemInfo = this.cmbAnnoLyrPropClass.Properties.Items[i] as ItemInfo<IAnnotateLayerProperties, string>;
|
|
|
|
|
if (itemInfo != null)
|
|
|
|
|
{
|
|
|
|
|
if (this.cmbLabelType.SelectedIndex == 0)
|
|
|
|
|
{
|
|
|
|
|
itemInfo.InnerValue.WhereClause = "";
|
|
|
|
|
this.m_AnnotateLayerPropertiesCollection.Add(itemInfo.InnerValue);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
this.m_AnnotateLayerPropertiesCollection.Add(itemInfo.InnerValue);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
(this.m_Layer as IGeoFeatureLayer).AnnotationProperties = this.m_AnnotateLayerPropertiesCollection;
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
//RdbUtil.AddException(ex);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private void GetCurrentLabelSet()
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (this.m_TempBasicOverposterLayerProperties != null)
|
|
|
|
|
{
|
|
|
|
|
this.m_LabelEngineLayerProps.BasicOverposterLayerProperties = (this.m_TempBasicOverposterLayerProperties as IBasicOverposterLayerProperties);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
this.m_LabelEngineLayerProps.BasicOverposterLayerProperties = new BasicOverposterLayerPropertiesClass();
|
|
|
|
|
}
|
|
|
|
|
this.m_LabelEngineLayerProps.Symbol = this.m_TextSymbol;
|
|
|
|
|
this.m_CloneLabelEngineLayerProps.Expression = (this.cmbLabelField.Tag as string);
|
|
|
|
|
|
|
|
|
|
#region BUG10428修改 2018-09-03 郑英杰 注释,对象为引用类型不需要再次赋值
|
|
|
|
|
//this.m_LabelEngineLayerProps.Expression = this.m_CloneLabelEngineLayerProps.Expression;
|
|
|
|
|
//this.m_LabelEngineLayerProps.ExpressionParser = this.m_CloneLabelEngineLayerProps.ExpressionParser;
|
|
|
|
|
//this.m_LabelEngineLayerProps.IsExpressionSimple = this.m_CloneLabelEngineLayerProps.IsExpressionSimple;
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
IAnnotateLayerProperties annotateLayerProperties = this.m_LabelEngineLayerProps as IAnnotateLayerProperties;
|
|
|
|
|
if (annotateLayerProperties != null)
|
|
|
|
|
{
|
|
|
|
|
annotateLayerProperties.AnnotationMaximumScale = this.m_LabelMaxScale;
|
|
|
|
|
annotateLayerProperties.AnnotationMinimumScale = this.m_LabelMinScale;
|
|
|
|
|
annotateLayerProperties.DisplayAnnotation = this.chkDisplayAnnotation.Checked;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
//RdbUtil.AddException(ex);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private void SetCmbLabelField(ILabelEngineLayerProperties2 labelEngineLayerProps)
|
|
|
|
|
{
|
|
|
|
|
if (!this.IsExpression(labelEngineLayerProps))
|
|
|
|
|
{
|
|
|
|
|
string text = labelEngineLayerProps.Expression.Replace("[", "");
|
|
|
|
|
text = text.Replace("]", "");
|
|
|
|
|
Utils.Util.InitFieldList(ref this.cmbLabelField, this.geoFeaLyr.FeatureClass.Fields, text, false, false, true);
|
|
|
|
|
this.cmbLabelField.Enabled = true;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
this.cmbLabelField.Enabled = false;
|
|
|
|
|
this.cmbLabelField.Text = "表达式";
|
|
|
|
|
}
|
|
|
|
|
this.cmbLabelField.Tag = labelEngineLayerProps.Expression;
|
|
|
|
|
}
|
|
|
|
|
public void Write2Prop()
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (!this.isCustomLayer)
|
|
|
|
|
{
|
|
|
|
|
this.GetLabelSet();
|
|
|
|
|
IGeoFeatureLayer geoFeatureLayer = this.m_Layer as IGeoFeatureLayer;
|
|
|
|
|
if (geoFeatureLayer != null)
|
|
|
|
|
{
|
|
|
|
|
geoFeatureLayer.DisplayAnnotation = this.chkLabelFeatures.Checked;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
this.isDirty = false;
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
//RdbUtil.AddException(ex);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public bool CanWrite2Prop()
|
|
|
|
|
{
|
|
|
|
|
return this.isDirty;
|
|
|
|
|
}
|
|
|
|
|
private void InvokeEditValueChanged(object sender, System.EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (this.EditorChanged != null)
|
|
|
|
|
{
|
|
|
|
|
this.EditorChanged(sender, e);
|
|
|
|
|
}
|
|
|
|
|
this.isDirty = true;
|
|
|
|
|
}
|
|
|
|
|
public void SetDefaultValue(object value)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
private void chkLabelFeatures_CheckedChanged(object sender, System.EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
this.m_CanLabel = this.chkLabelFeatures.Checked;
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
//RdbUtil.AddException(ex);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private void ucFieldsCombox1_SelectedFieldChanged(IField field)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (field != null)
|
|
|
|
|
{
|
|
|
|
|
this.m_LabelFieldName = field.Name;
|
|
|
|
|
}
|
|
|
|
|
this.InvokeEditValueChanged(null, null);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
//RdbUtil.AddException(ex);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private void cmbLabelField_SelectedIndexChanged(object sender, System.EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
ItemInfo<IField, string> itemInfo = this.cmbLabelField.SelectedItem as ItemInfo<IField, string>;
|
|
|
|
|
if (itemInfo != null)
|
|
|
|
|
{
|
|
|
|
|
this.m_LabelFieldName = itemInfo.InnerValue.Name;
|
|
|
|
|
this.m_LabelExpression = "[" + this.m_LabelFieldName + "]";
|
|
|
|
|
this.cmbLabelField.Tag = this.m_LabelExpression;
|
|
|
|
|
|
|
|
|
|
#region BUG9883修改 2018-09-03 郑英杰
|
|
|
|
|
this.m_LabelEngineLayerProps.Expression = this.m_LabelExpression;
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
this.InvokeEditValueChanged(null, null);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
//RdbUtil.AddException(ex);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private void cmbFontSize_TextChanged(object sender, System.EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (!this.m_ReadProp)
|
|
|
|
|
{
|
|
|
|
|
if (Convert.ToDouble(this.cmbFontSize.Text) >= 0.0)
|
|
|
|
|
{
|
|
|
|
|
if (this.m_TextSymbol != null)
|
|
|
|
|
{
|
|
|
|
|
this.m_TextSymbol.Font = this.CreateFont();
|
|
|
|
|
}
|
|
|
|
|
this.PreviewGalleryItem();
|
|
|
|
|
this.m_FontSize = Convert.ToSingle(this.cmbFontSize.Text);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
//RdbUtil.AddException(ex);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private void fontEdit2_SelectedIndexChanged(object sender, System.EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (!this.m_ReadProp)
|
|
|
|
|
{
|
|
|
|
|
if (this.m_TextSymbol != null)
|
|
|
|
|
{
|
|
|
|
|
this.m_TextSymbol.Font = this.CreateFont();
|
|
|
|
|
}
|
|
|
|
|
this.PreviewGalleryItem();
|
|
|
|
|
this.m_FontName = this.fontEdit2.Text;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
//RdbUtil.AddException(ex);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private IFontDisp CreateFont()
|
|
|
|
|
{
|
|
|
|
|
float value = Convert.ToSingle(this.cmbFontSize.EditValue);
|
|
|
|
|
this.m_TextFont = (new StdFontClass() as IFontDisp);
|
|
|
|
|
decimal size = Convert.ToDecimal(value);
|
|
|
|
|
this.m_TextFont.Size = size;
|
|
|
|
|
this.m_TextFont.Italic = this.chkItalic.Checked;
|
|
|
|
|
this.m_TextFont.Bold = this.chkBold.Checked;
|
|
|
|
|
this.m_TextFont.Underline = this.chkUnderline.Checked;
|
|
|
|
|
this.m_TextFont.Name = this.fontEdit2.Text;
|
|
|
|
|
return this.m_TextFont;
|
|
|
|
|
}
|
|
|
|
|
private void clrFontColor_EditValueChanged(object sender, System.EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (!this.m_ReadProp)
|
|
|
|
|
{
|
|
|
|
|
if (this.m_TextSymbol != null)
|
|
|
|
|
{
|
|
|
|
|
IColor color = this.m_TextSymbol.Color;
|
|
|
|
|
color = Converter.ToRGBColor(this.clrFontColor.Color);
|
|
|
|
|
color.Transparency = this.clrFontColor.Color.A;
|
|
|
|
|
this.m_TextSymbol.Color = color;
|
|
|
|
|
}
|
|
|
|
|
this.PreviewGalleryItem();
|
|
|
|
|
this.m_FontColor = this.clrFontColor.Text;
|
|
|
|
|
this.InvokeEditValueChanged(sender, e);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
//RdbUtil.AddException(ex);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private void chkBold_CheckedChanged(object sender, System.EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (!this.m_ReadProp)
|
|
|
|
|
{
|
|
|
|
|
if (this.m_TextSymbol != null)
|
|
|
|
|
{
|
|
|
|
|
this.m_TextSymbol.Font = this.CreateFont();
|
|
|
|
|
}
|
|
|
|
|
this.PreviewGalleryItem();
|
|
|
|
|
this.m_Bold = this.chkBold.Checked;
|
|
|
|
|
this.InvokeEditValueChanged(null, null);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
//RdbUtil.AddException(ex);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private void chkItalic_CheckedChanged(object sender, System.EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (!this.m_ReadProp)
|
|
|
|
|
{
|
|
|
|
|
if (this.m_TextSymbol != null)
|
|
|
|
|
{
|
|
|
|
|
this.m_TextSymbol.Font = this.CreateFont();
|
|
|
|
|
}
|
|
|
|
|
this.PreviewGalleryItem();
|
|
|
|
|
this.m_Italic = this.chkItalic.Checked;
|
|
|
|
|
this.InvokeEditValueChanged(null, null);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
//RdbUtil.AddException(ex);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private void chkUnderline_CheckedChanged(object sender, System.EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (!this.m_ReadProp)
|
|
|
|
|
{
|
|
|
|
|
if (this.m_TextSymbol != null)
|
|
|
|
|
{
|
|
|
|
|
this.m_TextSymbol.Font = this.CreateFont();
|
|
|
|
|
}
|
|
|
|
|
this.PreviewGalleryItem();
|
|
|
|
|
this.m_Underline = this.chkUnderline.Checked;
|
|
|
|
|
this.InvokeEditValueChanged(null, null);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
//RdbUtil.AddException(ex);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private FontStyle rtPadFontStyle()
|
|
|
|
|
{
|
|
|
|
|
FontStyle fontStyle = FontStyle.Regular;
|
|
|
|
|
if (this.chkBold.Checked)
|
|
|
|
|
{
|
|
|
|
|
fontStyle |= FontStyle.Bold;
|
|
|
|
|
}
|
|
|
|
|
if (this.chkItalic.Checked)
|
|
|
|
|
{
|
|
|
|
|
fontStyle |= FontStyle.Italic;
|
|
|
|
|
}
|
|
|
|
|
if (this.chkUnderline.Checked)
|
|
|
|
|
{
|
|
|
|
|
fontStyle |= FontStyle.Underline;
|
|
|
|
|
}
|
|
|
|
|
return fontStyle;
|
|
|
|
|
}
|
|
|
|
|
private void btnSelectSymbol_Click(object sender, System.EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
IClone clone = this.m_TextSymbol as IClone;
|
|
|
|
|
if (clone != null)
|
|
|
|
|
{
|
|
|
|
|
ISymbol symbol = clone.Clone() as ISymbol;
|
|
|
|
|
symbol = (RenderUtil.OpenStyleSelector(esriStyleClass.TextSymbols, symbol) as ISymbol);
|
|
|
|
|
if (symbol != null)
|
|
|
|
|
{
|
|
|
|
|
this.m_TextSymbol = (symbol as ITextSymbol);
|
|
|
|
|
this.SetBySymbol(this.m_TextSymbol);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private void CreateDefaultAnnonation()
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
IFeatureLayer2 featureLayer = this.m_Layer as IFeatureLayer2;
|
|
|
|
|
Utils.Util.InitFieldList(ref this.cmbLabelField, featureLayer.FeatureClass.Fields, this.m_LabelFieldName, false, false, true);
|
|
|
|
|
esriFeatureType featureType = featureLayer.FeatureClass.FeatureType;
|
|
|
|
|
if (featureType != esriFeatureType.esriFTAnnotation)
|
|
|
|
|
{
|
|
|
|
|
this.m_TempBasicOverposterLayerProperties = new BasicOverposterLayerPropertiesClass();
|
|
|
|
|
this.m_LabelEngineLayerProps = new LabelEngineLayerPropertiesClass();
|
|
|
|
|
this.m_AnnotateLayerPropertiesCollection.Clear();
|
|
|
|
|
this.m_LabelEngineLayerProps.BasicOverposterLayerProperties = (this.m_TempBasicOverposterLayerProperties as IBasicOverposterLayerProperties);
|
|
|
|
|
this.m_LabelEngineLayerProps.Symbol = this.ConvertToSymbol();
|
|
|
|
|
this.m_LabelEngineLayerProps.IsExpressionSimple = true;
|
|
|
|
|
this.m_LabelEngineLayerProps.Expression = "[" + this.m_LabelFieldName + "]";
|
|
|
|
|
IAnnotateLayerProperties annotateLayerProperties = this.m_LabelEngineLayerProps as IAnnotateLayerProperties;
|
|
|
|
|
if (annotateLayerProperties != null)
|
|
|
|
|
{
|
|
|
|
|
annotateLayerProperties.AnnotationMaximumScale = this.m_LabelMaxScale;
|
|
|
|
|
annotateLayerProperties.AnnotationMinimumScale = this.m_LabelMinScale;
|
|
|
|
|
}
|
|
|
|
|
this.m_AnnotateLayerPropertiesCollection.Add(annotateLayerProperties);
|
|
|
|
|
(this.m_Layer as IGeoFeatureLayer).AnnotationProperties = this.m_AnnotateLayerPropertiesCollection;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
//RdbUtil.AddException(ex);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private ITextSymbol ConvertToSymbol()
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
ITextSymbol textSymbol = new TextSymbolClass();
|
|
|
|
|
Color color = Color.Black;
|
|
|
|
|
string[] array = this.m_FontColor.Split(new char[]
|
|
|
|
|
{
|
|
|
|
|
','
|
|
|
|
|
});
|
|
|
|
|
if (array.Length == 3)
|
|
|
|
|
{
|
|
|
|
|
int red = Convert.ToInt32(array[0]);
|
|
|
|
|
int green = Convert.ToInt32(array[1]);
|
|
|
|
|
int blue = Convert.ToInt32(array[2]);
|
|
|
|
|
color = Color.FromArgb(red, green, blue);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
color = Color.FromName(this.m_FontColor);
|
|
|
|
|
}
|
|
|
|
|
textSymbol.Color = Converter.ToRGBColor(color);
|
|
|
|
|
System.Drawing.Font font = new System.Drawing.Font(this.m_FontName, this.m_FontSize, this.rtPadFontStyle());
|
|
|
|
|
textSymbol.Font = Converter.ToStdFont(font);
|
|
|
|
|
textSymbol.Text = "AaBbYyZz";
|
|
|
|
|
return textSymbol;
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
//RdbUtil.AddException(ex);
|
|
|
|
|
}
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
private void SetBySymbol(ITextSymbol Symbol)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
this.m_ReadProp = true;
|
|
|
|
|
if (Symbol != null)
|
|
|
|
|
{
|
|
|
|
|
if (this.m_StyleGalleryClass == null)
|
|
|
|
|
{
|
|
|
|
|
this.m_StyleGalleryClass = new TextSymbolStyleGalleryClassClass();
|
|
|
|
|
}
|
|
|
|
|
this.m_TextFont = Symbol.Font;
|
|
|
|
|
this.fontEdit2.Text = this.m_TextFont.Name;
|
|
|
|
|
this.cmbFontSize.Text = this.m_TextFont.Size.ToString();
|
|
|
|
|
this.chkBold.Checked = this.m_TextFont.Bold;
|
|
|
|
|
Color color = Converter.FromRGBColor(Symbol.Color as IRgbColor);
|
|
|
|
|
this.clrFontColor.Text = string.Concat(new object[]
|
|
|
|
|
{
|
|
|
|
|
color.R,
|
|
|
|
|
",",
|
|
|
|
|
color.G,
|
|
|
|
|
",",
|
|
|
|
|
color.B
|
|
|
|
|
});
|
|
|
|
|
this.chkItalic.Checked = this.m_TextFont.Italic;
|
|
|
|
|
this.chkUnderline.Checked = this.m_TextFont.Underline;
|
|
|
|
|
this.m_FontName = this.fontEdit2.Text;
|
|
|
|
|
this.m_FontSize = Convert.ToSingle(this.cmbFontSize.Text);
|
|
|
|
|
this.m_CanLabel = this.chkLabelFeatures.Checked;
|
|
|
|
|
this.m_Bold = this.chkBold.Checked;
|
|
|
|
|
this.m_FontColor = this.clrFontColor.Text;
|
|
|
|
|
this.m_Italic = this.chkItalic.Checked;
|
|
|
|
|
this.m_Underline = this.chkUnderline.Checked;
|
|
|
|
|
this.PreviewGalleryItem();
|
|
|
|
|
}
|
|
|
|
|
this.m_ReadProp = false;
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
//RdbUtil.AddException(ex);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private void btnScaleRange_Click(object sender, System.EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (this.m_frmLabelScaleRangeSet == null)
|
|
|
|
|
{
|
|
|
|
|
this.m_frmLabelScaleRangeSet = new FormLabelScaleRangeSet();
|
|
|
|
|
}
|
|
|
|
|
this.m_frmLabelScaleRangeSet.InitForm(this.m_LabelMaxScale, this.m_LabelMinScale);
|
|
|
|
|
if (this.m_frmLabelScaleRangeSet.ShowDialog(base.FindForm()) == DialogResult.OK)
|
|
|
|
|
{
|
|
|
|
|
this.m_LabelMaxScale = this.m_frmLabelScaleRangeSet.MaxScale;
|
|
|
|
|
this.m_LabelMinScale = this.m_frmLabelScaleRangeSet.MinScale;
|
|
|
|
|
this.InvokeEditValueChanged(null, null);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private void btnPlacementSet_Click(object sender, System.EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (this.m_TempBasicOverposterLayerProperties == null)
|
|
|
|
|
{
|
|
|
|
|
IClone clone = this.m_LabelEngineLayerProps.BasicOverposterLayerProperties as IClone;
|
|
|
|
|
this.m_TempBasicOverposterLayerProperties = (clone.Clone() as IBasicOverposterLayerProperties4);
|
|
|
|
|
}
|
|
|
|
|
if (this.m_PlacmentSet == null)
|
|
|
|
|
{
|
|
|
|
|
this.m_PlacmentSet = new FormPlacmentProps();
|
|
|
|
|
}
|
|
|
|
|
this.m_PlacmentSet.Fields = this.m_Fields;
|
|
|
|
|
this.m_PlacmentSet.InitUC(this.m_TempBasicOverposterLayerProperties);
|
|
|
|
|
if (this.m_PlacmentSet.ShowDialog() == DialogResult.OK)
|
|
|
|
|
{
|
|
|
|
|
this.InvokeEditValueChanged(null, null);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
//RdbUtil.AddException(ex);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public int Activate()
|
|
|
|
|
{
|
|
|
|
|
throw new Exception("The method or operation is not implemented.");
|
|
|
|
|
}
|
|
|
|
|
public void Deactivate()
|
|
|
|
|
{
|
|
|
|
|
throw new Exception("The method or operation is not implemented.");
|
|
|
|
|
}
|
|
|
|
|
public void Cancel()
|
|
|
|
|
{
|
|
|
|
|
throw new Exception("The method or operation is not implemented.");
|
|
|
|
|
}
|
|
|
|
|
private void PreviewGalleryItem()
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (this.m_TextSymbol != null)
|
|
|
|
|
{
|
|
|
|
|
Bitmap map = StyleGalleryItemView.GetSymbolBitMap(this.picView.Width - 1, this.picView.Height - 1, this.m_StyleGalleryClass, this.m_TextSymbol as ISymbol);
|
|
|
|
|
this.picView.Image = map;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
//RdbUtil.AddException(ex);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private void btnExpression_Click(object sender, System.EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
FormLabelExpression formLabelExpression = new FormLabelExpression();
|
|
|
|
|
formLabelExpression.InitForm(this.m_LabelEngineLayerProps, this.m_Fields);
|
|
|
|
|
if (formLabelExpression.ShowDialog(base.FindForm()) == DialogResult.OK)
|
|
|
|
|
{
|
|
|
|
|
this.SetCmbLabelField(this.m_LabelEngineLayerProps);
|
|
|
|
|
this.InvokeEditValueChanged(null, null);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private void btnLabelStyle_Click(object sender, System.EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
ILabelStyle labelStyle = RenderUtil.OpenStyleSelector(esriStyleClass.Labels, null) as ILabelStyle;
|
|
|
|
|
if (labelStyle != null)
|
|
|
|
|
{
|
|
|
|
|
this.m_TextSymbol = labelStyle.Symbol;
|
|
|
|
|
this.m_TempBasicOverposterLayerProperties = (labelStyle.BasicOverposterLayerProperties as IBasicOverposterLayerProperties4);
|
|
|
|
|
IFeatureLayer2 featureLayer = this.m_Layer as IFeatureLayer2;
|
|
|
|
|
if (featureLayer != null)
|
|
|
|
|
{
|
|
|
|
|
if (featureLayer.ShapeType == esriGeometryType.esriGeometryPoint)
|
|
|
|
|
{
|
|
|
|
|
this.m_TempBasicOverposterLayerProperties.FeatureType = esriBasicOverposterFeatureType.esriOverposterPoint;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (featureLayer.ShapeType == esriGeometryType.esriGeometryPolyline)
|
|
|
|
|
{
|
|
|
|
|
this.m_TempBasicOverposterLayerProperties.FeatureType = esriBasicOverposterFeatureType.esriOverposterPolyline;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (featureLayer.ShapeType == esriGeometryType.esriGeometryPolygon)
|
|
|
|
|
{
|
|
|
|
|
this.m_TempBasicOverposterLayerProperties.FeatureType = esriBasicOverposterFeatureType.esriOverposterPolygon;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
this.SetBySymbol(this.m_TextSymbol);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private bool IsExpression(ILabelEngineLayerProperties2 labelEngineLayerProps)
|
|
|
|
|
{
|
|
|
|
|
if (!labelEngineLayerProps.IsExpressionSimple)
|
|
|
|
|
{
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
if (labelEngineLayerProps.Expression.Contains("&\""))
|
|
|
|
|
{
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
string expression = labelEngineLayerProps.Expression;
|
|
|
|
|
return expression.IndexOf("]") < expression.Length - 1;
|
|
|
|
|
}
|
|
|
|
|
private void cmbLabelType_SelectedIndexChanged(object sender, System.EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (this.cmbLabelType.SelectedIndex == 0)
|
|
|
|
|
{
|
|
|
|
|
this.pnlMutilClasses.Visible = false;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
this.pnlMutilClasses.Visible = true;
|
|
|
|
|
}
|
|
|
|
|
this.InvokeEditValueChanged(null, null);
|
|
|
|
|
}
|
|
|
|
|
private bool ClassNameCanUse(string className)
|
|
|
|
|
{
|
|
|
|
|
if (className == string.Empty)
|
|
|
|
|
{
|
|
|
|
|
MessageHelper.Show("名称不能为空");
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
for (int i = 0; i < this.cmbAnnoLyrPropClass.Properties.Items.Count; i++)
|
|
|
|
|
{
|
|
|
|
|
ItemInfo<IAnnotateLayerProperties, string> itemInfo = this.cmbAnnoLyrPropClass.Properties.Items[i] as ItemInfo<IAnnotateLayerProperties, string>;
|
|
|
|
|
if (itemInfo != null && itemInfo.DisplayValue == className)
|
|
|
|
|
{
|
|
|
|
|
MessageHelper.Show("分类名称已经存在,不能重复!");
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
private bool ClassNameCanUse2(string className)
|
|
|
|
|
{
|
|
|
|
|
if (className == string.Empty)
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
for (int i = 0; i < this.cmbAnnoLyrPropClass.Properties.Items.Count; i++)
|
|
|
|
|
{
|
|
|
|
|
ItemInfo<IAnnotateLayerProperties, string> itemInfo = this.cmbAnnoLyrPropClass.Properties.Items[i] as ItemInfo<IAnnotateLayerProperties, string>;
|
|
|
|
|
if (itemInfo != null && itemInfo.DisplayValue == className)
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
private void CreateNewAnnotateLayerProperties(string name)
|
|
|
|
|
{
|
|
|
|
|
IAnnotateLayerProperties annotateLayerProperties = (this.m_CurrentAnnoLyrProp as IClone).Clone() as IAnnotateLayerProperties;
|
|
|
|
|
annotateLayerProperties.Class = name;
|
|
|
|
|
annotateLayerProperties.DisplayAnnotation = false;
|
|
|
|
|
ItemInfo<IAnnotateLayerProperties, string> item = new ItemInfo<IAnnotateLayerProperties, string>(annotateLayerProperties, name);
|
|
|
|
|
this.cmbAnnoLyrPropClass.SelectedIndex = this.cmbAnnoLyrPropClass.Properties.Items.Add(item);
|
|
|
|
|
this.AnnoLyrPropClassChanged();
|
|
|
|
|
this.InvokeEditValueChanged(null, null);
|
|
|
|
|
}
|
|
|
|
|
private void btnAddClass_Click(object sender, System.EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
string empty = string.Empty;
|
|
|
|
|
if (DevExpressInputBox.InputBox("分类名称:", "新建分类", "", out empty) == DialogResult.OK && this.ClassNameCanUse(empty))
|
|
|
|
|
{
|
|
|
|
|
this.CreateNewAnnotateLayerProperties(empty);
|
|
|
|
|
this.InvokeEditValueChanged(null, null);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private void btnDeleteClass_Click(object sender, System.EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (this.cmbAnnoLyrPropClass.Properties.Items.Count > 1)
|
|
|
|
|
{
|
|
|
|
|
this.cmbAnnoLyrPropClass.Properties.Items.Remove(this.cmbAnnoLyrPropClass.SelectedItem);
|
|
|
|
|
this.cmbAnnoLyrPropClass.SelectedIndex = 0;
|
|
|
|
|
this.InvokeEditValueChanged(null, null);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private void btnRenameClass_Click(object sender, System.EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
string empty = string.Empty;
|
|
|
|
|
if (DevExpressInputBox.InputBox("分类名称:", "修改分类", this.m_CurrentAnnoLyrProp.Class, out empty) == DialogResult.OK && this.ClassNameCanUse(empty))
|
|
|
|
|
{
|
|
|
|
|
this.m_CurrentAnnoLyrProp.Class = empty;
|
|
|
|
|
this.cmbAnnoLyrPropClass.Properties.Items.Remove(this.cmbAnnoLyrPropClass.SelectedItem);
|
|
|
|
|
ItemInfo<IAnnotateLayerProperties, string> item = new ItemInfo<IAnnotateLayerProperties, string>(this.m_CurrentAnnoLyrProp, this.m_CurrentAnnoLyrProp.Class);
|
|
|
|
|
this.cmbAnnoLyrPropClass.SelectedIndex = this.cmbAnnoLyrPropClass.Properties.Items.Add(item);
|
|
|
|
|
this.cmbAnnoLyrPropClass.Update();
|
|
|
|
|
this.InvokeEditValueChanged(null, null);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private void cmbAnnoLyrPropClass_SelectedValueChanged(object sender, System.EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
ItemInfo<IAnnotateLayerProperties, string> itemInfo = this.cmbAnnoLyrPropClass.SelectedItem as ItemInfo<IAnnotateLayerProperties, string>;
|
|
|
|
|
if (itemInfo != null)
|
|
|
|
|
{
|
|
|
|
|
this.ReadAnnotateLayerProperties(itemInfo.InnerValue);
|
|
|
|
|
}
|
|
|
|
|
this.AnnoLyrPropClassChanged();
|
|
|
|
|
this.InvokeEditValueChanged(null, null);
|
|
|
|
|
}
|
|
|
|
|
private void cmbAnnoLyrPropClass_EditValueChanging(object sender, ChangingEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
ItemInfo<IAnnotateLayerProperties, string> param = e.OldValue as ItemInfo<IAnnotateLayerProperties, string>;
|
|
|
|
|
if (param != null)
|
|
|
|
|
{
|
|
|
|
|
this.GetCurrentLabelSet();
|
|
|
|
|
}
|
|
|
|
|
this.InvokeEditValueChanged(null, null);
|
|
|
|
|
}
|
|
|
|
|
private void btnWhereClause_Click(object sender, System.EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (this.frmSQLCreator == null)
|
|
|
|
|
{
|
|
|
|
|
this.frmSQLCreator = new FormSQLCreator();
|
|
|
|
|
}
|
|
|
|
|
IFeatureLayer featureLayer = this.m_Layer as IFeatureLayer;
|
|
|
|
|
if (featureLayer != null)
|
|
|
|
|
{
|
|
|
|
|
this.frmSQLCreator.InitForm(featureLayer);
|
|
|
|
|
this.frmSQLCreator.SQL = this.m_CurrentAnnoLyrProp.WhereClause;
|
|
|
|
|
if (this.frmSQLCreator.ShowDialog() == DialogResult.OK)
|
|
|
|
|
{
|
|
|
|
|
this.m_CurrentAnnoLyrProp.WhereClause = this.frmSQLCreator.SQL;
|
|
|
|
|
this.InvokeEditValueChanged(null, null);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
//RdbUtil.AddException(ex);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private void AnnoLyrPropClassChanged()
|
|
|
|
|
{
|
|
|
|
|
if (this.cmbAnnoLyrPropClass.Properties.Items.Count == 1)
|
|
|
|
|
{
|
|
|
|
|
this.btnDeleteClass.Enabled = false;
|
|
|
|
|
this.chkDisplayAnnotation.Checked = true;
|
|
|
|
|
this.chkDisplayAnnotation.Enabled = false;
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
this.btnDeleteClass.Enabled = true;
|
|
|
|
|
this.chkDisplayAnnotation.Enabled = true;
|
|
|
|
|
}
|
|
|
|
|
private bool CanGetClassFromSymbols()
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
IFeatureRenderer renderer = (this.m_Layer as IGeoFeatureLayer).Renderer;
|
|
|
|
|
IUniqueValueRenderer uniqueValueRenderer = renderer as IUniqueValueRenderer;
|
|
|
|
|
if (uniqueValueRenderer != null)
|
|
|
|
|
{
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
private void btnGetAnnoLyrPropBySymbol_Click(object sender, System.EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
DialogResult dialogResult = MessageHelper.ShowYesNoCancelAndTips("是否要覆盖现有的标注分类?\n\r点击是将使用符号分类对现有的分类进行覆盖。\n\r点击否将跳过现有分类,将符号分类进行追加。");
|
|
|
|
|
if (dialogResult == DialogResult.Yes)
|
|
|
|
|
{
|
|
|
|
|
this.cmbAnnoLyrPropClass.Properties.Items.Clear();
|
|
|
|
|
IFeatureRenderer renderer = (this.m_Layer as IGeoFeatureLayer).Renderer;
|
|
|
|
|
IUniqueValueRenderer uniqueValueRenderer = renderer as IUniqueValueRenderer;
|
|
|
|
|
for (int i = 0; i < uniqueValueRenderer.ValueCount; i++)
|
|
|
|
|
{
|
|
|
|
|
string name = uniqueValueRenderer.get_Value(i);
|
|
|
|
|
this.CreateNewAnnotateLayerProperties(name);
|
|
|
|
|
}
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (dialogResult == DialogResult.No)
|
|
|
|
|
{
|
|
|
|
|
IFeatureRenderer renderer2 = (this.m_Layer as IGeoFeatureLayer).Renderer;
|
|
|
|
|
IUniqueValueRenderer uniqueValueRenderer2 = renderer2 as IUniqueValueRenderer;
|
|
|
|
|
for (int j = 0; j < uniqueValueRenderer2.ValueCount; j++)
|
|
|
|
|
{
|
|
|
|
|
string text = uniqueValueRenderer2.get_Value(j);
|
|
|
|
|
if (this.ClassNameCanUse2(text))
|
|
|
|
|
{
|
|
|
|
|
this.CreateNewAnnotateLayerProperties(text);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private void chkDisplayAnnotation_CheckedChanged(object sender, System.EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
this.InvokeEditValueChanged(null, null);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|