private void RestoreSnapshot(AnnotationSnapshot snapshot) { CurrentAnnotationOverlay.TrackShapeLayer.InternalFeatures.Clear(); CurrentAnnotationOverlay.TrackShapeLayer.FeatureIdsToExclude.Clear(); CurrentEditOverlay.EditShapesLayer.InternalFeatures.Clear(); if (MarkerHelper.CurrentMarkerOverlay != null) { MarkerHelper.CurrentMarkerOverlay.Markers.Clear(); } foreach (var feature in snapshot.AnnotationFeatures) { CurrentAnnotationOverlay.TrackShapeLayer.InternalFeatures.Add(feature.Id, feature.CloneDeep(ReturningColumnsType.AllColumns)); } foreach (var featureId in snapshot.FeatureIdsToExclude) { CurrentAnnotationOverlay.TrackShapeLayer.FeatureIdsToExclude.Add(featureId); } foreach (var feature in snapshot.EditingVectorFeatures) { CurrentEditOverlay.EditShapesLayer.InternalFeatures.Add(feature); } foreach (var markerFeature in snapshot.EditingMarkerFeatures) { MarkerHelper.AddMarker((PointShape)markerFeature.GetShape() , markerFeature.ColumnValues[AnnotationTrackInteractiveOverlay.AnnotationTextColumnName] , markerFeature.Id , markerFeature.ColumnValues[AnnotationTrackInteractiveOverlay.ValueStyleMatchColumnName]); } if (CurrentAnnotationOverlay.MapArguments != null) { CurrentAnnotationOverlay.Refresh(); } CurrentEditOverlay.CalculateAllControlPoints(); if (CurrentEditOverlay.MapArguments != null) { CurrentEditOverlay.Refresh(); } if (MarkerHelper.CurrentMarkerOverlay != null) { MarkerHelper.CurrentMarkerOverlay.Refresh(); } RaisePropertyChanged(() => CanUndo); RaisePropertyChanged(() => CanRedo); }
private AnnotationSnapshot GetCurrentSnapshot() { AnnotationSnapshot snapshot = new AnnotationSnapshot(); foreach (var feature in CurrentAnnotationOverlay.TrackShapeLayer.InternalFeatures) { snapshot.AnnotationFeatures.Add(feature.CloneDeep(ReturningColumnsType.AllColumns)); } foreach (var featureId in CurrentAnnotationOverlay.TrackShapeLayer.FeatureIdsToExclude) { snapshot.FeatureIdsToExclude.Add(featureId); } foreach (var feature in CurrentEditOverlay.EditShapesLayer.InternalFeatures) { snapshot.EditingVectorFeatures.Add(feature.CloneDeep(ReturningColumnsType.AllColumns)); } if (MarkerHelper.CurrentMarkerOverlay != null) { foreach (var marker in MarkerHelper.CurrentMarkerOverlay.Markers) { string featureId = marker.Tag as string; string content = String.Empty; if (marker.Content != null && marker.Content is TextBox) { content = ((TextBox)marker.Content).Text; } PointShape position = new PointShape(marker.Position.X, marker.Position.Y); var vectorFeature = CurrentAnnotationOverlay.TrackShapeLayer.InternalFeatures .FirstOrDefault(tmpFeature => tmpFeature.Id.Equals(featureId, StringComparison.Ordinal)); if (vectorFeature != default(Feature)) { Dictionary <string, string> columnValues = new Dictionary <string, string>(); columnValues.Add(AnnotationTrackInteractiveOverlay.ValueStyleMatchColumnName , vectorFeature.ColumnValues[AnnotationTrackInteractiveOverlay.ValueStyleMatchColumnName]); columnValues.Add(AnnotationTrackInteractiveOverlay.AnnotationTextColumnName, content); Feature markerFeature = new Feature(position.GetWellKnownBinary(), featureId, columnValues); snapshot.EditingMarkerFeatures.Add(markerFeature); } } } return(snapshot); }