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.
		
		
		
		
		
			
		
			
				
					
					
						
							824 lines
						
					
					
						
							32 KiB
						
					
					
				
			
		
		
	
	
							824 lines
						
					
					
						
							32 KiB
						
					
					
				using DevExpress.XtraEditors; | 
						|
using DevExpress.XtraGrid.Views.Base; | 
						|
using DevExpress.XtraGrid.Views.Grid.ViewInfo; | 
						|
using ESRI.ArcGIS.Carto; | 
						|
using ESRI.ArcGIS.Display; | 
						|
using ESRI.ArcGIS.esriSystem; | 
						|
using ESRI.ArcGIS.Geodatabase; | 
						|
using ESRI.ArcGIS.Geometry; | 
						|
using KGIS.Framework.Utils.Helper; | 
						|
using KGIS.Plugin.LayerProperty.Interface; | 
						|
using KGIS.Plugin.LayerProperty.Utils; | 
						|
using System; | 
						|
using System.Collections; | 
						|
using System.Collections.Generic; | 
						|
using System.ComponentModel; | 
						|
using System.Data; | 
						|
using System.Drawing; | 
						|
using System.Linq; | 
						|
using System.Runtime.InteropServices; | 
						|
using System.Text; | 
						|
using System.Threading.Tasks; | 
						|
using System.Windows.Forms; | 
						|
 | 
						|
