|
|
|
|
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.Geodatabase;
|
|
|
|
|
using KGIS.Plugin.LayerProperty.Properties;
|
|
|
|
|
|
|
|
|
|
namespace KGIS.Plugin.LayerProperty.View.UC_Controls
|
|
|
|
|
{
|
|
|
|
|
public partial class UCPointLabelPlacementSet : XtraUserControl, IPropertyPage
|
|
|
|
|
{
|
|
|
|
|
private IBasicOverposterLayerProperties4 m_LayerProperties;
|
|
|
|
|
private Array Angles;
|
|
|
|
|
private esriLabelRotationType m_LabelRotationType;
|
|
|
|
|
private bool m_PerpendicularToAngle;
|
|
|
|
|
private string m_RotationField;
|
|
|
|
|
private IFields fields;
|
|
|
|
|
private bool isPageDirty;
|
|
|
|
|
public event System.EventHandler EditorChanged;
|
|
|
|
|
public IFields Fields
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return this.fields;
|
|
|
|
|
}
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
this.fields = value;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public bool IsPageDirty
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return this.isPageDirty;
|
|
|
|
|
}
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
this.isPageDirty = value;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public UCPointLabelPlacementSet()
|
|
|
|
|
{
|
|
|
|
|
InitializeComponent();
|
|
|
|
|
}
|
|
|
|
|
public void InitUC(object layerProperty)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
this.m_LayerProperties = (layerProperty as IBasicOverposterLayerProperties4);
|
|
|
|
|
this.m_LabelRotationType = this.m_LayerProperties.RotationType;
|
|
|
|
|
this.m_PerpendicularToAngle = this.m_LayerProperties.PerpendicularToAngle;
|
|
|
|
|
this.m_RotationField = this.m_LayerProperties.RotationField;
|
|
|
|
|
switch (this.m_LayerProperties.PointPlacementMethod)
|
|
|
|
|
{
|
|
|
|
|
case esriOverposterPointPlacementMethod.esriAroundPoint:
|
|
|
|
|
this.chkAroundPoint.Checked = true;
|
|
|
|
|
break;
|
|
|
|
|
case esriOverposterPointPlacementMethod.esriOnTopPoint:
|
|
|
|
|
this.chkOnTop.Checked = true;
|
|
|
|
|
break;
|
|
|
|
|
case esriOverposterPointPlacementMethod.esriSpecifiedAngles:
|
|
|
|
|
this.chkSpecifiedAngles.Checked = true;
|
|
|
|
|
this.Angles = (this.m_LayerProperties.PointPlacementAngles as Array);
|
|
|
|
|
break;
|
|
|
|
|
case esriOverposterPointPlacementMethod.esriRotationField:
|
|
|
|
|
this.chkSpecifiedField.Checked = true;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
this.btnAngles.Enabled = this.chkSpecifiedAngles.Checked;
|
|
|
|
|
this.btnRotationField.Enabled = this.chkSpecifiedField.Checked;
|
|
|
|
|
this.pictureEdit1.Image = Resources.TopRightAllAllowed;
|
|
|
|
|
this.isPageDirty = false;
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
//RdbUtil.AddException(ex);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public bool CanWrite2Prop()
|
|
|
|
|
{
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
public void Write2Prop()
|
|
|
|
|
{
|
|
|
|
|
if (this.isPageDirty)
|
|
|
|
|
{
|
|
|
|
|
if (this.chkAroundPoint.Checked)
|
|
|
|
|
{
|
|
|
|
|
this.m_LayerProperties.PointPlacementMethod = esriOverposterPointPlacementMethod.esriAroundPoint;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (this.chkOnTop.Checked)
|
|
|
|
|
{
|
|
|
|
|
this.m_LayerProperties.PointPlacementMethod = esriOverposterPointPlacementMethod.esriOnTopPoint;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (this.chkSpecifiedAngles.Checked)
|
|
|
|
|
{
|
|
|
|
|
this.m_LayerProperties.PointPlacementMethod = esriOverposterPointPlacementMethod.esriSpecifiedAngles;
|
|
|
|
|
this.m_LayerProperties.PointPlacementAngles = this.Angles;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (this.chkSpecifiedField.Checked)
|
|
|
|
|
{
|
|
|
|
|
this.m_LayerProperties.PointPlacementMethod = esriOverposterPointPlacementMethod.esriRotationField;
|
|
|
|
|
this.m_LayerProperties.RotationType = this.m_LabelRotationType;
|
|
|
|
|
this.m_LayerProperties.PerpendicularToAngle = this.m_PerpendicularToAngle;
|
|
|
|
|
this.m_LayerProperties.RotationField = this.m_RotationField;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
this.isPageDirty = false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public void SetDefaultValue(object value)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
private void InvokeEditorChanged()
|
|
|
|
|
{
|
|
|
|
|
if (this.EditorChanged != null)
|
|
|
|
|
{
|
|
|
|
|
this.EditorChanged(null, null);
|
|
|
|
|
}
|
|
|
|
|
this.isPageDirty = true;
|
|
|
|
|
}
|
|
|
|
|
private void chkSpecifiedAngles_CheckedChanged(object sender, System.EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
this.btnAngles.Enabled = this.chkSpecifiedAngles.Checked;
|
|
|
|
|
this.InvokeEditorChanged();
|
|
|
|
|
}
|
|
|
|
|
private void chkSpecifiedField_CheckedChanged(object sender, System.EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
this.btnRotationField.Enabled = this.chkSpecifiedField.Checked;
|
|
|
|
|
this.InvokeEditorChanged();
|
|
|
|
|
}
|
|
|
|
|
private void chkOnTop_CheckedChanged(object sender, System.EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
this.InvokeEditorChanged();
|
|
|
|
|
}
|
|
|
|
|
private void btnRotationField_Click(object sender, System.EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
FormPointLabelRatation formPointLabelRatation = new FormPointLabelRatation();
|
|
|
|
|
formPointLabelRatation.Init(this.fields, this.m_LayerProperties.RotationField, this.m_LayerProperties.PerpendicularToAngle, this.m_LayerProperties.RotationType);
|
|
|
|
|
if (formPointLabelRatation.ShowDialog(base.FindForm()) == DialogResult.OK)
|
|
|
|
|
{
|
|
|
|
|
this.m_LabelRotationType = formPointLabelRatation.LabelRotationType;
|
|
|
|
|
this.m_PerpendicularToAngle = formPointLabelRatation.PerpendicularToAngle;
|
|
|
|
|
this.m_RotationField = formPointLabelRatation.RotationField;
|
|
|
|
|
this.InvokeEditorChanged();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private void btnAngles_Click(object sender, System.EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
this.Angles = (this.m_LayerProperties.PointPlacementAngles as Array);
|
|
|
|
|
FormPointPlacementAngles formPointPlacementAngles = new FormPointPlacementAngles();
|
|
|
|
|
formPointPlacementAngles.Init(this.Angles);
|
|
|
|
|
if (formPointPlacementAngles.ShowDialog(base.FindForm()) == DialogResult.OK)
|
|
|
|
|
{
|
|
|
|
|
this.Angles = formPointPlacementAngles.Angles;
|
|
|
|
|
this.InvokeEditorChanged();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
//RdbUtil.AddException(ex);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|