private void OnEditLayerSelect(object arg) { if (arg == null) { // In case of templates, arg is null //currentEditLayer = this.SelectedEditLayer; } else { currentEditLayer = arg as EditLayerData; } if (currentEditLayer != null) HandleEditSelect(currentEditLayer); }
/// <summary> /// Subscription method to handle the map initialisation /// </summary> /// <param name="mapData"></param> public void OnMapChanged(MapData mapData) { try { if (mapData != null) { this.IsMapLoaded = true; this.RaisePropertyChanged(() => this.IsMapLoaded); gisEditing.GetEditorTool().EditCompleted += Editor_EditCompleted; // Initialise editable layers this.SubTypeVisibility = Visibility.Collapsed; this.TemplateVisibility = Visibility.Collapsed; this.SymbolMarkers = new ObservableCollection<SymbolMarkerInfo>(); foreach (var item in gisEditing.GetEditLayers()) { this.EditLayers.Add(item); switch (item.LayerGeometryType) { case ESRI.ArcGIS.Client.Tasks.GeometryType.MultiPoint: if (gisEditing.GetMarkerInfo(item.LayerName).FirstOrDefault(l => l.ObjectFeatureType != null) != null) { foreach (var item2 in gisEditing.GetMarkerInfo(item.LayerName)) this.SymbolMarkers.Add(item2); this.SubTypeVisibility = Visibility.Visible; } break; case ESRI.ArcGIS.Client.Tasks.GeometryType.Point: if (gisEditing.GetMarkerInfo(item.LayerName).FirstOrDefault(l => l.ObjectFeatureType != null) != null) { foreach (var item2 in gisEditing.GetMarkerInfo(item.LayerName)) this.SymbolMarkers.Add(item2); this.SubTypeVisibility = Visibility.Visible; } break; case ESRI.ArcGIS.Client.Tasks.GeometryType.Polygon: if (gisEditing.GetMarkerInfo(item.LayerName).FirstOrDefault(l => l.ObjectFeatureType != null) != null) { foreach (var item2 in gisEditing.GetMarkerInfo(item.LayerName)) this.SymbolMarkers.Add(item2); this.SubTypeVisibility = Visibility.Visible; } else { this.EditTemplates = gisEditing.GetTemplates(item.LayerName); if (this.EditTemplates.Count > 0) { this.TemplateVisibility = Visibility.Visible; } } break; case ESRI.ArcGIS.Client.Tasks.GeometryType.Polyline: if (gisEditing.GetMarkerInfo(item.LayerName).FirstOrDefault(l => l.ObjectFeatureType != null) != null) { foreach (var item2 in gisEditing.GetMarkerInfo(item.LayerName)) this.SymbolMarkers.Add(item2); this.SubTypeVisibility = Visibility.Visible; } break; default: break; } } EditVerticesParameter = new EditorParameterCommand(); AddGeometryParameter = new EditorParameterCommand(); MovePointParameter = new EditorParameterCommand() { Action = "Move" }; DeleteGeometryParameter = new EditorParameterCommand(); SelectParameter = new EditorParameterCommand() { SelectionMode = DrawMode.Rectangle }; this.SelectLayerList = (this.EditLayers.Count > 1 ? Visibility.Visible : Visibility.Collapsed); RaisePropertyChanged(() => this.EditLayers); RaisePropertyChanged(() => this.EditTemplates); if (this.EditLayers.Count > 0) { currentEditLayer = this.EditLayers[0]; this.SelectedEditLayer = this.EditLayers[0]; } // Define edit parameters this.RaisePropertyChanged(() => this.EditVerticesParameter); this.RaisePropertyChanged(() => this.AddGeometryParameter); this.RaisePropertyChanged(() => this.MovePointParameter); this.RaisePropertyChanged(() => this.DeleteGeometryParameter); this.RaisePropertyChanged(() => this.SelectParameter); this.SymbolSelected = new DelegateCommand<object>( this.OnSymbolSelected, this.CanSymbolSelected); // Initialisation EditGeometry editGeometry = new EditGeometry(gisOperations.GetMap()); editGeometry.GeometryEdit += EditGeometryEdited; RefreshButtonStatus(); SetCustomCommands(); } } catch (System.Exception ex) { // Error handling ShowErrorMessagebox.Raise(new Notification { Content = String.Format("OnMapChanged-{0}[{1}]", ex.Message, ex.StackTrace), Title = "System error" }); } }
private void HandleEditSelect(EditLayerData editSelect) { try { if (editSelect.LayerGeometryType != GeometryType.Point) { AddGeometryParameter.LayerId = editSelect.LayerName; this.RaisePropertyChanged(() => this.AddGeometryParameter); } if (editSelect.LayerGeometryType == GeometryType.Point) { MovePointParameter.LayerId = editSelect.LayerName; this.RaisePropertyChanged(() => this.MovePointParameter); } DeleteGeometryParameter.LayerId = editSelect.LayerName; this.RaisePropertyChanged(() => this.DeleteGeometryParameter); if (editSelect.LayerGeometryType != GeometryType.Point) EditVerticesParameter.LayerId = editSelect.LayerName; this.RaisePropertyChanged(() => this.EditVerticesParameter); SelectParameter.LayerId = editSelect.LayerName; this.RaisePropertyChanged(() => this.SelectParameter); DelegateCommand<object> delegateCommand = this._moveGeometryCommand as DelegateCommand<object>; delegateCommand.RaiseCanExecuteChanged(); } catch (Exception ex) { ShowErrorMessagebox.Raise(new Notification { Content = String.Format("HandleEditSelect-{0}[{1}]", ex.Message, ex.StackTrace), Title = "System error" }); } }