예제 #1
0
 /// <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)
 {
 }
예제 #2
0
        /// <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(); }
                );
        }
예제 #3
0
        /// <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 (); }
                );
        }
예제 #4
0
 /// <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)
 {
 }