/// <summary> /// Initializes a new instance of the <see cref="SearchViewModelBase"/> class. /// </summary> /// <param name="accessControlManager">The access control manager.</param> /// <param name="commandFactory">The command factory.</param> /// <param name="advancedSearchCriteriaBase">The advanced search criteria base.</param> protected SearchViewModelBase( IAccessControlManager accessControlManager, ICommandFactory commandFactory, AdvancedSearchCriteriaBase advancedSearchCriteriaBase) : this(accessControlManager, commandFactory, advancedSearchCriteriaBase, true) { }
/// <summary> /// Initializes a new instance of the <see cref="SearchViewModelBase"/> class. /// </summary> /// <param name="accessControlManager">The access control manager.</param> /// <param name="commandFactory">The command factory.</param> /// <param name="advancedSearchCriteriaBase">The advanced search criteria base.</param> /// <param name="handleQuickSearchChanged">If set to <c>true</c> [handle quick search changed].</param> protected SearchViewModelBase( IAccessControlManager accessControlManager, ICommandFactory commandFactory, AdvancedSearchCriteriaBase advancedSearchCriteriaBase, bool handleQuickSearchChanged) : base(accessControlManager, commandFactory) { // TODO: Hard-coded constant. _numOfFieldsRequiredForAdvancedSearch = 1; _minimumQuickSearchCriteriaLength = 3; _throttleInMilliseconds = 0; // Throttle causes all kinds of tricky usability issues _searchResults = null; _pageSize = 0; _totalItemCount = 0; _pageIndex = -1; var commandFactoryHelper = CreateCommandFactoryHelper(commandFactory); RunAdvancedSearchCommand = commandFactoryHelper.BuildDelegateCommand( () => RunAdvancedSearchCommand, ExecuteRunAdvancedSearch, CanExecuteRunAdvancedSearch); ResetAdvancedSearchCommand = commandFactoryHelper.BuildDelegateCommand(() => ResetAdvancedSearchCommand, ExecuteResetAdvancedSearch); InternalSelectionChangedCommand = commandFactoryHelper.BuildDelegateCommand <object> ( () => InternalSelectionChangedCommand, ExecuteInternalSelectionChangedCommand); ClearSelectedItemCommand = commandFactoryHelper.BuildDelegateCommand(() => ClearSelectedItemCommand, ExecuteClearSelectedItemCommand); SearchAbortedCommand = commandFactoryHelper.BuildDelegateCommand(() => SearchAbortedCommand, ExecuteSearchAbortedCommand); AddNewCommand = commandFactoryHelper.BuildDelegateCommand(() => AddNewCommand, ExecuteAddNewCommand, CanExecuteAddNewCommand); if (handleQuickSearchChanged) { HandleQuickSearchCriteriaChangedEventDeclaratively(); } else { ManualSearchCommand = new DelegateCommand(ExecuteManualSearchCommand, CanExecuteManualSearchCommand); var input = ( from evt in Observable.FromEventPattern <PropertyChangedEventArgs> (this, "PropertyChanged") where evt.EventArgs.PropertyName == PropertyUtil.ExtractPropertyName(() => QuickSearchCriteria) select(( SearchViewModelBase )evt.Sender).QuickSearchCriteria ); var inputSubscription = input.ObserveOnDispatcher() .Subscribe( search => { (ManualSearchCommand as DelegateCommand).RaiseCanExecuteChanged(); } ); } _advancedSearchCriteria = advancedSearchCriteriaBase; var advancedSearchCriteriaPropertyChangedEvent = from evt in Observable.FromEventPattern <PropertyChangedEventArgs> (_advancedSearchCriteria, "PropertyChanged") select evt.ToString(); var advancedSearchCriteriaPropertyChangedEventSubscription = advancedSearchCriteriaPropertyChangedEvent .ObserveOnDispatcher().Subscribe( (arg) => { (RunAdvancedSearchCommand as DelegateCommandBase).RaiseCanExecuteChanged(); } ); }
/// <summary> /// Initializes a new instance of the <see cref="SearchViewModelBase"/> class. /// </summary> /// <param name="accessControlManager">The access control manager.</param> /// <param name="commandFactory">The command factory.</param> /// <param name="advancedSearchCriteriaBase">The advanced search criteria base.</param> /// <param name="handleQuickSearchChanged">If set to <c>true</c> [handle quick search changed].</param> protected SearchViewModelBase( IAccessControlManager accessControlManager, ICommandFactory commandFactory, AdvancedSearchCriteriaBase advancedSearchCriteriaBase, bool handleQuickSearchChanged ) : base(accessControlManager, commandFactory) { // TODO: Hard-coded constant. _numOfFieldsRequiredForAdvancedSearch = 1; _minimumQuickSearchCriteriaLength = 3; _throttleInMilliseconds = 0; // Throttle causes all kinds of tricky usability issues _searchResults = null; _pageSize = 0; _totalItemCount = 0; _pageIndex = -1; var commandFactoryHelper = CreateCommandFactoryHelper ( commandFactory ); RunAdvancedSearchCommand = commandFactoryHelper.BuildDelegateCommand ( () => RunAdvancedSearchCommand, ExecuteRunAdvancedSearch, CanExecuteRunAdvancedSearch ); ResetAdvancedSearchCommand = commandFactoryHelper.BuildDelegateCommand ( () => ResetAdvancedSearchCommand, ExecuteResetAdvancedSearch ); InternalSelectionChangedCommand = commandFactoryHelper.BuildDelegateCommand<object> ( () => InternalSelectionChangedCommand, ExecuteInternalSelectionChangedCommand ); ClearSelectedItemCommand = commandFactoryHelper.BuildDelegateCommand ( () => ClearSelectedItemCommand, ExecuteClearSelectedItemCommand ); SearchAbortedCommand = commandFactoryHelper.BuildDelegateCommand ( () => SearchAbortedCommand, ExecuteSearchAbortedCommand ); AddNewCommand = commandFactoryHelper.BuildDelegateCommand ( () => AddNewCommand, ExecuteAddNewCommand, CanExecuteAddNewCommand ); if ( handleQuickSearchChanged ) { HandleQuickSearchCriteriaChangedEventDeclaratively (); } else { ManualSearchCommand = new DelegateCommand ( ExecuteManualSearchCommand, CanExecuteManualSearchCommand ); var input = ( from evt in Observable.FromEventPattern<PropertyChangedEventArgs> ( this, "PropertyChanged" ) where evt.EventArgs.PropertyName == PropertyUtil.ExtractPropertyName ( () => QuickSearchCriteria ) select ( ( SearchViewModelBase )evt.Sender ).QuickSearchCriteria ); var inputSubscription = input.ObserveOnDispatcher () .Subscribe ( search => { ( ManualSearchCommand as DelegateCommand ).RaiseCanExecuteChanged (); } ); } _advancedSearchCriteria = advancedSearchCriteriaBase; var advancedSearchCriteriaPropertyChangedEvent = from evt in Observable.FromEventPattern<PropertyChangedEventArgs> ( _advancedSearchCriteria, "PropertyChanged" ) select evt.ToString (); var advancedSearchCriteriaPropertyChangedEventSubscription = advancedSearchCriteriaPropertyChangedEvent .ObserveOnDispatcher ().Subscribe ( ( arg ) => { ( RunAdvancedSearchCommand as DelegateCommandBase ).RaiseCanExecuteChanged (); } ); }
/// <summary> /// Initializes a new instance of the <see cref="SearchViewModelBase"/> class. /// </summary> /// <param name="accessControlManager">The access control manager.</param> /// <param name="commandFactory">The command factory.</param> /// <param name="advancedSearchCriteriaBase">The advanced search criteria base.</param> protected SearchViewModelBase( IAccessControlManager accessControlManager, ICommandFactory commandFactory, AdvancedSearchCriteriaBase advancedSearchCriteriaBase ) : this(accessControlManager, commandFactory, advancedSearchCriteriaBase, true) { }