// Here we need keep the FeatureSourceColumn.
        // It will be used in two places.
        // 1, used to export, it we need convert it into intermediate column and create it.
        // 2, used to create, the columns will be exactly column type.
        // so in the CreateFeatureLayer method, we need to first see if the column is IntermediateColumn
        // , if it is, we use it, or else use the one on the featuresource.
        public ConfigureFeatureLayerParameters(Uri layerUri, IEnumerable <FeatureSourceColumn> featureSourceColumns)
        {
            this.layerUri                        = layerUri;
            this.customData                      = new Dictionary <string, object>();
            this.memoColumnConvertMode           = MemoColumnConvertMode.None;
            this.longColumnTruncateMode          = LongColumnTruncateMode.None;
            this.proj4ProjectionParametersString = Proj4Projection.GetDecimalDegreesParametersString();

            this.addedFeatures   = new Collection <Feature>();
            this.updatedFeatures = new Dictionary <string, Feature>();
            this.deletedFeatures = new Collection <Feature>();
            this.addedColumns    = new Collection <FeatureSourceColumn>();
            this.updatedColumns  = new Dictionary <string, FeatureSourceColumn>();
            this.deletedColumns  = new Collection <FeatureSourceColumn>();
            foreach (var column in featureSourceColumns)
            {
                this.addedColumns.Add(column);
            }
        }
        protected override ConfigureFeatureLayerParameters GetCreateFeatureLayerParametersCore(IEnumerable <FeatureSourceColumn> columns)
        {
            MemoColumnConvertMode      memoColumnMode     = MemoColumnConvertMode.None;
            LongColumnTruncateMode     longColumnNameMode = LongColumnTruncateMode.None;
            List <FeatureSourceColumn> memoColumns        = columns.Where(c => c.TypeName.Equals("Memo", StringComparison.InvariantCultureIgnoreCase)).ToList();
            bool hasLongColumn         = columns.Any(c => c.ColumnName.Length > 10);
            bool isColumnCheckCanceled = false;

            if (memoColumns.Count > 0)
            {
                MemoColumnModeWarningWindow memoColumnModeWarningWindow = new MemoColumnModeWarningWindow(GisEditor.LanguageManager.GetStringResource("ExportToShapefileLongColumnNameWarningCaption"), "There're one or more memo type columns, which might not be supported by other products. Click 'Convert and Save' would convert memo type to character type, click 'Save' would keep memo types.");
                if (memoColumnModeWarningWindow.ShowDialog().GetValueOrDefault())
                {
                    memoColumnMode = memoColumnModeWarningWindow.MemoColumnMode;
                }
                else
                {
                    isColumnCheckCanceled = true;
                }
            }

            if (!isColumnCheckCanceled && hasLongColumn)
            {
                LongColumnNameWarningWindow longColumnNameWarningWindow = new LongColumnNameWarningWindow(GisEditor.LanguageManager.GetStringResource("ExportToShapefileLongColumnNameWarningCaption"), GisEditor.LanguageManager.GetStringResource("ExportToShapefileLongColumnNameWarning"));
                if (longColumnNameWarningWindow.ShowDialog().GetValueOrDefault())
                {
                    longColumnNameMode = longColumnNameWarningWindow.LongColumnNameMode;
                }
                else
                {
                    isColumnCheckCanceled = true;
                }
            }

            ConfigureFeatureLayerParameters configureFeatureLayerParameters = null;

            if (!isColumnCheckCanceled)
            {
                var outputWindow = GisEditor.ControlManager.GetUI <OutputWindow>();
                outputWindow.OutputMode            = OutputMode.ToFile;
                outputWindow.Extension             = ".shp";
                outputWindow.CustomData["Columns"] = new Collection <FeatureSourceColumn>(columns.ToList());
                if (longColumnNameMode == LongColumnTruncateMode.Truncate)
                {
                    outputWindow.CustomData["CustomizeColumnNames"] = true;
                }

                if (string.IsNullOrEmpty(OutputWindow.SavedProj4ProjectionParametersString))
                {
                    outputWindow.Proj4ProjectionParametersString = GisEditor.ActiveMap.DisplayProjectionParameters;
                }
                else
                {
                    outputWindow.Proj4ProjectionParametersString = OutputWindow.SavedProj4ProjectionParametersString;
                }
                if (outputWindow.ShowDialog().GetValueOrDefault())
                {
                    configureFeatureLayerParameters = new ConfigureFeatureLayerParameters(outputWindow.LayerUri);
                    configureFeatureLayerParameters.MemoColumnConvertMode  = memoColumnMode;
                    configureFeatureLayerParameters.LongColumnTruncateMode = longColumnNameMode;

                    configureFeatureLayerParameters.Proj4ProjectionParametersString = outputWindow.Proj4ProjectionParametersString;
                    OutputWindow.SavedProj4ProjectionParametersString = outputWindow.Proj4ProjectionParametersString;
                    foreach (var item in outputWindow.CustomData)
                    {
                        configureFeatureLayerParameters.CustomData[item.Key] = item.Value;
                    }
                }
            }

            return(configureFeatureLayerParameters);
        }
Esempio n. 3
0
 private void KeepMemoClick(object sender, RoutedEventArgs e)
 {
     memoColumnMode = MemoColumnConvertMode.None;
     DialogResult   = true;
 }
Esempio n. 4
0
 private void ConvertToCharacterClick(object sender, RoutedEventArgs e)
 {
     memoColumnMode = MemoColumnConvertMode.ToCharacter;
     DialogResult   = true;
 }