public VarietyPairsViewModel(IProjectService projectService, IBusyService busyService, IDialogService dialogService, IExportService exportService, IAnalysisService analysisService, VarietyPairViewModel.Factory varietyPairFactory) : base("Variety Pairs") { _projectService = projectService; _busyService = busyService; _dialogService = dialogService; _exportService = exportService; _analysisService = analysisService; _varietyPairFactory = varietyPairFactory; _projectService.ProjectOpened += _projectService_ProjectOpened; _sortPropertyName = "PhoneticSimilarityScore"; _sortDirection = ListSortDirection.Descending; Messenger.Default.Register <PerformingComparisonMessage>(this, msg => { if (msg.VarietyPair == null) { ClearComparison(); } }); Messenger.Default.Register <ComparisonPerformedMessage>(this, msg => { if (msg.VarietyPair == null) { SetSelectedVarietyPair(); } }); Messenger.Default.Register <DomainModelChangedMessage>(this, msg => { if (msg.AffectsComparison) { ClearComparison(); } }); Messenger.Default.Register <SwitchViewMessage>(this, HandleSwitchView); _findCommand = new RelayCommand(Find); _performComparisonCommand = new RelayCommand(PerformComparison); _selectedWordPairsMonitor = new SimpleMonitor(); _varietyPairState = VarietyPairState.NotSelected; TaskAreas.Add(new TaskAreaItemsViewModel("Common tasks", new TaskAreaCommandViewModel("Compare variety pair", new RelayCommand(PerformComparison, CanPerformComparison)), new TaskAreaCommandViewModel("Find words", _findCommand), new TaskAreaItemsViewModel("Sort word pairs by", new TaskAreaCommandGroupViewModel( new TaskAreaCommandViewModel("Similarity", new RelayCommand(() => SortWordPairsBy("PhoneticSimilarityScore", ListSortDirection.Descending))), new TaskAreaCommandViewModel("Gloss", new RelayCommand(() => SortWordPairsBy("Meaning.Gloss", ListSortDirection.Ascending))))))); TaskAreas.Add(new TaskAreaItemsViewModel("Other tasks", new TaskAreaCommandViewModel("Export results for variety pair", new RelayCommand(ExportVarietyPair, CanExportVarietyPair)))); }
private void SetSelectedVarietyPair() { if (_selectedVariety1 != null && _selectedVariety2 != null && _selectedVariety1 != _selectedVariety2) { VarietyPair pair; if (_selectedVariety1.DomainVariety.VarietyPairs.TryGet(_selectedVariety2.DomainVariety, out pair)) { _busyService.ShowBusyIndicatorUntilFinishDrawing(); SelectedVarietyPair = _varietyPairFactory(pair, _selectedVariety1.DomainVariety == pair.Variety1); VarietyPairState = VarietyPairState.SelectedAndCompared; } else { SelectedVarietyPair = null; VarietyPairState = VarietyPairState.SelectedAndNotCompared; } } else { SelectedVarietyPair = null; VarietyPairState = VarietyPairState.NotSelected; } }
public VarietyPairsViewModel(IProjectService projectService, IBusyService busyService, IDialogService dialogService, IExportService exportService, IAnalysisService analysisService, VarietyPairViewModel.Factory varietyPairFactory) : base("Variety Pairs") { _projectService = projectService; _busyService = busyService; _dialogService = dialogService; _exportService = exportService; _analysisService = analysisService; _varietyPairFactory = varietyPairFactory; _projectService.ProjectOpened += _projectService_ProjectOpened; _sortPropertyName = "PhoneticSimilarityScore"; _sortDirection = ListSortDirection.Descending; Messenger.Default.Register<ComparisonPerformedMessage>(this, msg => SetSelectedVarietyPair()); Messenger.Default.Register<DomainModelChangedMessage>(this, msg => { if (msg.AffectsComparison) ClearComparison(); }); Messenger.Default.Register<PerformingComparisonMessage>(this, msg => ClearComparison()); Messenger.Default.Register<SwitchViewMessage>(this, HandleSwitchView); _findCommand = new RelayCommand(Find); _selectedWordPairsMonitor = new SimpleMonitor(); _varietyPairState = VarietyPairState.NotSelected; TaskAreas.Add(new TaskAreaItemsViewModel("Common tasks", new TaskAreaCommandViewModel("Compare this variety pair", new RelayCommand(PerformComparison)), new TaskAreaCommandViewModel("Find words", _findCommand), new TaskAreaItemsViewModel("Sort word pairs by", new TaskAreaCommandGroupViewModel( new TaskAreaCommandViewModel("Similarity", new RelayCommand(() => SortWordPairsBy("PhoneticSimilarityScore", ListSortDirection.Descending))), new TaskAreaCommandViewModel("Gloss", new RelayCommand(() => SortWordPairsBy("Meaning.Gloss", ListSortDirection.Ascending))))))); TaskAreas.Add(new TaskAreaItemsViewModel("Other tasks", new TaskAreaCommandViewModel("Export results for this variety pair", new RelayCommand(ExportVarietyPair)))); }
private void SetSelectedVarietyPair() { if (_selectedVariety1 != null && _selectedVariety2 != null && _selectedVariety1 != _selectedVariety2) { VarietyPair pair; if (_selectedVariety1.DomainVariety.VarietyPairs.TryGetValue(_selectedVariety2.DomainVariety, out pair)) { _busyService.ShowBusyIndicatorUntilFinishDrawing(); SelectedVarietyPair = _varietyPairFactory(pair, _selectedVariety1.DomainVariety == pair.Variety1); VarietyPairState = VarietyPairState.SelectedAndCompared; } else { SelectedVarietyPair = null; VarietyPairState = VarietyPairState.SelectedAndNotCompared; } } else { SelectedVarietyPair = null; VarietyPairState = VarietyPairState.NotSelected; } }
private void PerformComparison() { if (_varietyPairState == VarietyPairState.NotSelected || _selectedVarietyPair != null) return; _busyService.ShowBusyIndicatorUntilFinishDrawing(); CogProject project = _projectService.Project; var pair = new VarietyPair(_selectedVariety1.DomainVariety, _selectedVariety2.DomainVariety); project.VarietyPairs.Add(pair); _analysisService.Compare(pair); SelectedVarietyPair = _varietyPairFactory(pair, true); VarietyPairState = VarietyPairState.SelectedAndCompared; }
private void HandleSwitchView(SwitchViewMessage msg) { if (msg.ViewModelType == GetType()) { _busyService.ShowBusyIndicatorUntilFinishDrawing(); var pair = (VarietyPair) msg.DomainModels[0]; SelectedVarietyPair = _varietyPairFactory(pair, true); Set(() => SelectedVariety1, ref _selectedVariety1, _varieties[pair.Variety1]); Set(() => SelectedVariety2, ref _selectedVariety2, _varieties[pair.Variety2]); VarietyPairState = pair.Variety1.VarietyPairs.Contains(pair.Variety2) ? VarietyPairState.SelectedAndCompared : VarietyPairState.SelectedAndNotCompared; if (msg.DomainModels.Count > 1) { var meaning = (Meaning) msg.DomainModels[1]; _selectedVarietyPair.Cognates.SelectedWordPairs.Clear(); _selectedVarietyPair.Cognates.SelectedWordPairs.AddRange(_selectedVarietyPair.Cognates.WordPairs.Where(wp => wp.Meaning.DomainMeaning == meaning)); _selectedVarietyPair.Noncognates.SelectedWordPairs.Clear(); _selectedVarietyPair.Noncognates.SelectedWordPairs.AddRange(_selectedVarietyPair.Noncognates.WordPairs.Where(wp => wp.Meaning.DomainMeaning == meaning)); } } }
private void ClearComparison() { ResetSelectedVarietyPair(); SelectedVarietyPair = null; if (VarietyPairState == VarietyPairState.SelectedAndCompared) VarietyPairState = VarietyPairState.SelectedAndNotCompared; }
private void PerformComparison() { CogProject project = _projectService.Project; VarietyPair pair; if (_selectedVarietyPair == null) { pair = new VarietyPair(_selectedVariety1.DomainVariety, _selectedVariety2.DomainVariety); project.VarietyPairs.Add(pair); } else { pair = _selectedVarietyPair.DomainVarietyPair; } _analysisService.Compare(pair); if (_selectedVarietyPair == null) SelectedVarietyPair = _varietyPairFactory(pair, true); VarietyPairState = VarietyPairState.SelectedAndCompared; }