Example #1
0
 public DefaultSearchBlockViewModel(DefaultSearchCriteria defaultSearchCriteria, ISearchHistory history, Action <SearchSuggestionViewModel> applySuggestionAction)
     : base(defaultSearchCriteria, applySuggestionAction)
 {
     _history = history;
     foreach (var(keyword, exampleTerm) in defaultSearchCriteria.ExamplesFromEachSubCriteria())
     {
         Examples.Add(new SearchBlockExampleViewModel($" {keyword}: ", exampleTerm));
     }
 }
Example #2
0
        public SearchViewModel(IPipeline pipeline, ISearchEngine searchEngine, ISearchHistory searchHistory)
        {
            _pipeline                  = pipeline;
            SearchEngine               = searchEngine;
            SearchHistory              = searchHistory;
            SearchEngine.SearchParsed += SearchEngineOnSearchParsed;

            _searchTimer = new DispatcherTimer(DispatcherPriority.Input)
            {
                Interval = TimeSpan.FromMilliseconds(400)
            };
            _searchTimer.Tick += SearchTimerOnTick;
        }
        public Presenter(
            IView view,
            ISearchManager searchManager,
            ISearchHistory searchHistory,
            IUserDefinedSearches userDefinedSearches,
            ILogSourcesManager sourcesManager,
            IFiltersFactory filtersFactory,
            ISearchResultsPanelView searchResultsPanelView,
            LoadedMessages.IPresenter loadedMessagesPresenter,
            SearchResult.IPresenter searchResultPresenter,
            StatusReports.IPresenter statusReportFactory,
            SearchEditorDialog.IPresenter searchEditorDialog,
            SearchesManagerDialog.IPresenter searchesManagerDialog,
            IAlertPopup alerts
            )
        {
            this.view                    = view;
            this.searchManager           = searchManager;
            this.searchHistory           = searchHistory;
            this.filtersFactory          = filtersFactory;
            this.searchResultsPanelView  = searchResultsPanelView;
            this.loadedMessagesPresenter = loadedMessagesPresenter;
            this.searchResultPresenter   = searchResultPresenter;
            this.statusReportFactory     = statusReportFactory;
            this.sourcesManager          = sourcesManager;
            this.searchesManagerDialog   = searchesManagerDialog;
            this.alerts                  = alerts;
            this.quickSearchPresenter    = new QuickSearchTextBox.Presenter(view.SearchTextBox);
            this.searchEditorDialog      = searchEditorDialog;

            InvalidateSearchHistoryList();
            searchHistory.OnChanged += (sender, args) => InvalidateSearchHistoryList();

            sourcesManager.OnLogSourceAdded   += (sender, e) => UpdateSearchControls();
            sourcesManager.OnLogSourceRemoved += (sender, e) => UpdateSearchControls();

            UpdateSearchControls();
            UpdateUserDefinedSearchDependentControls(false);

            view.SetPresenter(this);

            quickSearchPresenter.OnSearchNow += (sender, args) =>
            {
                if (quickSearchPresenter.Text != "")
                {
                    DoSearch(reverseDirection: args.ReverseSearchModifier);
                }
            };
            quickSearchPresenter.OnCancelled += (sender, args) =>
            {
                bool searchCancelled = false;
                foreach (var r in searchManager.Results.Where(r => r.Status == SearchResultStatus.Active))
                {
                    r.Cancel();
                    searchCancelled = true;
                }
                if (!searchCancelled && InputFocusAbandoned != null)
                {
                    InputFocusAbandoned(this, EventArgs.Empty);
                }
            };
            quickSearchPresenter.SetSuggestionsHandler((sender, e) =>
            {
                if (e.Etag == searchListEtag)
                {
                    return;
                }
                foreach (var i in searchHistory.Items)
                {
                    var description = new StringBuilder();
                    GetUserFriendlySearchHistoryEntryDescription(i, description);
                    e.AddItem(new QuickSearchTextBox.SuggestionItem()
                    {
                        DisplayString = description.ToString(),
                        SearchString  = (i as ISimpleSearchHistoryEntry)?.Options.Template,
                        Category      = "recent searches",
                        Data          = i
                    });
                }
                foreach (var i in userDefinedSearches.Items)
                {
                    var description = new StringBuilder();
                    GetUserFriendlySearchHistoryEntryDescription(i, description);
                    e.AddItem(new QuickSearchTextBox.SuggestionItem()
                    {
                        DisplayString = description.ToString(),
                        LinkText      = "edit",
                        Category      = "Filters",
                        Data          = i
                    });
                }
                e.ConfigureCategory("Filters", linkText: "manage", alwaysVisible: true);
                e.Etag = searchListEtag;
            });
            quickSearchPresenter.OnCurrentSuggestionChanged += (sender, e) =>
            {
                var datum = quickSearchPresenter.CurrentSuggestion?.Data;
                var searchHistoryEntry = datum as ISimpleSearchHistoryEntry;
                if (searchHistoryEntry != null)
                {
                    ReadControlsFromSelectedHistoryEntry(searchHistoryEntry);
                }
                UpdateUserDefinedSearchDependentControls(
                    datum is IUserDefinedSearch || datum is IUserDefinedSearchHistoryEntry);
            };
            quickSearchPresenter.OnSuggestionLinkClicked += (sender, e) =>
            {
                var uds = e.Suggestion.Data as IUserDefinedSearch;
                if (uds == null)
                {
                    return;
                }
                searchEditorDialog.Open(uds);
            };
            quickSearchPresenter.OnCategoryLinkClicked += (sender, e) =>
            {
                HandleSearchesManagerDialog();
            };
            userDefinedSearches.OnChanged += (sender, e) =>
            {
                InvalidateSearchHistoryList();
            };
        }
        public Presenter(
            Settings.IGlobalSettingsAccessor settings,
            IRecentlyUsedEntities mru,
            ISearchHistory searchHistory,
            IView view)
        {
            this.view                           = view;
            this.settingsAccessor               = settings;
            this.recentLogsList                 = mru;
            this.searchHistory                  = searchHistory;
            this.recentLogsListSizeEditor       = new LabeledStepperPresenter.Presenter(view.GetStepperView(ViewControl.RecentLogsListSizeEditor));
            this.searchHistoryDepthEditor       = new LabeledStepperPresenter.Presenter(view.GetStepperView(ViewControl.SearchHistoryDepthEditor));
            this.maxNumberOfSearchResultsEditor = new LabeledStepperPresenter.Presenter(view.GetStepperView(ViewControl.MaxNumberOfSearchResultsEditor));
            this.logSizeThresholdEditor         = new LabeledStepperPresenter.Presenter(view.GetStepperView(ViewControl.LogSizeThresholdEditor));
            this.logWindowSizeEditor            = new LabeledStepperPresenter.Presenter(view.GetStepperView(ViewControl.LogWindowSizeEditor));

            this.logSizeThresholdEditor.AllowedValues = new int[] {
                1,
                2,
                4,
                8,
                12,
                16,
                24,
                32,
                48,
                64,
                80,
                100,
                120,
                160,
                200
            };
            this.logSizeThresholdEditor.Value = 1;

            this.logWindowSizeEditor.AllowedValues = new int[] {
                1,
                2,
                3,
                4,
                5,
                6,
                8,
                12,
                20,
                24
            };
            this.logWindowSizeEditor.Value = 1;

            this.searchHistoryDepthEditor.AllowedValues = new int[] {
                0,
                5,
                10,
                20,
                30,
                40,
                50,
                60,
                70,
                80,
                90,
                100,
                120,
                140,
                160,
                180,
                200,
                220,
                240,
                260,
                280,
                300
            };
            this.searchHistoryDepthEditor.Value = 0;

            this.maxNumberOfSearchResultsEditor.AllowedValues = new int[] {
                1000,
                4000,
                8000,
                16000,
                30000,
                50000,
                70000,
                100000,
                200000
            };
            this.maxNumberOfSearchResultsEditor.Value = 1000;


            this.recentLogsListSizeEditor.AllowedValues = new int[] {
                0,
                100,
                200,
                400,
                800,
                1500
            };
            this.recentLogsListSizeEditor.Value = 0;

            view.SetPresenter(this);

            UpdateView();
        }
 public UserController(IUserService userService, ISearchHistory searchHistory)
 {
     _userService   = userService;
     _searchService = searchHistory;
 }