namespace KGIS.Plugin.LayerProperty.View.UC_Controls | 
						|
{ | 
						|
    public partial class UCUniqueValueManyFieldsRenderer : XtraUserControl, IUCPropertyPageEx, IPropertyPage | 
						|
    { | 
						|
        private const string CONST_SYMBOL = "F_Symbol"; | 
						|
        private const string CONST_VALUE = "F_Value"; | 
						|
        private const string CONST_LABEL = "F_Label"; | 
						|
        private const string CONST_BITMAP = "F_BITMAP"; | 
						|
        private DataTable m_SymbolTable; | 
						|
        private IUniqueValueRenderer m_LyrRender; | 
						|
        private ISymbol m_SelectedSymbol; | 
						|
        private DataRow m_SelectedRow; | 
						|
        private IStyleGalleryClass m_SymbologyStyleClass; | 
						|
        private ISymbol m_DefaultSymbol; | 
						|
        private IRotationRenderer mRotationrenderer; | 
						|
        private IColorRamp m_ColorRamp; | 
						|
        private IFeatureRenderer m_CurFeatureRenderer; | 
						|
        private esriGeometryType GeometryType; | 
						|
        private IFeatureLayer2 m_MatchLayer; | 
						|
        private FormPointRatation frmPointRatation; | 
						|
        private string m_ValueField = ""; | 
						|
        private FormAddValue frmAddRendValue; | 
						|
        private bool isDirty; | 
						|
        public event System.EventHandler EditorChanged; | 
						|
        public bool IsPageDirty | 
						|
        { | 
						|
            get | 
						|
            { | 
						|
                return this.isDirty; | 
						|
            } | 
						|
            set | 
						|
            { | 
						|
                this.isDirty = 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 UCUniqueValueManyFieldsRenderer() | 
						|
        { | 
						|
            InitializeComponent(); | 
						|
        } | 
						|
        public void InitUC(object layerProperty) | 
						|
        { | 
						|
            try | 
						|
            { | 
						|
                this.m_MatchLayer = (layerProperty as IFeatureLayer2); | 
						|
                if (this.m_MatchLayer != null) | 
						|
                { | 
						|
                    this.btnRotateSet.Enabled = false; | 
						|
                    this.GeometryType = this.m_MatchLayer.ShapeType; | 
						|
                    switch (this.GeometryType) | 
						|
                    { | 
						|
                        case esriGeometryType.esriGeometryPoint: | 
						|
                            this.m_SymbologyStyleClass = new MarkerSymbolStyleGalleryClassClass(); | 
						|
                            this.btnRotateSet.Enabled = true; | 
						|
                            break; | 
						|
                        case esriGeometryType.esriGeometryPolyline: | 
						|
                            this.m_SymbologyStyleClass = new LineSymbolStyleGalleryClassClass(); | 
						|
                            break; | 
						|
                        case esriGeometryType.esriGeometryPolygon: | 
						|
                            this.m_SymbologyStyleClass = new FillSymbolStyleGalleryClassClass(); | 
						|
                            break; | 
						|
                    } | 
						|
                    this.InitSymbolTable(); | 
						|
                    this.BindGrid(); | 
						|
                    this.m_CurFeatureRenderer = (layerProperty as IGeoFeatureLayer).Renderer; | 
						|
                    this.m_LyrRender = (this.m_CurFeatureRenderer as IUniqueValueRenderer); | 
						|
                    if (this.m_LyrRender == null) | 
						|
                    { | 
						|
                        this.m_LyrRender = new UniqueValueRendererClass(); | 
						|
                        this.InitDefaultRender(); | 
						|
                        this.ucCRColors.InitColorRamp(this.m_LyrRender.ColorScheme); | 
						|
                        try | 
						|
                        { | 
						|
                            this.m_ValueField = this.m_MatchLayer.FeatureClass.Fields.get_Field(0).Name; | 
						|
                            Utils.Util.InitFieldList(ref this.cmbValueField1, this.m_MatchLayer.FeatureClass.Fields, this.m_ValueField, false, false, true, false); | 
						|
                            Utils.Util.InitFieldList(ref this.cmbValueField2, this.m_MatchLayer.FeatureClass.Fields, "<none>", true, false, true, false); | 
						|
                            Utils.Util.InitFieldList(ref this.cmbValueField3, this.m_MatchLayer.FeatureClass.Fields, "<none>", true, false, true, false); | 
						|
                            goto IL_1BE; | 
						|
                        } | 
						|
                        catch | 
						|
                        { | 
						|
                            goto IL_1BE; | 
						|
                        } | 
						|
                    } | 
						|
                    this.ucCRColors.InitColorRamp(this.m_LyrRender.ColorScheme); | 
						|
                    this.m_DefaultSymbol = this.m_LyrRender.DefaultSymbol; | 
						|
                    this.chkUseDefaultSymbol.Checked = this.m_LyrRender.UseDefaultSymbol; | 
						|
                    this.LoadDefaultRender(); | 
						|
                IL_1BE: | 
						|
                    this.RefreshDefaultSymbol(); | 
						|
                } | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                //RdbUtil.AddException(ex); | 
						|
            } | 
						|
        } | 
						|
        public void Write2Prop() | 
						|
        { | 
						|
            try | 
						|
            { | 
						|
                (this.m_MatchLayer as IGeoFeatureLayer).Renderer = this.m_CurFeatureRenderer; | 
						|
                this.isDirty = false; | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                //RdbUtil.AddException(ex); | 
						|
            } | 
						|
        } | 
						|
        public bool CanWrite2Prop() | 
						|
        { | 
						|
            this.SetUniqeRender(); | 
						|
            return this.m_CurFeatureRenderer != null && this.isDirty; | 
						|
        } | 
						|
        public void SetDefaultValue(object value) | 
						|
        { | 
						|
            this.m_LyrRender = (value as IUniqueValueRenderer); | 
						|
            this.InitSymbolTable(); | 
						|
            this.BindGrid(); | 
						|
            this.LoadDefaultRender(); | 
						|
            this.InvokeEditValueChanged(this, null); | 
						|
        } | 
						|
        private void InvokeEditValueChanged(object sender, System.EventArgs e) | 
						|
        { | 
						|
            if (this.EditorChanged != null) | 
						|
            { | 
						|
                this.EditorChanged(sender, e); | 
						|
            } | 
						|
            this.isDirty = true; | 
						|
        } | 
						|
        private void InitSymbolTable() | 
						|
        { | 
						|
            this.m_SymbolTable = new DataTable(); | 
						|
            DataColumn dataColumn = new DataColumn(); | 
						|
            dataColumn.DataType = Type.GetType("System.Object"); | 
						|
            dataColumn.ColumnName = "F_BITMAP"; | 
						|
            dataColumn.Caption = "F_BITMAP"; | 
						|
            this.m_SymbolTable.Columns.Add(dataColumn); | 
						|
            dataColumn = new DataColumn(); | 
						|
            dataColumn.DataType = Type.GetType("System.String"); | 
						|
            dataColumn.ColumnName = "F_Value"; | 
						|
            dataColumn.Caption = "F_Value"; | 
						|
            this.m_SymbolTable.Columns.Add(dataColumn); | 
						|
            dataColumn = new DataColumn(); | 
						|
            dataColumn.DataType = Type.GetType("System.String"); | 
						|
            dataColumn.ColumnName = "F_Label"; | 
						|
            dataColumn.Caption = "F_Label"; | 
						|
            this.m_SymbolTable.Columns.Add(dataColumn); | 
						|
            dataColumn = new DataColumn(); | 
						|
            dataColumn.DataType = Type.GetType("System.Object"); | 
						|
            dataColumn.ColumnName = "F_Symbol"; | 
						|
            dataColumn.Caption = "F_Symbol"; | 
						|
            this.m_SymbolTable.Columns.Add(dataColumn); | 
						|
        } | 
						|
        private void BindGrid() | 
						|
        { | 
						|
            this.gridSymCtrl.BeginInit(); | 
						|
            this.gridSymCtrl.DataSource = this.m_SymbolTable; | 
						|
            this.grdSymbol.FieldName = "F_BITMAP"; | 
						|
            this.grdSymbolVal.FieldName = "F_Value"; | 
						|
            this.grdLabel.FieldName = "F_Label"; | 
						|
            this.gridSymCtrl.EndInit(); | 
						|
        } | 
						|
        private void InitDefaultRender() | 
						|
        { | 
						|
            this.m_DefaultSymbol = RenderUtil.GetDefaultSymbol(this.m_MatchLayer.FeatureClass.ShapeType); | 
						|
        } | 
						|
        private void LoadDefaultRender() | 
						|
        { | 
						|
            try | 
						|
            { | 
						|
                try | 
						|
                { | 
						|
                    this.m_ValueField = this.m_LyrRender.get_Field(0); | 
						|
                    Utils.Util.InitFieldList(ref this.cmbValueField1, this.m_MatchLayer.FeatureClass.Fields, this.m_ValueField, false, false, true, false); | 
						|
                    Utils.Util.InitFieldList(ref this.cmbValueField2, this.m_MatchLayer.FeatureClass.Fields, "<none>", true, false, true, false); | 
						|
                    Utils.Util.InitFieldList(ref this.cmbValueField3, this.m_MatchLayer.FeatureClass.Fields, "<none>", true, false, true, false); | 
						|
                    if (this.m_LyrRender.FieldCount > 1) | 
						|
                    { | 
						|
                        Utils.Util.InitFieldList(ref this.cmbValueField2, this.m_MatchLayer.FeatureClass.Fields, this.m_LyrRender.get_Field(1), true, false, true, false); | 
						|
                    } | 
						|
                    if (this.m_LyrRender.FieldCount == 3) | 
						|
                    { | 
						|
                        Utils.Util.InitFieldList(ref this.cmbValueField3, this.m_MatchLayer.FeatureClass.Fields, this.m_LyrRender.get_Field(2), true, false, true, false); | 
						|
                    } | 
						|
                } | 
						|
                catch | 
						|
                { | 
						|
                } | 
						|
                this.m_DefaultSymbol = this.m_LyrRender.DefaultSymbol; | 
						|
                this.RefreshDefaultSymbol(); | 
						|
                RenderUtil.SetUniqueValuesToTable(this.m_LyrRender, this.m_SymbologyStyleClass, this.m_SymbolTable); | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                //RdbUtil.AddException(ex); | 
						|
            } | 
						|
        } | 
						|
        private void InitRowData(Bitmap bp, string uValue, string uLabel, ISymbol symbol, ref DataRow pRow) | 
						|
        { | 
						|
            pRow["F_BITMAP"] = bp; | 
						|
            pRow["F_Value"] = uValue; | 
						|
            pRow["F_Label"] = uLabel; | 
						|
            pRow["F_Symbol"] = symbol; | 
						|
        } | 
						|
        private ISymbol GetSymbol(IColor pColor) | 
						|
        { | 
						|
            ISymbol symbol = null; | 
						|
            if (this.m_DefaultSymbol != null) | 
						|
            { | 
						|
                IClone clone = this.m_DefaultSymbol as IClone; | 
						|
                symbol = (clone.Clone() as ISymbol); | 
						|
            } | 
						|
            try | 
						|
            { | 
						|
                esriGeometryType geometryType = this.GeometryType; | 
						|
                switch (geometryType) | 
						|
                { | 
						|
                    case esriGeometryType.esriGeometryPoint: | 
						|
                        { | 
						|
                            if (symbol == null) | 
						|
                            { | 
						|
                                symbol = (new SimpleMarkerSymbolClass | 
						|
                                { | 
						|
                                    Color = pColor | 
						|
                                } as ISymbol); | 
						|
                                goto IL_F1; | 
						|
                            } | 
						|
                            IMarkerSymbol markerSymbol = symbol as IMarkerSymbol; | 
						|
                            if (markerSymbol == null) | 
						|
                            { | 
						|
                                ISymbol result = symbol; | 
						|
                                return result; | 
						|
                            } | 
						|
                            markerSymbol.Color = pColor; | 
						|
                            goto IL_F1; | 
						|
                        } | 
						|
                    case esriGeometryType.esriGeometryMultipoint: | 
						|
                        goto IL_F1; | 
						|
                    case esriGeometryType.esriGeometryPolyline: | 
						|
                        break; | 
						|
                    case esriGeometryType.esriGeometryPolygon: | 
						|
                        { | 
						|
                            if (symbol == null) | 
						|
                            { | 
						|
                                symbol = (new SimpleFillSymbolClass | 
						|
                                { | 
						|
                                    Color = pColor | 
						|
                                } as ISymbol); | 
						|
                                goto IL_F1; | 
						|
                            } | 
						|
                            IFillSymbol fillSymbol = symbol as IFillSymbol; | 
						|
                            if (fillSymbol == null) | 
						|
                            { | 
						|
                                ISymbol result = symbol; | 
						|
                                return result; | 
						|
                            } | 
						|
                            fillSymbol.Color = pColor; | 
						|
                            goto IL_F1; | 
						|
                        } | 
						|
                    default: | 
						|
                        if (geometryType != esriGeometryType.esriGeometryLine) | 
						|
                        { | 
						|
                            goto IL_F1; | 
						|
                        } | 
						|
                        break; | 
						|
                } | 
						|
                if (symbol == null) | 
						|
                { | 
						|
                    symbol = (new SimpleLineSymbolClass | 
						|
                    { | 
						|
                        Color = pColor | 
						|
                    } as ISymbol); | 
						|
                } | 
						|
                else | 
						|
                { | 
						|
                    ILineSymbol lineSymbol = symbol as ILineSymbol; | 
						|
                    if (lineSymbol == null) | 
						|
                    { | 
						|
                        ISymbol result = symbol; | 
						|
                        return result; | 
						|
                    } | 
						|
                    lineSymbol.Color = pColor; | 
						|
                } | 
						|
            IL_F1:; | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                //RdbUtil.AddException(ex); | 
						|
            } | 
						|
            return symbol; | 
						|
        } | 
						|
        private void RefreshDefaultSymbol() | 
						|
        { | 
						|
            this.picDefaultSymbol.Image = RenderUtil.GetSymbolBitMap(this.picDefaultSymbol.Width - 1, this.picDefaultSymbol.Height - 1, this.m_SymbologyStyleClass, this.m_DefaultSymbol); | 
						|
        } | 
						|
        private void SetUniqeRender() | 
						|
        { | 
						|
            this.m_LyrRender.RemoveAllValues(); | 
						|
            if (this.m_MatchLayer.FeatureClass.ShapeType == esriGeometryType.esriGeometryPoint && this.mRotationrenderer != null) | 
						|
            { | 
						|
                this.m_LyrRender = (IUniqueValueRenderer)this.mRotationrenderer; | 
						|
            } | 
						|
            List<IField> selectedFields = this.GetSelectedFields(); | 
						|
            this.m_LyrRender.FieldCount = selectedFields.Count; | 
						|
            string text = ""; | 
						|
            for (int i = 0; i < selectedFields.Count; i++) | 
						|
            { | 
						|
                if (text == "") | 
						|
                { | 
						|
                    text = selectedFields[i].Name; | 
						|
                } | 
						|
                else | 
						|
                { | 
						|
                    text = text + "," + selectedFields[i].Name; | 
						|
                } | 
						|
                this.m_LyrRender.set_Field(i, selectedFields[i].Name); | 
						|
                this.m_LyrRender.set_FieldType(i, selectedFields[i].Type == esriFieldType.esriFieldTypeString); | 
						|
            } | 
						|
            if (this.chkUseDefaultSymbol.Checked) | 
						|
            { | 
						|
                this.m_LyrRender.DefaultSymbol = this.m_DefaultSymbol; | 
						|
                this.m_LyrRender.UseDefaultSymbol = this.chkUseDefaultSymbol.Checked; | 
						|
            } | 
						|
            else | 
						|
            { | 
						|
                this.m_LyrRender.DefaultSymbol = null; | 
						|
                this.m_LyrRender.UseDefaultSymbol = false; | 
						|
            } | 
						|
            RenderUtil.SetUniqueValuesFromTable(this.m_LyrRender, text, this.m_SymbolTable); | 
						|
            if (this.m_ColorRamp == null) | 
						|
            { | 
						|
                this.m_ColorRamp = this.ucCRColors.GetSelectColorRamp(); | 
						|
            } | 
						|
            if (this.m_ColorRamp != null) | 
						|
            { | 
						|
                this.m_LyrRender.ColorScheme = this.m_ColorRamp.Name; | 
						|
            } | 
						|
            this.m_CurFeatureRenderer = (this.m_LyrRender as IFeatureRenderer); | 
						|
        } | 
						|
        private List<IField> GetSelectedFields() | 
						|
        { | 
						|
            List<IField> list = new List<IField>(); | 
						|
            ItemInfo<IField, string> itemInfo = this.cmbValueField1.SelectedItem as ItemInfo<IField, string>; | 
						|
            ItemInfo<IField, string> itemInfo2 = this.cmbValueField2.SelectedItem as ItemInfo<IField, string>; | 
						|
            ItemInfo<IField, string> itemInfo3 = this.cmbValueField3.SelectedItem as ItemInfo<IField, string>; | 
						|
            if (itemInfo == null) | 
						|
            { | 
						|
                return list; | 
						|
            } | 
						|
            list.Add(itemInfo.InnerValue); | 
						|
            if (itemInfo2.InnerValue != null) | 
						|
            { | 
						|
                list.Add(itemInfo2.InnerValue); | 
						|
            } | 
						|
            if (itemInfo3.InnerValue != null) | 
						|
            { | 
						|
                list.Add(itemInfo3.InnerValue); | 
						|
            } | 
						|
            return list; | 
						|
        } | 
						|
        private void ControlsEnable(bool enable) | 
						|
        { | 
						|
            base.Enabled = enable; | 
						|
            this.btnAddVal.Enabled = enable; | 
						|
            this.btnDel.Enabled = enable; | 
						|
            this.btnDelAll.Enabled = enable; | 
						|
        } | 
						|
        private void btnAddAll_Click(object sender, System.EventArgs e) | 
						|
        { | 
						|
            try | 
						|
            { | 
						|
                this.ControlsEnable(false); | 
						|
                if (this.m_MatchLayer == null) | 
						|
                { | 
						|
                    return; | 
						|
                } | 
						|
                List<IField> selectedFields = this.GetSelectedFields(); | 
						|
                this.m_SymbolTable.Rows.Clear(); | 
						|
                string text = null; | 
						|
                IDisplayTable displayTable = (IDisplayTable)this.m_MatchLayer; | 
						|
                ICursor cursor = displayTable.DisplayTable.Search(null, false); | 
						|
                IEnumerator enumerator = null; | 
						|
                int num = 0; | 
						|
                if (selectedFields.Count > 1) | 
						|
                { | 
						|
                    IList uniqueValuesManyFields = Utils.Util.GetUniqueValuesManyFields(selectedFields, cursor); | 
						|
                    enumerator = uniqueValuesManyFields.GetEnumerator(); | 
						|
                    num = uniqueValuesManyFields.Count; | 
						|
                } | 
						|
                else | 
						|
                { | 
						|
                    IDataStatistics dataStatistics = new DataStatisticsClass(); | 
						|
                    dataStatistics.Cursor = cursor; | 
						|
                    dataStatistics.Field = selectedFields[0].Name; | 
						|
                    dataStatistics.SampleRate = 2000; | 
						|
                    enumerator = dataStatistics.UniqueValues; | 
						|
                    num = dataStatistics.UniqueValueCount; | 
						|
                } | 
						|
                Application.DoEvents(); | 
						|
                bool flag = false; | 
						|
                this.m_ColorRamp = this.ucCRColors.GetSelectColorRamp(); | 
						|
                bool flag2 = false; | 
						|
                bool flag3 = true; | 
						|
                int num2 = 0; | 
						|
                try | 
						|
                { | 
						|
                    this.m_ColorRamp.Size = num; | 
						|
                    Application.DoEvents(); | 
						|
                    if (num >= 500 && !flag) | 
						|
                    { | 
						|
                        if (MessageHelper.ShowYesNoAndTips("找到的唯一值个数大于500个,是否继续生成唯一值的完整列表?这会消耗较长时间。") == DialogResult.No) | 
						|
                        { | 
						|
                            flag3 = false; | 
						|
                            this.m_ColorRamp.Size = 500; | 
						|
                        } | 
						|
                        flag = true; | 
						|
                    } | 
						|
                    this.m_ColorRamp.CreateRamp(out flag2); | 
						|
                } | 
						|
                catch (Exception) | 
						|
                { | 
						|
                    this.ControlsEnable(true); | 
						|
                    return; | 
						|
                } | 
						|
                IColor color = null; | 
						|
                ISymbol symbol = null; | 
						|
                DataRow row = null; | 
						|
                enumerator.Reset(); | 
						|
                while (enumerator.MoveNext()) | 
						|
                { | 
						|
                    row = this.m_SymbolTable.NewRow(); | 
						|
                    try | 
						|
                    { | 
						|
                        text = Convert.ToString(enumerator.Current); | 
						|
                    } | 
						|
                    catch (Exception) | 
						|
                    { | 
						|
                    } | 
						|
                    try | 
						|
                    { | 
						|
                        color = this.m_ColorRamp.get_Color(num2); | 
						|
                    } | 
						|
                    catch (Exception) | 
						|
                    { | 
						|
                    } | 
						|
                    if (color != null) | 
						|
                    { | 
						|
                        symbol = this.GetSymbol(color); | 
						|
                    } | 
						|
                    if (symbol == null) | 
						|
                    { | 
						|
                        symbol = this.m_DefaultSymbol; | 
						|
                    } | 
						|
                    Bitmap symbolBitMap = RenderUtil.GetSymbolBitMap(40, 20, this.m_SymbologyStyleClass, symbol); | 
						|
                    this.InitRowData(symbolBitMap, text, text, symbol, ref row); | 
						|
                    this.m_SymbolTable.Rows.Add(row); | 
						|
                    if (num >= 500 && !flag) | 
						|
                    { | 
						|
                        if (MessageHelper.ShowYesNoAndTips("找到的唯一值个数大于500个,是否继续生成唯一值的完整列表?这会消耗较长时间。") == DialogResult.No) | 
						|
                        { | 
						|
                            flag3 = false; | 
						|
                        } | 
						|
                        flag = true; | 
						|
                    } | 
						|
                    if (!flag3 && num2 >= 500) | 
						|
                    { | 
						|
                        break; | 
						|
                    } | 
						|
                    num2++; | 
						|
                } | 
						|
                this.InvokeEditValueChanged(sender, e); | 
						|
                Marshal.ReleaseComObject(cursor); | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                //RdbUtil.AddException(ex); | 
						|
                MessageHelper.ShowError(ex.Message); | 
						|
            } | 
						|
            this.ControlsEnable(true); | 
						|
        } | 
						|
        private void btnDelAll_Click(object sender, System.EventArgs e) | 
						|
        { | 
						|
            this.m_SymbolTable.Rows.Clear(); | 
						|
            this.m_SymbolTable.AcceptChanges(); | 
						|
            this.InvokeEditValueChanged(sender, e); | 
						|
        } | 
						|
        private void btnDel_Click(object sender, System.EventArgs e) | 
						|
        { | 
						|
            if (this.m_SelectedRow == null) | 
						|
            { | 
						|
                return; | 
						|
            } | 
						|
            try | 
						|
            { | 
						|
                this.m_SymbolTable.Rows.Remove(this.m_SelectedRow); | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                //RdbUtil.AddException(ex); | 
						|
            } | 
						|
            this.InvokeEditValueChanged(sender, e); | 
						|
        } | 
						|
        private void gridSymView_MouseDown(object sender, MouseEventArgs e) | 
						|
        { | 
						|
            try | 
						|
            { | 
						|
                GridHitInfo gridHitInfo = this.gridSymView.CalcHitInfo(new System.Drawing.Point(e.X, e.Y)); | 
						|
                if (gridHitInfo.HitTest == GridHitTest.RowCell) | 
						|
                { | 
						|
                    this.m_SelectedRow = this.gridSymView.GetDataRow(gridHitInfo.RowHandle); | 
						|
                    this.m_SelectedSymbol = (this.m_SelectedRow["F_Symbol"] as ISymbol); | 
						|
                } | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                //RdbUtil.AddException(ex); | 
						|
            } | 
						|
        } | 
						|
        private void btnDefaultSymbol_Click(object sender, System.EventArgs e) | 
						|
        { | 
						|
            try | 
						|
            { | 
						|
                IDoStyleGalleryItem doStyleGalleryItem = RenderUtil.OpenStyleSelector(this.GeometryType); | 
						|
                if (doStyleGalleryItem != null) | 
						|
                { | 
						|
                    this.m_DefaultSymbol = (doStyleGalleryItem.Item.Item as ISymbol); | 
						|
                    this.RefreshDefaultSymbol(); | 
						|
                } | 
						|
                this.InvokeEditValueChanged(sender, e); | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                //RdbUtil.AddException(ex); | 
						|
            } | 
						|
        } | 
						|
        private void btnRotateSet_Click(object sender, System.EventArgs e) | 
						|
        { | 
						|
            try | 
						|
            { | 
						|
                IGeoFeatureLayer geoFeatureLayer = this.m_MatchLayer as IGeoFeatureLayer; | 
						|
                IFeatureRenderer renderer = geoFeatureLayer.Renderer; | 
						|
                if (this.frmPointRatation == null) | 
						|
                { | 
						|
                    this.frmPointRatation = new FormPointRatation(); | 
						|
                } | 
						|
                if (this.frmPointRatation.Init(this.m_MatchLayer, renderer)) | 
						|
                { | 
						|
                    if (this.frmPointRatation.ShowDialog() == DialogResult.OK) | 
						|
                    { | 
						|
                        this.mRotationrenderer = this.frmPointRatation.RotationRenderer; | 
						|
                    } | 
						|
                    this.InvokeEditValueChanged(sender, e); | 
						|
                    this.btnRotateSet.Focus(); | 
						|
                } | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                //RdbUtil.AddException(ex); | 
						|
            } | 
						|
        } | 
						|
        private void gridSymView_DoubleClick(object sender, System.EventArgs e) | 
						|
        { | 
						|
        } | 
						|
        private void gridSymCtrl_MouseDoubleClick(object sender, MouseEventArgs e) | 
						|
        { | 
						|
            try | 
						|
            { | 
						|
                if (this.m_SelectedSymbol != null) | 
						|
                { | 
						|
                    if (this.m_MatchLayer != null) | 
						|
                    { | 
						|
                        this.gridSymView.CalcHitInfo(System.Windows.Forms.Control.MousePosition); | 
						|
                        ISymbol symbol = this.m_SelectedSymbol; | 
						|
                        symbol = (RenderUtil.OpenStyleSelector(this.GeometryType, symbol) as ISymbol); | 
						|
                        if (symbol != null) | 
						|
                        { | 
						|
                            this.m_SelectedRow["F_BITMAP"] = RenderUtil.GetSymbolBitMap(40, 20, this.m_SymbologyStyleClass, symbol); | 
						|
                            this.m_SelectedRow["F_Symbol"] = symbol; | 
						|
                            this.m_SymbolTable.AcceptChanges(); | 
						|
                            this.InvokeEditValueChanged(sender, e); | 
						|
                        } | 
						|
                    } | 
						|
                } | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                //RdbUtil.AddException(ex); | 
						|
            } | 
						|
        } | 
						|
        private void cmbFields_EditValueChanged(object sender, System.EventArgs e) | 
						|
        { | 
						|
            try | 
						|
            { | 
						|
                this.m_SymbolTable.Rows.Clear(); | 
						|
                this.m_SymbolTable.AcceptChanges(); | 
						|
                this.InvokeEditValueChanged(sender, e); | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                //RdbUtil.AddException(ex); | 
						|
            } | 
						|
        } | 
						|
        private void ucCRColors_SelectIndexChanged(IColorRamp pColorRamp, string name) | 
						|
        { | 
						|
            try | 
						|
            { | 
						|
                this.m_ColorRamp = pColorRamp; | 
						|
                if (this.m_ColorRamp != null) | 
						|
                { | 
						|
                    bool flag = false; | 
						|
                    this.m_ColorRamp.Size = this.m_SymbolTable.Rows.Count; | 
						|
                    Application.DoEvents(); | 
						|
                    this.m_ColorRamp.CreateRamp(out flag); | 
						|
                    if (flag) | 
						|
                    { | 
						|
                        IColor color = null; | 
						|
                        ISymbol symbol = null; | 
						|
                        for (int i = 0; i < this.m_SymbolTable.Rows.Count; i++) | 
						|
                        { | 
						|
                            DataRow dataRow = this.m_SymbolTable.Rows[i]; | 
						|
                            try | 
						|
                            { | 
						|
                                color = this.m_ColorRamp.get_Color(i); | 
						|
                            } | 
						|
                            catch (Exception) | 
						|
                            { | 
						|
                            } | 
						|
                            if (color != null) | 
						|
                            { | 
						|
                                symbol = this.GetSymbol(color); | 
						|
                            } | 
						|
                            if (symbol == null) | 
						|
                            { | 
						|
                                symbol = this.m_DefaultSymbol; | 
						|
                            } | 
						|
                            Bitmap symbolBitMap = RenderUtil.GetSymbolBitMap(40, 20, this.m_SymbologyStyleClass, symbol); | 
						|
                            this.InitRowData(symbolBitMap, dataRow["F_Value"].ToString(), dataRow["F_Label"].ToString(), symbol, ref dataRow); | 
						|
                        } | 
						|
                        this.m_SymbolTable.AcceptChanges(); | 
						|
                        this.InvokeEditValueChanged(null, null); | 
						|
                    } | 
						|
                } | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                //RdbUtil.AddException(ex); | 
						|
            } | 
						|
        } | 
						|
        private void gridSymCtrl_MouseDown(object sender, MouseEventArgs e) | 
						|
        { | 
						|
        } | 
						|
        private void gridSymView_FocusedRowChanged(object sender, FocusedRowChangedEventArgs e) | 
						|
        { | 
						|
            try | 
						|
            { | 
						|
                this.m_SelectedRow = this.gridSymView.GetDataRow(e.FocusedRowHandle); | 
						|
                if (this.m_SelectedRow != null) | 
						|
                { | 
						|
                    this.btnDel.Enabled = true; | 
						|
                } | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                //RdbUtil.AddException(ex); | 
						|
            } | 
						|
        } | 
						|
        private void picDefaultSymbol_Click(object sender, System.EventArgs e) | 
						|
        { | 
						|
            try | 
						|
            { | 
						|
                this.Cursor = Cursors.WaitCursor; | 
						|
                this.m_DefaultSymbol = (RenderUtil.OpenStyleSelector(this.GeometryType, this.m_DefaultSymbol) as ISymbol); | 
						|
                if (this.m_DefaultSymbol == null) | 
						|
                { | 
						|
                    this.Cursor = Cursors.Default; | 
						|
                    return; | 
						|
                } | 
						|
                this.RefreshDefaultSymbol(); | 
						|
                this.InvokeEditValueChanged(sender, e); | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                //RdbUtil.AddException(ex); | 
						|
            } | 
						|
            this.Cursor = Cursors.Default; | 
						|
        } | 
						|
        private void cmbFields_SelectedIndexChanged(object sender, System.EventArgs e) | 
						|
        { | 
						|
            ItemInfo<IField, string> itemInfo = this.cmbValueField1.SelectedItem as ItemInfo<IField, string>; | 
						|
            if (itemInfo != null) | 
						|
            { | 
						|
                this.m_ValueField = itemInfo.InnerValue.Name; | 
						|
            } | 
						|
        } | 
						|
        public int Activate() | 
						|
        { | 
						|
            throw new Exception("The method or operation is not implemented."); | 
						|
        } | 
						|
        public 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."); | 
						|
        } | 
						|
        private void btnAddVal_Click(object sender, System.EventArgs e) | 
						|
        { | 
						|
            if (this.cmbValueField1.Text.Length == 0) | 
						|
            { | 
						|
                MessageHelper.ShowTips("未设置字段!"); | 
						|
                return; | 
						|
            } | 
						|
            if (this.m_DefaultSymbol == null) | 
						|
            { | 
						|
                MessageHelper.ShowTips("未设置缺省符号!"); | 
						|
                return; | 
						|
            } | 
						|
            string text = this.cmbValueField1.Text.ToString().Trim(); | 
						|
            IDisplayTable displayTable = (IDisplayTable)this.m_MatchLayer; | 
						|
            IFeatureClass featureClass = (IFeatureClass)displayTable.DisplayTable; | 
						|
 | 
						|
            //BUG12551 郑英杰 2018-09-26 | 
						|
            int i = featureClass.Fields.FindFieldByAliasName(text); | 
						|
            IField pField = featureClass.Fields.get_Field(i); | 
						|
 | 
						|
            ITable mTable = (ITable)featureClass; | 
						|
            if (this.frmAddRendValue == null) | 
						|
            { | 
						|
                this.frmAddRendValue = new FormAddValue(); | 
						|
            } | 
						|
            this.frmAddRendValue.listValue.Items.Clear(); | 
						|
            this.frmAddRendValue.mFieldName = text; | 
						|
            this.frmAddRendValue.mTable = mTable; | 
						|
            this.frmAddRendValue.mFeatrueLayer = this.m_MatchLayer; | 
						|
            ICursor cursor = this.m_MatchLayer.Search(null, false) as ICursor; | 
						|
            IDataStatistics dataStatistics = new DataStatisticsClass(); | 
						|
            dataStatistics.Cursor = cursor; | 
						|
            dataStatistics.Field = pField.Name; | 
						|
            dataStatistics.SampleRate = -1; | 
						|
            IEnumerator uniqueValues = dataStatistics.UniqueValues; | 
						|
            uniqueValues.Reset(); | 
						|
            while (uniqueValues.MoveNext()) | 
						|
            { | 
						|
                this.m_SymbolTable.NewRow(); | 
						|
                try | 
						|
                { | 
						|
                    string item = Convert.ToString(uniqueValues.Current); | 
						|
                    this.frmAddRendValue.listValue.Items.Add(item); | 
						|
                } | 
						|
                catch (Exception) | 
						|
                { | 
						|
                } | 
						|
            } | 
						|
            this.frmAddRendValue.SetValues(dataStatistics.UniqueValueCount); | 
						|
            if (this.frmAddRendValue.ShowDialog() == DialogResult.OK) | 
						|
            { | 
						|
                string mFieldValue = this.frmAddRendValue.mFieldValue; | 
						|
                DataRow[] array = this.m_SymbolTable.Select("F_Value = '" + mFieldValue + "'"); | 
						|
                if (array.Length != 0) | 
						|
                { | 
						|
                    MessageHelper.ShowTips("添加的属性值 " + mFieldValue + "已经存在"); | 
						|
                    return; | 
						|
                } | 
						|
                DataRow row = this.m_SymbolTable.NewRow(); | 
						|
                ISymbol symbol = null; | 
						|
                if (this.m_DefaultSymbol != null) | 
						|
                { | 
						|
                    IClone clone = this.m_DefaultSymbol as IClone; | 
						|
                    symbol = (clone.Clone() as ISymbol); | 
						|
                } | 
						|
                Bitmap symbolBitMap = RenderUtil.GetSymbolBitMap(40, 20, this.m_SymbologyStyleClass, symbol); | 
						|
                this.InitRowData(symbolBitMap, mFieldValue, mFieldValue, symbol, ref row); | 
						|
                this.m_SymbolTable.Rows.Add(row); | 
						|
                this.InvokeEditValueChanged(sender, e); | 
						|
            } | 
						|
        } | 
						|
    } | 
						|
}
 | 
						|
 |