Example #1
0
        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))));
        }
Example #2
0
        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);
        }
Example #3
0
 private void RegionsChanged(GeographicalVarietyViewModel variety)
 {
     if (variety.ClusterIndex == -1 || (variety.ClusterIndex != -1 && variety.Regions.Count == 0))
     {
         if (_projectService.AreAllVarietiesCompared)
         {
             ClusterVarieties();
         }
         else
         {
             ResetClusters();
         }
     }
 }
Example #4
0
 private void RegionsChanged(GeographicalVarietyViewModel variety)
 {
     if (variety.ClusterIndex == -1 || (variety.ClusterIndex != -1 && variety.Regions.Count == 0))
     {
         if (_projectService.AreAllVarietiesCompared)
             ClusterVarieties();
         else
             ResetClusters();
     }
 }
Example #5
0
 private void SetVarietyChecked(GeographicalVarietyViewModel variety, bool check)
 {
     var varietyItem = (TreeViewItem) RegionsTreeView.ItemContainerGenerator.ContainerFromItem(variety);
     CheckBox checkBox = varietyItem.FindVisualDescendants<CheckBox>().First();
     checkBox.IsChecked = check;
 }
Example #6
0
        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);
            }
        }