public GlobalCorrespondencesViewModel(IProjectService projectService, IBusyService busyService, IDialogService dialogService, IImageExportService imageExportService, IGraphService graphService,
WordPairsViewModel.Factory wordPairsFactory, WordPairViewModel.Factory wordPairFactory)
: base("Global Correspondences")
{
_projectService = projectService;
_busyService = busyService;
_dialogService = dialogService;
_imageExportService = imageExportService;
_graphService = graphService;
_wordPairFactory = wordPairFactory;
_selectedVarieties = new HashSet<Variety>();
_projectService.ProjectOpened += _projectService_ProjectOpened;
Messenger.Default.Register<ComparisonPerformedMessage>(this, msg => GenerateGraph());
Messenger.Default.Register<DomainModelChangedMessage>(this, msg =>
{
if (msg.AffectsComparison)
ClearGraph();
});
Messenger.Default.Register<PerformingComparisonMessage>(this, msg => ClearGraph());
_findCommand = new RelayCommand(Find);
TaskAreas.Add(new TaskAreaCommandGroupViewModel("Syllable position",
new TaskAreaCommandViewModel("Onset", new RelayCommand(() => SyllablePosition = SyllablePosition.Onset)),
new TaskAreaCommandViewModel("Nucleus", new RelayCommand(() => SyllablePosition = SyllablePosition.Nucleus)),
new TaskAreaCommandViewModel("Coda", new RelayCommand(() => SyllablePosition = SyllablePosition.Coda))));
_correspondenceFilter = new TaskAreaIntegerViewModel("Frequency threshold");
_correspondenceFilter.PropertyChanging += _correspondenceFilter_PropertyChanging;
_correspondenceFilter.PropertyChanged += _correspondenceFilter_PropertyChanged;
TaskAreas.Add(_correspondenceFilter);
TaskAreas.Add(new TaskAreaItemsViewModel("Common tasks",
new TaskAreaCommandViewModel("Find words", _findCommand),
new TaskAreaItemsViewModel("Sort word pairs by", new TaskAreaCommandGroupViewModel(
new TaskAreaCommandViewModel("Gloss", new RelayCommand(() => _observedWordPairs.UpdateSort("Meaning.Gloss", ListSortDirection.Ascending))),
new TaskAreaCommandViewModel("Similarity", new RelayCommand(() => _observedWordPairs.UpdateSort("PhoneticSimilarityScore", ListSortDirection.Descending))))),
new TaskAreaCommandViewModel("Select varieties", new RelayCommand(SelectVarieties))
));
TaskAreas.Add(new TaskAreaItemsViewModel("Other tasks",
new TaskAreaCommandViewModel("Export chart", new RelayCommand(ExportChart, CanExportChart))));
_observedWordPairs = wordPairsFactory();
_observedWordPairs.IncludeVarietyNamesInSelectedText = true;
_observedWordPairs.UpdateSort("Meaning.Gloss", ListSortDirection.Ascending);
}