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 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(); 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; } } }