Esempio n. 1
0
        public void StrRep()
        {
            DispatcherHelper.Initialize();
            var busyService     = Substitute.For <IBusyService>();
            var projectService  = Substitute.For <IProjectService>();
            var analysisService = Substitute.For <IAnalysisService>();

            var project = new CogProject(_spanFactory);

            project.Meanings.Add(new Meaning("gloss1", "cat1"));
            project.Varieties.Add(new Variety("variety1"));

            WordViewModel.Factory wordFactory = word => new WordViewModel(busyService, analysisService, word);
            WordListsVarietyMeaningViewModel.Factory varietyMeaningFactory = (v, meaning) => new WordListsVarietyMeaningViewModel(busyService, analysisService, wordFactory, v, meaning);

            projectService.Project.Returns(project);

            var variety = new WordListsVarietyViewModel(projectService, varietyMeaningFactory, project.Varieties[0]);
            WordListsVarietyMeaningViewModel varietyMeaning = variety.Meanings[0];

            Assert.That(varietyMeaning.Words, Is.Empty);
            Assert.That(varietyMeaning.StrRep, Is.Empty);

            project.Varieties[0].Words.Add(new Word("hɛ.loʊ", project.Meanings[0]));

            Assert.That(varietyMeaning.StrRep, Is.EqualTo("hɛ.loʊ"));
            Assert.That(varietyMeaning.Words.Select(w => w.StrRep), Is.EqualTo(new[] { "hɛ.loʊ" }));

            project.Varieties[0].Words.Add(new Word("gu.gəl", project.Meanings[0]));

            Assert.That(varietyMeaning.StrRep, Is.EqualTo("hɛ.loʊ,gu.gəl"));
            Assert.That(varietyMeaning.Words.Select(w => w.StrRep), Is.EqualTo(new[] { "hɛ.loʊ", "gu.gəl" }));

            varietyMeaning.StrRep = "hɛ.lp,gu.gəl";
            Assert.That(varietyMeaning.Words.Select(w => w.StrRep), Is.EqualTo(new[] { "hɛ.lp", "gu.gəl" }));

            varietyMeaning.StrRep = "hɛ.lp";
            Assert.That(varietyMeaning.Words.Select(w => w.StrRep), Is.EqualTo(new[] { "hɛ.lp" }));

            varietyMeaning.StrRep = "";
            Assert.That(varietyMeaning.Words, Is.Empty);

            varietyMeaning.StrRep = null;
            Assert.That(varietyMeaning.Words, Is.Empty);

            varietyMeaning.StrRep = " hɛ.lp,gu.gəl ,gu.fi ";
            Assert.That(varietyMeaning.Words.Select(w => w.StrRep), Is.EqualTo(new[] { "hɛ.lp", "gu.gəl", "gu.fi" }));
            Assert.That(varietyMeaning.StrRep, Is.EqualTo("hɛ.lp,gu.gəl,gu.fi"));

            varietyMeaning.StrRep = "hɛ.lp,gu.gəl,gu";
            Assert.That(varietyMeaning.Words.Select(w => w.StrRep), Is.EqualTo(new[] { "hɛ.lp", "gu.gəl", "gu" }));
        }
Esempio n. 2
0
        private void ViewModel_PropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            var vm = (WordListsViewModel)sender;

            switch (e.PropertyName)
            {
            case "Meanings":
                vm.Meanings.CollectionChanged += Meanings_CollectionChanged;
                break;

            case "Varieties":
                DispatcherHelper.CheckBeginInvokeOnUI(LoadCollectionView);
                break;

            case "SelectedVarietyMeaning":
                DispatcherHelper.CheckBeginInvokeOnUI(() =>
                {
                    if (_selectMonitor.Busy)
                    {
                        return;
                    }

                    using (_selectMonitor.Enter())
                    {
                        WordListsGrid.SelectedCellRanges.Clear();
                        if (vm.SelectedVarietyMeaning != null)
                        {
                            WordListsVarietyViewModel variety = vm.SelectedVarietyMeaning.Variety;
                            int itemIndex = WordListsGrid.Items.IndexOf(variety);
                            WordListsGrid.BringItemIntoView(variety);
                            WordListsGrid.Dispatcher.BeginInvoke(new Action(() =>
                            {
                                var row = (DataRow)WordListsGrid.GetContainerFromIndex(itemIndex);
                                if (row != null)
                                {
                                    Cell cell = row.Cells.Single(c => c.Content == vm.SelectedVarietyMeaning);
                                    WordListsGrid.SelectedCellRanges.Add(new SelectionCellRange(itemIndex, cell.ParentColumn.Index));
                                    WordListsGrid.CurrentItem   = variety;
                                    WordListsGrid.CurrentColumn = cell.ParentColumn;
                                    cell.BringIntoView();
                                }
                            }), DispatcherPriority.Background);
                        }
                    }
                });
                break;
            }
        }