public override object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            Collection <FeatureLayer> areaLayers = value as Collection <FeatureLayer>;

            if (areaLayers == null)
            {
                throw new ArgumentException("The parameter \"value\" is not valid.");
            }
            else
            {
                entities        = areaLayers.Select(layer => new SelectColumnsEntity(layer.Name, GetColumns(layer))).ToList();
                allLayersEntity = new SelectColumnsEntity("All Layers");
                var allColumns = new Collection <FeatureSourceColumnDefinition>();
                entities.ForEach(ent =>
                {
                    foreach (var column in ent.Columns)
                    {
                        allColumns.Add(column);
                    }
                    ent.Columns.CollectionChanged += Columns_CollectionChanged;
                });

                foreach (var item in FeatureSourceColumnDefinition.GetFixedColumnDefinitions(allColumns))
                {
                    allLayersEntity.Columns.Add(item);
                }
                allLayersEntity.Columns.CollectionChanged += AllColumns_CollectionChanged;
                entities.Insert(0, allLayersEntity);

                return(entities);
            }
        }
 private void LeftToRight_Click(object sender, RoutedEventArgs e)
 {
     if (selectedAvaliableColumns.Count > 0)
     {
         foreach (FeatureSourceColumnDefinition column in selectedAvaliableColumns.ToArray())
         {
             if (!entity.IncludedColumns.Any(c => c.OriginalName.Equals(column.OriginalName)))
             {
                 entity.IncludedColumns.Add(column);
                 entity.LayerColumnPair[entity.SelectedLayerForColumns].Remove(column);
                 if (column.IsDuplicate)
                 {
                     foreach (var keyValue in entity.LayerColumnPair.Where(l => l.Key.Name != "All Layers"))
                     {
                         FeatureSourceColumnDefinition match = keyValue.Value.FirstOrDefault(c => c.OriginalName.Equals(column.OriginalName));
                         if (match != null)
                         {
                             keyValue.Value.Remove(match);
                         }
                     }
                 }
             }
         }
     }
 }
Пример #3
0
        private void MoveDown_Click(object sender, RoutedEventArgs e)
        {
            FeatureSourceColumnDefinition selectedColumn = (FeatureSourceColumnDefinition)RightList.SelectedItem;

            if (selectedColumn != null && selectedColumn != columnsToInclude.LastOrDefault())
            {
                int index = columnsToInclude.IndexOf(selectedColumn) + 1;
                columnsToInclude.Remove(selectedColumn);
                columnsToInclude.Insert(index, selectedColumn);
                RightList.SelectedIndex = index;
            }
        }
        private static ObservableCollection <FeatureSourceColumnDefinition> GetColumns(FeatureLayer layer)
        {
            ObservableCollection <FeatureSourceColumnDefinition> results = new ObservableCollection <FeatureSourceColumnDefinition>();

            layer.SafeProcess(() =>
            {
                foreach (var item in layer.FeatureSource.GetColumns())
                {
                    FeatureSourceColumnDefinition featureSourceColumnDefinition = new FeatureSourceColumnDefinition(item, layer);
                    string alias = layer.FeatureSource.GetColumnAlias(featureSourceColumnDefinition.ColumnName);
                    featureSourceColumnDefinition.AliasName = alias;

                    results.Add(featureSourceColumnDefinition);
                }
            });

            return(results);
        }
        private static void HandleCommonColumns(MergeWizardShareObject parameter, IEnumerable <FeatureSourceColumnDefinition> allColumns)
        {
            duplicateColumnsDictionary = new Dictionary <string, List <FeatureSourceColumnDefinition> >();

            foreach (var group in allColumns.GroupBy(c => c.OriginalName))
            {
                var groupColumns = group.ToList();
                if (groupColumns.Count > 1)
                {
                    List <FeatureSourceColumnDefinition> commonColumns = new List <FeatureSourceColumnDefinition>();
                    duplicateColumnsDictionary.Add(group.Key, commonColumns);
                    foreach (var item in group)
                    {
                        item.IsDuplicate = true;
                        commonColumns.Add(item);
                    }
                }
            }

            foreach (var pair in duplicateColumnsDictionary)
            {
                foreach (var item in pair.Value)
                {
                    if (parameter.LayerColumnPair.ContainsKey(item.FeatureLayer))
                    {
                        parameter.LayerColumnPair[item.FeatureLayer].Remove(item);
                    }
                }

                FeatureSourceColumnDefinition firstColumn = pair.Value.First();

                if (parameter.IncludedColumns.Count(c => c.OriginalName.Equals(firstColumn.OriginalName)) == 0)
                {
                    parameter.IncludedColumns.Add(firstColumn);
                }
            }
        }