public GeographicalViewModel(IProjectService projectService, IDialogService dialogService, IImportService importService, IImageExportService imageExportService, GeographicalVarietyViewModel.Factory varietyFactory) : base("Geographical") { _projectService = projectService; _dialogService = dialogService; _importService = importService; _imageExportService = imageExportService; _varietyFactory = varietyFactory; _newRegionCommand = new RelayCommand<IEnumerable<Tuple<double, double>>>(AddNewRegion); _currentClusters = new List<Cluster<Variety>>(); _projectService.ProjectOpened += _projectService_ProjectOpened; Messenger.Default.Register<ComparisonPerformedMessage>(this, msg => ClusterVarieties()); Messenger.Default.Register<DomainModelChangedMessage>(this, msg => { if (msg.AffectsComparison) ResetClusters(); if (_selectedRegion != null && (!_varieties.Contains(_selectedRegion.Variety) || !_selectedRegion.Variety.Regions.Contains(_selectedRegion))) SelectedRegion = null; }); Messenger.Default.Register<PerformingComparisonMessage>(this, msg => ResetClusters()); _similarityScoreThreshold = 0.7; TaskAreas.Add(new TaskAreaCommandGroupViewModel("Similarity metric", new TaskAreaCommandViewModel("Lexical", new RelayCommand(() => SimilarityMetric = SimilarityMetric.Lexical)), new TaskAreaCommandViewModel("Phonetic", new RelayCommand(() => SimilarityMetric = SimilarityMetric.Phonetic)))); TaskAreas.Add(new TaskAreaItemsViewModel("Other tasks", new TaskAreaCommandViewModel("Import regions", new RelayCommand(ImportRegions)), new TaskAreaCommandViewModel("Export this map", new RelayCommand(Export)))); }
public GeographicalRegionViewModel(IProjectService projectService, IDialogService dialogService, GeographicalVarietyViewModel variety, GeographicRegion region) : base(region) { _projectService = projectService; _dialogService = dialogService; _variety = variety; _region = region; _coordinates = new BindableList <Tuple <double, double> >(_region.Coordinates.Select(coord => Tuple.Create(coord.Latitude, coord.Longitude))); _coordinates.CollectionChanged += CoordinatesChanged; _editCommand = new RelayCommand(EditRegion); _removeCommand = new RelayCommand(RemoveRegion); }
private void RegionsChanged(GeographicalVarietyViewModel variety) { if (variety.ClusterIndex == -1 || (variety.ClusterIndex != -1 && variety.Regions.Count == 0)) { if (_projectService.AreAllVarietiesCompared) { ClusterVarieties(); } else { ResetClusters(); } } }
private void RegionsChanged(GeographicalVarietyViewModel variety) { if (variety.ClusterIndex == -1 || (variety.ClusterIndex != -1 && variety.Regions.Count == 0)) { if (_projectService.AreAllVarietiesCompared) ClusterVarieties(); else ResetClusters(); } }
private void SetVarietyChecked(GeographicalVarietyViewModel variety, bool check) { var varietyItem = (TreeViewItem) RegionsTreeView.ItemContainerGenerator.ContainerFromItem(variety); CheckBox checkBox = varietyItem.FindVisualDescendants<CheckBox>().First(); checkBox.IsChecked = check; }
private void RegionsChanged(GeographicalVarietyViewModel variety, NotifyCollectionChangedEventArgs e) { switch (e.Action) { case NotifyCollectionChangedAction.Add: AddRegions(e.NewItems.Cast<GeographicalRegionViewModel>()); break; case NotifyCollectionChangedAction.Remove: RemoveRegions(e.OldItems.Cast<GeographicalRegionViewModel>()); break; case NotifyCollectionChangedAction.Replace: RemoveRegions(e.OldItems.Cast<GeographicalRegionViewModel>()); AddRegions(e.NewItems.Cast<GeographicalRegionViewModel>()); break; case NotifyCollectionChangedAction.Reset: foreach (RegionMarker rm in MapControl.Markers.OfType<RegionMarker>().Where(rm => rm.Region.Variety == variety).ToArray()) rm.Dispose(); AddRegions(variety.Regions); break; } if (variety.Regions.Count > 0) { int oldCount = variety.Regions.Count - (e.NewItems != null ? e.NewItems.Count : 0) + (e.OldItems != null ? e.OldItems.Count : 0); if (oldCount == 0) SetVarietyChecked(variety, true); } else { SetVarietyChecked(variety, false); } }