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.
184 lines
7.1 KiB
184 lines
7.1 KiB
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); |
|
} |
|
} |
|
} |
|
}
|
|
|