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.
220 lines
8.5 KiB
220 lines
8.5 KiB
using ESRI.ArcGIS.Carto; |
|
using ESRI.ArcGIS.Geodatabase; |
|
using KGIS.Plugin.LayerProperty.Interface; |
|
using KGIS.Plugin.LayerProperty.View.UC_Controls; |
|
using System; |
|
using System.Collections.Generic; |
|
using System.ComponentModel; |
|
using System.Data; |
|
using System.Drawing; |
|
using System.Linq; |
|
using System.Text; |
|
using System.Threading.Tasks; |
|
using System.Windows.Forms; |
|
|
|
namespace KGIS.Plugin.LayerProperty.View |
|
{ |
|
public partial class FormPlacmentProps : Form |
|
{ |
|
private IBasicOverposterLayerProperties4 m_BasicOverposterLayerProperties; |
|
private IPropertyPage ucPolygonLabelPlacementSet; |
|
private IPropertyPage ucPolylineLabelPlacementSet; |
|
private IPropertyPage ucPointLabelPlacementSet; |
|
private List<IPropertyPage> PropertyList; |
|
private esriBasicNumLabelsOption m_LabelsOption; |
|
private IFields fields; |
|
private bool isPageDirty; |
|
public event System.EventHandler EditorChanged; |
|
public IFields Fields |
|
{ |
|
get |
|
{ |
|
return this.fields; |
|
} |
|
set |
|
{ |
|
this.fields = 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 bool IsPageDirty |
|
{ |
|
get |
|
{ |
|
return this.isPageDirty; |
|
} |
|
set |
|
{ |
|
this.isPageDirty = value; |
|
} |
|
} |
|
public FormPlacmentProps() |
|
{ |
|
InitializeComponent(); |
|
} |
|
|
|
public new int Activate() |
|
{ |
|
throw new Exception("The method or operation is not implemented."); |
|
} |
|
public new 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."); |
|
} |
|
public void InitUC(object layerProperty) |
|
{ |
|
try |
|
{ |
|
this.PropertyList = new List<IPropertyPage>(); |
|
this.m_BasicOverposterLayerProperties = (layerProperty as IBasicOverposterLayerProperties4); |
|
this.grpLabelSet.Controls.Clear(); |
|
switch (this.m_BasicOverposterLayerProperties.FeatureType) |
|
{ |
|
case esriBasicOverposterFeatureType.esriOverposterPoint: |
|
this.grpLabelSet.Text = "点状要素设置"; |
|
if (this.ucPointLabelPlacementSet == null) |
|
{ |
|
this.ucPointLabelPlacementSet = new UCPointLabelPlacementSet(); |
|
this.ucPointLabelPlacementSet.EditorChanged += new System.EventHandler(this.ucPropertySet_EditorChanged); |
|
} |
|
this.ucPointLabelPlacementSet.Dock = DockStyle.Fill; |
|
this.ucPointLabelPlacementSet.InitUC(layerProperty); |
|
(this.ucPointLabelPlacementSet as UCPointLabelPlacementSet).Fields = this.fields; |
|
this.grpLabelSet.Controls.Add(this.ucPointLabelPlacementSet as System.Windows.Forms.Control); |
|
this.PropertyList.Add(this.ucPointLabelPlacementSet); |
|
break; |
|
case esriBasicOverposterFeatureType.esriOverposterPolyline: |
|
this.grpLabelSet.Text = "线状要素设置"; |
|
if (this.ucPolylineLabelPlacementSet == null) |
|
{ |
|
this.ucPolylineLabelPlacementSet = new UCPolylineLabelPlacementSet(); |
|
this.ucPolylineLabelPlacementSet.EditorChanged += new System.EventHandler(this.ucPropertySet_EditorChanged); |
|
} |
|
this.ucPolylineLabelPlacementSet.Dock = DockStyle.Fill; |
|
this.ucPolylineLabelPlacementSet.InitUC(layerProperty); |
|
this.grpLabelSet.Controls.Add(this.ucPolylineLabelPlacementSet as System.Windows.Forms.Control); |
|
this.PropertyList.Add(this.ucPolylineLabelPlacementSet); |
|
break; |
|
case esriBasicOverposterFeatureType.esriOverposterPolygon: |
|
this.grpLabelSet.Text = "面状要素设置"; |
|
if (this.ucPolygonLabelPlacementSet == null) |
|
{ |
|
this.ucPolygonLabelPlacementSet = new UCPolygonLabelPlacementSet(); |
|
this.ucPolygonLabelPlacementSet.EditorChanged += new System.EventHandler(this.ucPropertySet_EditorChanged); |
|
} |
|
this.ucPolygonLabelPlacementSet.Dock = DockStyle.Fill; |
|
this.ucPolygonLabelPlacementSet.InitUC(layerProperty); |
|
this.grpLabelSet.Controls.Add(this.ucPolygonLabelPlacementSet as System.Windows.Forms.Control); |
|
this.PropertyList.Add(this.ucPolygonLabelPlacementSet); |
|
break; |
|
} |
|
this.m_LabelsOption = this.m_BasicOverposterLayerProperties.NumLabelsOption; |
|
this.rgpDuplicateLabel.SelectedIndex = this.m_LabelsOption - esriBasicNumLabelsOption.esriOneLabelPerName; |
|
this.txtBufferRatio.Text = this.m_BasicOverposterLayerProperties.BufferRatio.ToString(); |
|
this.cmbLabelWeight.SelectedIndex = (int)(esriBasicOverposterWeight.esriHighWeight - this.m_BasicOverposterLayerProperties.LabelWeight); |
|
if (this.m_BasicOverposterLayerProperties.FeatureWeight == esriBasicOverposterWeight.esriNoWeight) |
|
{ |
|
this.cmbFeatureWeight.SelectedIndex = 3; |
|
} |
|
else |
|
{ |
|
this.cmbFeatureWeight.SelectedIndex = (int)(esriBasicOverposterWeight.esriHighWeight - this.m_BasicOverposterLayerProperties.FeatureWeight); |
|
} |
|
this.isPageDirty = false; |
|
} |
|
catch (Exception ex) |
|
{ |
|
//RdbUtil.AddException(ex); |
|
} |
|
} |
|
private void ucPropertySet_EditorChanged(object sender, System.EventArgs e) |
|
{ |
|
this.InvokeEditorChanged(); |
|
} |
|
public bool CanWrite2Prop() |
|
{ |
|
return true; |
|
} |
|
public void Write2Prop() |
|
{ |
|
try |
|
{ |
|
foreach (IPropertyPage current in this.PropertyList) |
|
{ |
|
if (current.CanWrite2Prop()) |
|
{ |
|
current.Write2Prop(); |
|
} |
|
} |
|
this.m_BasicOverposterLayerProperties.NumLabelsOption = this.m_LabelsOption; |
|
this.isPageDirty = false; |
|
} |
|
catch (Exception ex) |
|
{ |
|
//RdbUtil.AddException(ex); |
|
} |
|
} |
|
public void SetDefaultValue(object value) |
|
{ |
|
} |
|
private void btnOK_Click(object sender, System.EventArgs e) |
|
{ |
|
try |
|
{ |
|
if (this.CanWrite2Prop()) |
|
{ |
|
this.Write2Prop(); |
|
} |
|
base.DialogResult = DialogResult.OK; |
|
base.Close(); |
|
} |
|
catch (Exception ex) |
|
{ |
|
//RdbUtil.AddException(ex); |
|
} |
|
} |
|
private void btnCancel_Click(object sender, System.EventArgs e) |
|
{ |
|
base.DialogResult = DialogResult.Cancel; |
|
base.Close(); |
|
} |
|
private void rgpDuplicateLabel_SelectedIndexChanged(object sender, System.EventArgs e) |
|
{ |
|
this.m_LabelsOption = this.rgpDuplicateLabel.SelectedIndex + esriBasicNumLabelsOption.esriOneLabelPerName; |
|
this.InvokeEditorChanged(); |
|
} |
|
private void InvokeEditorChanged() |
|
{ |
|
if (this.EditorChanged != null) |
|
{ |
|
this.EditorChanged(null, null); |
|
} |
|
this.isPageDirty = true; |
|
} |
|
} |
|
}
|
|
|