protected override void OnMouseLeftButtonDown(System.Windows.Input.MouseButtonEventArgs e) { base.OnMouseLeftButtonDown(e); if (mOccurrenceYPositions != null) { double mouseY = Math.Floor(e.GetPosition(this).Y); int closestOccurrenceIndex = GetIndexOfClosestOccurrence(mouseY); if (closestOccurrenceIndex >= 0) { SelectedOccurrence = new ViewModel.OccurrenceViewModel(mOccurrences[closestOccurrenceIndex], null); return; } } SelectedOccurrence = null; }
/// <summary> /// Handles finishing of match occurrence retrival. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void occurenceEvaluator_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { var searchHitAndOccurrences = (Tuple <Engine.Interfaces.ISearchHit, ReadOnlyCollection <IOccurrence> >)e.Result; var occurrences = searchHitAndOccurrences.Item2; if (occurrences != null) { // Create a list of occurrence view models from the gathered occurrences. Occurrences = occurrences.Select(occurrence => new OccurrenceViewModel(occurrence, searchHitAndOccurrences.Item1)).ToArray(); // Set the number of occurrences. NumberOfOccurrences = occurrences.Count; } else { Occurrences = new OccurrenceViewModel[] {}; NumberOfOccurrences = 0; } }
/// <summary> /// Jumps to next occurrence. /// </summary> internal void GotoNextOccurrence() { if (mOccurrences == null || mOccurrences.Count == 0) { return; } if (mCurrentOccurrenceIndex >= 0) { ++mCurrentOccurrenceIndex; if (mCurrentOccurrenceIndex >= mOccurrences.Count) { mCurrentOccurrenceIndex = 0; } } else { mCurrentOccurrenceIndex = 0; } mCurrentOccurrence = mOccurrences[mCurrentOccurrenceIndex]; OnPropertyChanged("CurrentOccurrence"); }
/// <summary> /// Jumps to previous occurrence. /// </summary> internal void GotoPreviousOccurrence() { if (mOccurrences == null || mOccurrences.Count == 0) { return; } if (mCurrentOccurrenceIndex >= 0) { --mCurrentOccurrenceIndex; if (mCurrentOccurrenceIndex < 0) { mCurrentOccurrenceIndex = mOccurrences.Count - 1; } } else { mCurrentOccurrenceIndex = mOccurrences.Count - 1; } mCurrentOccurrence = mOccurrences[mCurrentOccurrenceIndex]; OnPropertyChanged("CurrentOccurrence"); }
/// <summary> /// Handles the change of the Occurrences property. /// </summary> /// <param name="oldValue"></param> /// <param name="newValue"></param> protected virtual void OnSelectedOccurrenceChanged(ViewModel.OccurrenceViewModel oldValue, ViewModel.OccurrenceViewModel newValue) { RaiseSelectedOccurrenceChangedEvent(); }