Esempio n. 1
0
        public DataViewerViewModel(GisEditorWpfMap map, IEnumerable <FeatureLayer> availableLayers, FeatureLayer selectedLayer, bool showSelectedFeatures, bool allowEdit, IDictionary <FeatureLayer, Collection <string> > linkColumnNames)
        {
            enableColumnVirtualization = true;
            this.map                  = map;
            CurrentDataTable          = new DataTable();
            queryConditions           = new Collection <QueryConditionViewModel>();
            editDataChanges           = new ObservableCollection <EditDataChange>();
            HightLightRowColor        = DataViewerHelper.GetHightlightLayerColor();
            this.showSelectedFeatures = showSelectedFeatures;
            changedLayers             = new Collection <FeatureLayer>();
            AllowEdit                 = allowEdit;
            if (availableLayers != null && availableLayers.Count() > 0)
            {
                allLayerAdapters = new ObservableCollection <FeatureLayerAdapter>();

                foreach (var item in availableLayers)
                {
                    Collection <string> tempUriColumnNames = new Collection <string>();
                    if (linkColumnNames.ContainsKey(item))
                    {
                        tempUriColumnNames = linkColumnNames[item];
                    }
                    FeatureLayerPlugin featureLayerPlugin = GisEditor.LayerManager.GetLayerPlugins(item.GetType()).OfType <FeatureLayerPlugin>().FirstOrDefault();
                    if (featureLayerPlugin != null)
                    {
                        bool isEfficient = featureLayerPlugin.CanPageFeaturesEfficiently;
                        if (isEfficient)
                        {
                            PagedFeatureLayerAdapter shapeFileFeatureLayerDataAdapter = new PagedFeatureLayerAdapter(item, tempUriColumnNames);
                            shapeFileFeatureLayerDataAdapter.IsLinkDataSourceEnabled = !allowEdit;
                            shapeFileFeatureLayerDataAdapter.LoadingData            += new EventHandler <ProgressChangedEventArgs>(shapeFileFeatureLayerDataAdapter_LoadingData);
                            allLayerAdapters.Add(shapeFileFeatureLayerDataAdapter);
                        }
                        else
                        {
                            FeatureLayerAdapter featureLayerAdapter = new FeatureLayerAdapter(item, tempUriColumnNames);
                            allLayerAdapters.Add(featureLayerAdapter);
                        }
                    }
                }
                if (selectedLayer != null && availableLayers.Contains(selectedLayer))
                {
                    SelectedLayerAdapter = allLayerAdapters.Where(adapter => adapter.FeatureLayer == selectedLayer).FirstOrDefault();
                }
                else if (availableLayers.Contains(map.ActiveLayer))
                {
                    SelectedLayerAdapter = allLayerAdapters.Where(adapter => adapter.FeatureLayer == map.ActiveLayer).FirstOrDefault();
                }
                else
                {
                    SelectedLayerAdapter = allLayerAdapters.FirstOrDefault();
                }
            }
        }