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.
		
		
		
		
		
			
		
			
				
					
					
						
							441 lines
						
					
					
						
							20 KiB
						
					
					
				
			
		
		
	
	
							441 lines
						
					
					
						
							20 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 KGIS.Framework.Utils.Helper; | 
						|
 | 
						|
namespace KGIS.Plugin.LayerProperty.View.UC_Controls | 
						|
{ | 
						|
    public partial class UCGeneralProperty : XtraUserControl, IUCPropertyPageEx, IPropertyPage | 
						|
    { | 
						|
        private string m_Name = ""; | 
						|
        private string m_AliasName = ""; | 
						|
        private bool m_Visible = true; | 
						|
        private bool m_IsCustomLayer; | 
						|
        private bool isDirty; | 
						|
        private string m_GUID = Guid.NewGuid().ToString(); | 
						|
        private string m_Description = ""; | 
						|
        private bool m_StartUpLoad = true; | 
						|
        private double m_MaxScale; | 
						|
        private double m_MinScale; | 
						|
        //internal event SelectionChangedEventHandler<AETable> SelectTableChanged; | 
						|
        private ILayerProperty m_LayerPropertyObject; | 
						|
        private ILayer m_FeatureLayer; | 
						|
        public UCGeneralProperty() | 
						|
        { | 
						|
            InitializeComponent(); | 
						|
        } | 
						|
 | 
						|
        public int Priority { get => throw new NotImplementedException(); set => throw new NotImplementedException(); } | 
						|
        public string Title { get => throw new NotImplementedException(); set => throw new NotImplementedException(); } | 
						|
        public bool IsPageDirty | 
						|
        { | 
						|
            get | 
						|
            { | 
						|
                return this.isDirty; | 
						|
            } | 
						|
            set | 
						|
            { | 
						|
                this.isDirty = value; | 
						|
            } | 
						|
        } | 
						|
 | 
						|
        public event System.EventHandler EditorChanged; | 
						|
 | 
						|
        public int Activate() | 
						|
        { | 
						|
            throw new NotImplementedException(); | 
						|
        } | 
						|
 | 
						|
        public void Cancel() | 
						|
        { | 
						|
            throw new NotImplementedException(); | 
						|
        } | 
						|
        public void Write2Prop() | 
						|
        { | 
						|
            try | 
						|
            { | 
						|
                if (this.m_IsCustomLayer) | 
						|
                { | 
						|
                    //this.m_LayerPropertyObject.BeginUpdate(); | 
						|
                    //if (this.m_LayerPropertyObject is IDatabaseLayerProperty) | 
						|
                    //{ | 
						|
                    //    IDatabaseLayerProperty databaseLayerProperty = this.m_LayerPropertyObject as IDatabaseLayerProperty; | 
						|
                    //    databaseLayerProperty.DataSource = this.m_DataSource; | 
						|
                    //} | 
						|
                    //IDisplayControler displayControler = this.m_LayerPropertyObject as IDisplayControler; | 
						|
                    //this.m_LayerPropertyObject.AliasName = this.m_AliasName; | 
						|
                    //this.m_LayerPropertyObject.Description = this.m_Description; | 
						|
                    //this.m_LayerPropertyObject.Key = this.m_GUID; | 
						|
                    //displayControler.MaxScale = this.m_MaxScale; | 
						|
                    //displayControler.MinScale = this.m_MinScale; | 
						|
                    //this.m_LayerPropertyObject.Name = this.m_Name; | 
						|
                    //displayControler.Visible = this.m_Visible; | 
						|
                    //displayControler.StartupLoad = this.m_StartUpLoad; | 
						|
                    //this.m_LayerPropertyObject.EndUpdate(); | 
						|
                } | 
						|
                else | 
						|
                { | 
						|
                    ILayerGeneralProperties layerGeneralProperties = this.m_FeatureLayer as ILayerGeneralProperties; | 
						|
                    this.m_FeatureLayer.Name = this.m_AliasName; | 
						|
                    layerGeneralProperties.LayerDescription = this.m_Description; | 
						|
                    this.m_FeatureLayer.MaximumScale = this.m_MaxScale; | 
						|
                    this.m_FeatureLayer.MinimumScale = this.m_MinScale; | 
						|
                    this.m_FeatureLayer.Visible = this.m_Visible; | 
						|
                } | 
						|
                this.isDirty = false; | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                //RdbUtil.AddException(ex); | 
						|
            } | 
						|
        } | 
						|
        public bool CanWrite2Prop() | 
						|
        { | 
						|
            try | 
						|
            { | 
						|
                if (this.m_IsCustomLayer && this.m_Name == "") | 
						|
                { | 
						|
                    MessageHelper.ShowTips("请选择数据源!"); | 
						|
                    this.btnDataSource.Focus(); | 
						|
                    bool result = false; | 
						|
                    return result; | 
						|
                } | 
						|
                if (this.m_AliasName == "") | 
						|
                { | 
						|
                    MessageHelper.ShowTips("未设置图层别名!"); | 
						|
                    this.txtLayerAliasName.Focus(); | 
						|
                    this.txtLayerAliasName2.Focus(); | 
						|
                    bool result = false; | 
						|
                    return result; | 
						|
                } | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                //RdbUtil.AddException(ex); | 
						|
            } | 
						|
            return this.isDirty; | 
						|
        } | 
						|
 | 
						|
        public void Deactivate() | 
						|
        { | 
						|
            throw new NotImplementedException(); | 
						|
        } | 
						|
 | 
						|
        public void InitUC(ILayerProperty LayerPropertyObject, bool isNew) | 
						|
        { | 
						|
            try | 
						|
            { | 
						|
                this.m_IsCustomLayer = true; | 
						|
                this.m_LayerPropertyObject = LayerPropertyObject; | 
						|
                this.cmbMinScale.Init(); | 
						|
                this.cmbMaxScale.Init(); | 
						|
                if (!isNew) | 
						|
                { | 
						|
                    //if (LayerPropertyObject is IDatabaseLayerProperty) | 
						|
                    //{ | 
						|
                    //    IDatabaseLayerProperty databaseLayerProperty = LayerPropertyObject as IDatabaseLayerProperty; | 
						|
                    //    this.m_DataSource = databaseLayerProperty.DataSource; | 
						|
                    //    if (databaseLayerProperty.DataSource != null) | 
						|
                    //    { | 
						|
                    //        this.txtDataSetType.Text = databaseLayerProperty.DataSource.Category; | 
						|
                    //        this.btnDataSource.Text = databaseLayerProperty.DataSource.Name; | 
						|
                    //        this.btnDataSource.Enabled = true; | 
						|
                    //    } | 
						|
                    //} | 
						|
                    //else | 
						|
                    //{ | 
						|
                    //    if (LayerPropertyObject is IUniversalDatabaseLayerProperty) | 
						|
                    //    { | 
						|
                    //        IUniversalDatabaseLayerProperty universalDatabaseLayerProperty = LayerPropertyObject as IUniversalDatabaseLayerProperty; | 
						|
                    //        this.m_DatasetName = universalDatabaseLayerProperty.DataSourceName; | 
						|
                    //        if (universalDatabaseLayerProperty.DataSourceName != null) | 
						|
                    //        { | 
						|
                    //            this.txtDataSetType.Text = universalDatabaseLayerProperty.LayerType.ToString(); | 
						|
                    //            this.btnDataSource.Text = universalDatabaseLayerProperty.Name; | 
						|
                    //            this.btnDataSource.Enabled = false; | 
						|
                    //        } | 
						|
                    //        else | 
						|
                    //        { | 
						|
                    //            if (universalDatabaseLayerProperty.Layer != null) | 
						|
                    //            { | 
						|
                    //                this.txtDataSetType.Text = universalDatabaseLayerProperty.LayerType.ToString(); | 
						|
                    //                this.btnDataSource.Text = universalDatabaseLayerProperty.Layer.Name; | 
						|
                    //                this.btnDataSource.Enabled = false; | 
						|
                    //            } | 
						|
                    //        } | 
						|
                    //    } | 
						|
                    //    else | 
						|
                    //    { | 
						|
                    //        if (LayerPropertyObject is ITempLayerProperty) | 
						|
                    //        { | 
						|
                    //            ITempLayerProperty tempLayerProperty = LayerPropertyObject as ITempLayerProperty; | 
						|
                    //            this.m_DatasetName = tempLayerProperty.DataSource; | 
						|
                    //            if (tempLayerProperty.DataSource != null) | 
						|
                    //            { | 
						|
                    //                this.txtDataSetType.Text = tempLayerProperty.LayerType.ToString(); | 
						|
                    //                this.btnDataSource.Text = tempLayerProperty.Name; | 
						|
                    //                this.btnDataSource.Enabled = false; | 
						|
                    //            } | 
						|
                    //            else | 
						|
                    //            { | 
						|
                    //                if (tempLayerProperty.Layer != null) | 
						|
                    //                { | 
						|
                    //                    this.txtDataSetType.Text = tempLayerProperty.LayerType.ToString(); | 
						|
                    //                    this.btnDataSource.Text = tempLayerProperty.Layer.Name; | 
						|
                    //                    this.btnDataSource.Enabled = false; | 
						|
                    //                } | 
						|
                    //            } | 
						|
                    //        } | 
						|
                    //    } | 
						|
                    //} | 
						|
                    //IDisplayControler displayControler = LayerPropertyObject as IDisplayControler; | 
						|
                    //this.txtGUID.Text = LayerPropertyObject.Key; | 
						|
                    //this.txtLayerAliasName.Text = LayerPropertyObject.AliasName; | 
						|
                    //this.memDescription.Text = LayerPropertyObject.Description; | 
						|
                    //this.chkVisible.Checked = displayControler.Visible; | 
						|
                    //this.chkStartUpLoad.Checked = displayControler.StartupLoad; | 
						|
                    //this.radioGroup1.SelectedIndex = ((displayControler.MaxScale + displayControler.MinScale == 0.0) ? 0 : 1); | 
						|
                    //this.cmbMaxScale.ScaleValue = displayControler.MaxScale; | 
						|
                    //this.cmbMinScale.ScaleValue = displayControler.MinScale; | 
						|
                } | 
						|
                else | 
						|
                { | 
						|
                    //this.m_DataSource = null; | 
						|
                    this.txtDataSetType.Text = ""; | 
						|
                    this.txtGUID.Text = this.m_GUID; | 
						|
                    this.txtLayerAliasName.Text = ""; | 
						|
                    this.btnDataSource.Text = ""; | 
						|
                    this.chkVisible.Checked = true; | 
						|
                    this.chkStartUpLoad.Checked = true; | 
						|
                    this.radioGroup1.SelectedIndex = 0; | 
						|
                    this.cmbMaxScale.Enabled = false; | 
						|
                    this.cmbMinScale.Enabled = false; | 
						|
                } | 
						|
                this.m_AliasName = this.txtLayerAliasName.Text; | 
						|
                this.m_Description = this.memDescription.Text; | 
						|
                this.m_GUID = this.txtGUID.Text; | 
						|
                this.m_Name = this.btnDataSource.Text; | 
						|
                this.m_Visible = this.chkVisible.Checked; | 
						|
                this.m_StartUpLoad = this.chkStartUpLoad.Checked; | 
						|
                this.LayoutControls(); | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                //RdbUtil.AddException(ex); | 
						|
            } | 
						|
        } | 
						|
        private void LayoutControls() | 
						|
        { | 
						|
            if (this.m_IsCustomLayer) | 
						|
            { | 
						|
                this.pnlMain.Controls.Clear(); | 
						|
                this.pnlLayerProps.Visible = true; | 
						|
                this.pnlLayerProps2.Visible = false; | 
						|
                this.pnlMain.Refresh(); | 
						|
                this.pnlLayerProps.Dock = DockStyle.Fill; | 
						|
                this.pnlMain.Controls.Add(this.pnlLayerProps); | 
						|
                this.chkStartUpLoad.Visible = true; | 
						|
                return; | 
						|
            } | 
						|
            this.pnlMain.Controls.Clear(); | 
						|
            this.pnlLayerProps2.Visible = true; | 
						|
            this.pnlLayerProps.Visible = false; | 
						|
            this.pnlMain.Refresh(); | 
						|
            this.pnlLayerProps2.Dock = DockStyle.Fill; | 
						|
            this.pnlMain.Controls.Add(this.pnlLayerProps2); | 
						|
            this.chkStartUpLoad.Visible = false; | 
						|
        } | 
						|
        public void InitUC(object LayerPropertyObject) | 
						|
        { | 
						|
            try | 
						|
            { | 
						|
                if (LayerPropertyObject == null) | 
						|
                { | 
						|
                    //this.m_DataSource = null; | 
						|
                    this.txtDataSetType.Text = ""; | 
						|
                    this.txtGUID.Text = this.m_GUID; | 
						|
                    this.txtLayerAliasName.Text = ""; | 
						|
                    this.txtLayerAliasName2.Text = ""; | 
						|
                    this.btnDataSource.Text = ""; | 
						|
                    this.chkVisible.Checked = true; | 
						|
                    this.chkVisible2.Checked = true; | 
						|
                    this.chkStartUpLoad.Checked = true; | 
						|
                    this.radioGroup1.SelectedIndex = 0; | 
						|
                    this.cmbMaxScale.Enabled = false; | 
						|
                    this.cmbMinScale.Enabled = false; | 
						|
                    this.memDescription.Text = ""; | 
						|
                    this.memDescription2.Text = ""; | 
						|
                    this.InitUC(null, true); | 
						|
                } | 
						|
                else | 
						|
                { | 
						|
                    if (LayerPropertyObject is ILayerProperty) | 
						|
                    { | 
						|
                        ILayerProperty layerPropertyObject = LayerPropertyObject as ILayerProperty; | 
						|
                        this.InitUC(layerPropertyObject, false); | 
						|
                        return; | 
						|
                    } | 
						|
                    this.m_IsCustomLayer = false; | 
						|
                    this.m_FeatureLayer = (LayerPropertyObject as ILayer); | 
						|
                    this.cmbMinScale.Init(); | 
						|
                    this.cmbMaxScale.Init(); | 
						|
                    ILayerGeneralProperties layerGeneralProperties = LayerPropertyObject as ILayerGeneralProperties; | 
						|
                    this.txtDataSetType.Text = ""; | 
						|
                    this.txtGUID.Text = ""; | 
						|
                    this.txtLayerAliasName.Text = this.m_FeatureLayer.Name; | 
						|
                    this.txtLayerAliasName2.Text = this.m_FeatureLayer.Name; | 
						|
                    if (layerGeneralProperties != null) | 
						|
                    { | 
						|
                        this.memDescription.Text = layerGeneralProperties.LayerDescription; | 
						|
                        this.memDescription2.Text = layerGeneralProperties.LayerDescription; | 
						|
                    } | 
						|
                    this.radioGroup1.SelectedIndex = ((this.m_FeatureLayer.MaximumScale + this.m_FeatureLayer.MinimumScale == 0.0) ? 0 : 1); | 
						|
                    this.cmbMaxScale.ScaleValue = this.m_FeatureLayer.MaximumScale; | 
						|
                    this.cmbMinScale.ScaleValue = this.m_FeatureLayer.MinimumScale; | 
						|
                    this.chkVisible.Checked = this.m_FeatureLayer.Visible; | 
						|
                    this.chkVisible2.Checked = this.m_FeatureLayer.Visible; | 
						|
                } | 
						|
                this.m_AliasName = this.txtLayerAliasName.Text; | 
						|
                this.m_Description = this.memDescription.Text; | 
						|
                this.m_GUID = this.txtGUID.Text; | 
						|
                this.m_Name = this.btnDataSource.Text; | 
						|
                this.m_Visible = this.chkVisible.Checked; | 
						|
                this.m_StartUpLoad = this.chkStartUpLoad.Checked; | 
						|
                this.m_MaxScale = this.cmbMaxScale.ScaleValue; | 
						|
                this.m_MinScale = this.cmbMinScale.ScaleValue; | 
						|
                this.LayoutControls(); | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                //RdbUtil.AddException(ex); | 
						|
            } | 
						|
        } | 
						|
 | 
						|
        public void SetDefaultValue(object value) | 
						|
        { | 
						|
            throw new NotImplementedException(); | 
						|
        } | 
						|
 | 
						|
        private void txtLayerAliasName_EditValueChanged(object sender, System.EventArgs e) | 
						|
        { | 
						|
            this.m_AliasName = (sender as TextEdit).Text; | 
						|
            this.InvokeEditValueChanged(sender, e); | 
						|
        } | 
						|
        private void InvokeEditValueChanged(object sender, System.EventArgs e) | 
						|
        { | 
						|
            if (this.EditorChanged != null) | 
						|
            { | 
						|
                this.EditorChanged(sender, e); | 
						|
            } | 
						|
            this.isDirty = true; | 
						|
        } | 
						|
        private void radioGroup1_SelectedIndexChanged(object sender, System.EventArgs e) | 
						|
        { | 
						|
            this.cmbMaxScale.Enabled = Convert.ToBoolean(this.radioGroup1.SelectedIndex); | 
						|
            this.cmbMinScale.Enabled = Convert.ToBoolean(this.radioGroup1.SelectedIndex); | 
						|
            if (this.radioGroup1.SelectedIndex == 0) | 
						|
            { | 
						|
                this.m_MaxScale = 0.0; | 
						|
                this.m_MinScale = 0.0; | 
						|
            } | 
						|
            this.InvokeEditValueChanged(sender, e); | 
						|
        } | 
						|
        private void txtGUID_EditValueChanged(object sender, System.EventArgs e) | 
						|
        { | 
						|
            this.m_GUID = this.txtGUID.Text; | 
						|
        } | 
						|
        private void chkVisible_CheckedChanged(object sender, System.EventArgs e) | 
						|
        { | 
						|
            this.m_Visible = (sender as CheckEdit).Checked; | 
						|
            if (this.m_Visible) | 
						|
            { | 
						|
                this.chkStartUpLoad.Checked = true; | 
						|
            } | 
						|
        } | 
						|
        private void btnDataSource_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e) | 
						|
        { | 
						|
            try | 
						|
            { | 
						|
                //if (this.m_LayerPropertyObject is IDatabaseLayerProperty || this.m_LayerPropertyObject == null) | 
						|
                //{ | 
						|
                //    if (this.frmAETableSelector == null) | 
						|
                //    { | 
						|
                //        this.frmAETableSelector = new FormAETableSelector(); | 
						|
                //    } | 
						|
                //    this.frmAETableSelector.InitForm(false); | 
						|
                //    DialogResult dialogResult = this.frmAETableSelector.ShowDialog(); | 
						|
                //    if (dialogResult == DialogResult.OK) | 
						|
                //    { | 
						|
                //        AETable aETable = this.frmAETableSelector.SelectedTables[0]; | 
						|
                //        if (aETable != null) | 
						|
                //        { | 
						|
                //            if (this.m_LayerPropertyObject != null && (this.m_LayerPropertyObject as IDatabaseLayerProperty).DataSource.GeometryType != aETable.GeometryType) | 
						|
                //            { | 
						|
                //                DevExpressMessageDialog.ShowMessageDialog("选择的数据源与现有数据源的几何类型不一致,请重新选择。"); | 
						|
                //            } | 
						|
                //            else | 
						|
                //            { | 
						|
                //                this.m_DataSource = aETable; | 
						|
                //                string text = this.m_DataSource.AliasName; | 
						|
                //                if (text == "") | 
						|
                //                { | 
						|
                //                    text = this.m_DataSource.Name.Substring(this.m_DataSource.Name.IndexOf('.') + 1); | 
						|
                //                } | 
						|
                //                this.txtLayerAliasName.Text = text; | 
						|
                //                this.txtDataSetType.Text = this.m_DataSource.Category; | 
						|
                //                this.memDescription.Text = this.m_DataSource.Description; | 
						|
                //                this.btnDataSource.Text = this.m_DataSource.Name; | 
						|
                //                SelectionChangedEventArgs<AETable> e2 = new SelectionChangedEventArgs<AETable>(this.m_DataSource, this.frmAETableSelector.SelectedTables[0]); | 
						|
                //                this.SelectTableChangedInvoke(sender, e2); | 
						|
                //            } | 
						|
                //        } | 
						|
                //    } | 
						|
                //} | 
						|
                //else | 
						|
                //{ | 
						|
                //    ITempLayerProperty arg_15D_0 = this.m_LayerPropertyObject as ITempLayerProperty; | 
						|
                //} | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                //RdbUtil.AddException(ex); | 
						|
            } | 
						|
        } | 
						|
        private void btnDataSource_EditValueChanged(object sender, System.EventArgs e) | 
						|
        { | 
						|
            this.m_Name = this.btnDataSource.Text; | 
						|
        } | 
						|
        private void memDescription_EditValueChanged(object sender, System.EventArgs e) | 
						|
        { | 
						|
            this.m_Description = (sender as MemoEdit).Text; | 
						|
            this.InvokeEditValueChanged(sender, e); | 
						|
        } | 
						|
        private void chkStartUpLoad_CheckedChanged(object sender, System.EventArgs e) | 
						|
        { | 
						|
            this.m_StartUpLoad = this.chkStartUpLoad.Checked; | 
						|
            if (!this.m_StartUpLoad) | 
						|
            { | 
						|
                this.chkVisible.Checked = false; | 
						|
            } | 
						|
        } | 
						|
        private void cmbScaleMin_ScaleValueChanged(double scale) | 
						|
        { | 
						|
            this.m_MinScale = scale; | 
						|
            this.InvokeEditValueChanged(null, null); | 
						|
        } | 
						|
        private void cmbMaxScale_ScaleValueChanged(double scale) | 
						|
        { | 
						|
            this.m_MaxScale = scale; | 
						|
            this.InvokeEditValueChanged(null, null); | 
						|
        } | 
						|
    } | 
						|
}
 | 
						|
 |