void CreateHighlightingManager() { highlightingManager = new HighlightingManager(searchResultModel, () => MessageTextGetters.Get(isRawMessagesMode), () => viewSize, highlightFilters, selectionManager, wordSelection, colorTheme, RegularExpressions.FCLRegexFactory.Instance); }
async void DoSearch(bool reverseDirection) { var controlsState = view.GetCheckableControlsState(); var uds = quickSearchPresenter.CurrentSuggestion?.Data as IUserDefinedSearch; if (uds == null) { uds = (quickSearchPresenter.CurrentSuggestion?.Data as IUserDefinedSearchHistoryEntry)?.UDS; } Search.Options coreOptions = new Search.Options(); coreOptions.Template = quickSearchPresenter.Text; coreOptions.WholeWord = (controlsState & ViewCheckableControl.WholeWord) != 0; coreOptions.ReverseSearch = (controlsState & ViewCheckableControl.SearchUp) != 0; if (reverseDirection) { coreOptions.ReverseSearch = !coreOptions.ReverseSearch; } coreOptions.Regexp = (controlsState & ViewCheckableControl.RegExp) != 0; coreOptions.MessageTextGetter = MessageTextGetters.Get(loadedMessagesPresenter.LogViewerPresenter.ShowRawMessages); if (loadedMessagesPresenter.LogViewerPresenter.FocusedMessage != null) { var focusedMsg = loadedMessagesPresenter.LogViewerPresenter.FocusedMessage; var targetSources = new List <ILogSource>(); var targetThreads = new List <IThread>(); if ((controlsState & ViewCheckableControl.SearchWithinThisThread) != 0) { targetThreads.Add(focusedMsg.Thread); } else if ((controlsState & ViewCheckableControl.SearchWithinCurrentLog) != 0) { targetSources.Add(focusedMsg.GetLogSource()); } if (targetSources.Count != 0 || targetThreads.Count != 0) { coreOptions.Scope = filtersFactory.CreateScope(targetSources, targetThreads); } } coreOptions.MatchCase = (controlsState & ViewCheckableControl.MatchCase) != 0; coreOptions.ContentTypes = checkListBoxAndFlags .Where(i => (controlsState & i.Key) != 0) .Aggregate(MessageFlag.None, (contentTypes, i) => contentTypes |= i.Value); IFiltersList filters; if (uds != null) { filters = uds.Filters; filters = filters.Clone(); // clone to prevent filters from changing during ongoing search if (coreOptions.Scope != FiltersFactory.DefaultScope) { foreach (var f in filters.Items) { var tmp = f.Options; tmp.Scope = coreOptions.Scope; f.Options = tmp; } } } else { filters = filtersFactory.CreateFiltersList(FilterAction.Exclude, FiltersListPurpose.Search); filters.Insert(0, filtersFactory.CreateFilter(FilterAction.Include, "", true, coreOptions)); } var searchHistoryEntry = uds != null ? (ISearchHistoryEntry) new UserDefinedSearchHistoryEntry(uds) : new SearchHistoryEntry(coreOptions); if ((controlsState & ViewCheckableControl.SearchAllOccurences) != 0) { var searchOptions = new SearchAllOptions() { SearchInRawText = loadedMessagesPresenter.LogViewerPresenter.ShowRawMessages, Filters = filters }; if (uds != null) { searchOptions.SearchName = uds.Name; } if ((controlsState & ViewCheckableControl.SearchFromCurrentPosition) != 0) { searchOptions.StartPositions = await loadedMessagesPresenter.GetCurrentLogPositions( CancellationToken.None); } searchManager.SubmitSearch(searchOptions); ShowSearchResultPanel(true); } else if ((controlsState & ViewCheckableControl.QuickSearch) != 0) { var so = new LogViewer.SearchOptions() { Filters = filters, HighlightResult = true, SearchOnlyWithinFocusedMessage = false, ReverseSearch = coreOptions.ReverseSearch }; IMessage sr; try { if ((controlsState & ViewCheckableControl.SearchInSearchResult) != 0) { sr = await searchResultPresenter.Search(so); } else { sr = await loadedMessagesPresenter.LogViewerPresenter.Search(so); } } catch (Search.TemplateException) { alerts.ShowPopup("Error", "Error in search template", AlertFlags.Ok | AlertFlags.WarningIcon); return; } catch (OperationCanceledException) { return; } if (sr == null) { if (statusReportFactory != null) { statusReportFactory.CreateNewStatusReport().ShowStatusPopup("Search", GetUnseccessfulSearchMessage(searchHistoryEntry), true); } } } searchHistory.Add(searchHistoryEntry); }
void CreateHighlightingManager() { highlightingManager = new HighlightingManager(searchResultModel, () => MessageTextGetters.Get(isRawMessagesMode), () => viewSize, highlightFilters, selectionManager, wordSelection, colorTheme); }