public static void Apply(this FilterScheme filterScheme, IEnumerable rawCollection, IList filteredCollection)
        {
            Argument.IsNotNull(() => filterScheme);
            Argument.IsNotNull(() => rawCollection);
            Argument.IsNotNull(() => filteredCollection);

            IDisposable suspendToken = null;

            if (filteredCollection is ISuspendChangeNotificationsCollection)
            {
                suspendToken = ((ISuspendChangeNotificationsCollection)filteredCollection).SuspendChangeNotifications();
            }

            filteredCollection.Clear();

            foreach (var item in rawCollection.Cast <object>().Where(filterScheme.CalculateResult))
            {
                filteredCollection.Add(item);
            }

            if (suspendToken != null)
            {
                suspendToken.Dispose();
            }
        }
예제 #2
0
        private async Task OnNewSchemeExecuteAsync()
        {
            if (_targetType is null)
            {
                Log.Warning("Target type is unknown, cannot get any type information to create filters");
                return;
            }

            var filterScheme         = new FilterScheme(_targetType);
            var filterSchemeEditInfo = new FilterSchemeEditInfo(filterScheme, RawCollection, AllowLivePreview, EnableAutoCompletion);

            if (!(await _uiVisualizerService.ShowDialogAsync <EditFilterViewModel>(filterSchemeEditInfo) ?? false))
            {
                return;
            }

            if (_filterSchemes is null || _filterSchemeManager is null)
            {
                return;
            }

            _filterSchemes.Schemes.Add(filterScheme);

            UpdateFilterGroups();

            ApplyFilterScheme(filterScheme, true);

            await _filterSchemeManager.UpdateFiltersAsync();
        }
예제 #3
0
        public static void Apply(this FilterScheme filterScheme, IEnumerable rawCollection, IList filteredCollection)
        {
            Argument.IsNotNull(() => filterScheme);
            Argument.IsNotNull(() => rawCollection);
            Argument.IsNotNull(() => filteredCollection);

            IDisposable suspendToken           = null;
            var         filteredCollectionType = filteredCollection.GetType();

            if (filteredCollectionType.IsGenericTypeEx() && filteredCollectionType.GetGenericTypeDefinitionEx() == typeof(FastObservableCollection <>))
            {
                suspendToken = (IDisposable)filteredCollectionType.GetMethodEx("SuspendChangeNotifications").Invoke(filteredCollection, null);
            }

            filteredCollection.Clear();

            foreach (var item in rawCollection)
            {
                if (filterScheme.CalculateResult(item))
                {
                    filteredCollection.Add(item);
                }
            }

            if (suspendToken != null)
            {
                suspendToken.Dispose();
            }
        }
        private void ApplyFilterScheme(FilterScheme filterScheme, bool force = false)
        {
            if (filterScheme == null || _applyingFilter)
            {
                return;
            }

            _applyingFilter = true;

            var selectedFilterIsDifferent = !ReferenceEquals(SelectedFilterScheme, filterScheme);
            var filterServiceSelectedFilterIsDifferent = !ReferenceEquals(filterScheme, _filterService.SelectedFilter);

            if (selectedFilterIsDifferent)
            {
                SelectedFilterScheme = filterScheme;
            }

            if (filterServiceSelectedFilterIsDifferent)
            {
                _filterService.SelectedFilter = filterScheme;
            }

            if (force || selectedFilterIsDifferent || filterServiceSelectedFilterIsDifferent)
            {
                if (AutoApplyFilter)
                {
                    ApplyFilter();
                }
            }

            _applyingFilter = false;
        }
        private async Task OnEditSchemeExecuteAsync(FilterScheme filterScheme)
        {
            try
            {
                filterScheme.EnsureIntegrity(_reflectionService);

                var filterSchemeEditInfo = new FilterSchemeEditInfo(filterScheme, RawCollection, AllowLivePreview, EnableAutoCompletion);

                if (await _uiVisualizerService.ShowDialogAsync <EditFilterViewModel>(filterSchemeEditInfo) ?? false)
                {
                    _filterSchemeManager.UpdateFilters();

                    if (ReferenceEquals(filterScheme, _filterService.SelectedFilter))
                    {
                        Log.Debug("Current filter has been edited, re-applying filter");

                        _filterService.SelectedFilter = filterScheme;
                    }
                }
            }
            catch (Exception ex)
            {
                Log.Error(ex, $"Failed to edit filter scheme '{filterScheme?.Title}'");
                throw;
            }
        }
예제 #6
0
        public static string GetFilterString(this FilterScheme scheme, Context ctx, FormMetadata metadata)
        {
            if (scheme.Scheme.IsNullOrEmptyOrWhiteSpace())
            {
                return(string.Empty);
            }

            //字段比较条件元数据。
            var filterMetadata = FormMetaDataCache.GetCachedFilterMetaData(ctx);

            //过滤模型:解析过滤方案
            ListFilterModel filterModel = new ListFilterModel();

            filterModel.FilterObject.FilterMetaData = filterMetadata;
            filterModel.SetContext(ctx, metadata.BusinessInfo, metadata.BusinessInfo.GetForm().GetFormServiceProvider());
            filterModel.InitFieldList(metadata, null);

            //把过滤方案的XML内容,反序列化为对象
            DcxmlSerializer dcxmlSerializer = new DcxmlSerializer(new PreInsertDataDcxmlBinder());
            SchemeEntity    schemeEntity    = dcxmlSerializer.DeserializeFromString(scheme.Scheme) as SchemeEntity;

            //利用ListFilterModel, 翻译过滤条件
            filterModel.FilterObject.Setting = schemeEntity.FilterSetting;
            string statement = filterModel.FilterObject.GetFilterSQLString(ctx, TimeServiceHelper.GetSystemDateTime(ctx));

            return(statement);
        } //end metthod
예제 #7
0
        public Task FilterCollectionAsync(FilterScheme filter, IEnumerable rawCollection, IList filteredCollection)
        {
            Argument.IsNotNull(() => filter);

            FilterCollection(filter, rawCollection, filteredCollection);

            return TaskHelper.Completed;
        }
예제 #8
0
 private void ShowQueryBuilder(FilterScheme filterScheme = null)
 {
     CurrentModel = filterScheme == null
                ? TypeFactory.Default.CreateInstance <BrowserQueryBuilderViewModel>()
                : TypeFactory.Default.CreateInstanceWithParametersAndAutoCompletion(
         typeof(BrowserQueryBuilderViewModel), filterScheme) as
                    BrowserQueryBuilderViewModel;
 }
예제 #9
0
        public Task FilterCollectionAsync(FilterScheme filter, IEnumerable rawCollection, IList filteredCollection)
        {
            Argument.IsNotNull(() => filter);

            FilterCollection(filter, rawCollection, filteredCollection);

            return(TaskHelper.Completed);
        }
예제 #10
0
        public static void EnsureIntegrity(this FilterScheme filterScheme)
        {
            Argument.IsNotNull(() => filterScheme);

            foreach (var item in filterScheme.ConditionItems)
            {
                item.EnsureIntegrity();
            }
        }
예제 #11
0
        private bool OnDeleteSchemeCanExecute(FilterScheme filterScheme)
        {
            if (!AllowDelete)
            {
                return(false);
            }

            return(filterScheme?.CanDelete ?? false);
        }
예제 #12
0
        private async Task OnDeleteSchemeExecuteAsync(FilterScheme filterScheme)
        {
            if (await _messageService.ShowAsync(string.Format(_languageService.GetString("FilterBuilder_ShowAsync_Message_AreYouSureYouWantToDeleteFilterQuestion_Pattern"), filterScheme.Title), _languageService.GetString("FilterBuilder_ShowAsync_DeleteFilterQuestion_Caption"), MessageButton.YesNo) == MessageResult.Yes)
            {
                _filterSchemeManager.FilterSchemes.Schemes.Remove(filterScheme);

                SelectedFilterScheme = AvailableSchemes[0];

                _filterSchemeManager.UpdateFilters();
            }
        }
예제 #13
0
        private async void OnDeleteSchemeExecute(FilterScheme filterScheme)
        {
            if (await _messageService.ShowAsync(string.Format("Are you sure you want to delete filter '{0}'?", filterScheme.Title), "Delete filter?", MessageButton.YesNo) == MessageResult.Yes)
            {
                _filterSchemeManager.FilterSchemes.Schemes.Remove(filterScheme);

                SelectedFilterScheme = AvailableSchemes[0];

                _filterSchemeManager.UpdateFilters();
            }
        }
            public void WorksCorrectlyOnEmptyFilterScheme()
            {
                var filterScheme = new FilterScheme
                {
                    Title = "Default"
                };

                var actual = filterScheme.ToString();
                var expected = @"Default";

                Assert.AreEqual(expected, actual);
            }
            public void WorksCorrectlyOnEmptyFilterScheme()
            {
                var filterScheme = new FilterScheme
                {
                    Title = "Default"
                };

                var actual   = filterScheme.ToString();
                var expected = @"Default";

                Assert.AreEqual(expected, actual);
            }
        public async Task FilterCollectionAsync(FilterScheme filter, IEnumerable rawCollection, IList filteredCollection)
        {
            Argument.IsNotNull(() => filter);

            await filter.EnsureIntegrityAsync();

            if (filteredCollection == null)
            {
                return;
            }

            filter.Apply(rawCollection, filteredCollection);
        }
        public static FilterScheme GenerateFilterScheme()
        {
            var filterScheme = new FilterScheme();

            filterScheme.Title = "Test filter";

            var root = filterScheme.ConditionItems.First();

            root.Items.Add(GenerateConditionGroup());
            root.Items.Add(GenerateConditionGroup());

            return(filterScheme);
        }
예제 #18
0
        private async Task OnEditSchemeExecuteAsync(FilterScheme filterScheme)
        {
            await filterScheme.EnsureIntegrityAsync();

            var filterSchemeEditInfo = new FilterSchemeEditInfo(filterScheme, RawCollection, AllowLivePreview, EnableAutoCompletion);

            if (_uiVisualizerService.ShowDialog <EditFilterViewModel>(filterSchemeEditInfo) ?? false)
            {
                _filterSchemeManager.UpdateFilters();

                ApplyFilter();
            }
        }
예제 #19
0
        public void FilterCollection(FilterScheme filter, IEnumerable rawCollection, IList filteredCollection)
        {
            Argument.IsNotNull(() => filter);

            filter.EnsureIntegrity(_reflectionService);

            if (filteredCollection == null)
            {
                return;
            }

            filter.Apply(rawCollection, filteredCollection);
        }
        public async Task FilterCollectionAsync(FilterScheme filter, IEnumerable rawCollection, IList filteredCollection)
        {
            Argument.IsNotNull(() => filter);

            await filter.EnsureIntegrityAsync();

            if (filteredCollection == null)
            {
                return;
            }

            filter.Apply(rawCollection, filteredCollection);
        }
예제 #21
0
        public void FilterCollection(FilterScheme filter, IEnumerable rawCollection, IList filteredCollection)
        {
            Argument.IsNotNull(() => filter);

            filter.EnsureIntegrity(_reflectionService);

            if (filteredCollection == null)
            {
                return;
            }

            filter.Apply(rawCollection, filteredCollection);
        }
예제 #22
0
        public FilterScheme Export(Type entityType)
        {
            var reflectionService = this.GetDependencyResolver().Resolve <IReflectionService>();
            var properties        = reflectionService.GetInstanceProperties(entityType);
            var group             = new ConditionGroup()
            {
                Type = ConditionGroupType.And
            };

            Conditions.Select(o => o.Export(group, properties)).Sink(group.Items.Add);
            var scheme = new FilterScheme(entityType, "Default", group);

            return(scheme);
        }
예제 #23
0
        public static async Task EnsureIntegrityAsync(this FilterScheme filterScheme)
        {
            Argument.IsNotNull(() => filterScheme);

            var reflectionService = ServiceLocator.Default.ResolveType <IReflectionService>(filterScheme.Tag);

            using (await LockFilterScheme.LockAsync())
            {
                foreach (var item in filterScheme.ConditionItems)
                {
                    await item.EnsureIntegrityAsync(reflectionService);
                }
            }
        }
예제 #24
0
        private async Task OnDeleteSchemeExecuteAsync(FilterScheme filterScheme)
        {
            if (await _messageService.ShowAsync(string.Format(_languageService.GetString("FilterBuilder_ShowAsync_Message_AreYouSureYouWantToDeleteFilterQuestion_Pattern"), filterScheme.Title), _languageService.GetString("FilterBuilder_ShowAsync_DeleteFilterQuestion_Caption"), MessageButton.YesNo) != MessageResult.Yes)
            {
                return;
            }

            _filterSchemeManager?.FilterSchemes.Schemes.Remove(filterScheme);

            SelectedFilterScheme = _noFilterFilter;

            if (_filterSchemeManager != null)
            {
                await _filterSchemeManager.UpdateFiltersAsync();
            }
        }
        private bool OnEditSchemeCanExecute(FilterScheme filterScheme)
        {
            if (filterScheme == null)
            {
                return(false);
            }

            if (AvailableSchemes.Count == 0)
            {
                return(false);
            }

            if (ReferenceEquals(AvailableSchemes[0], filterScheme))
            {
                return(false);
            }

            return(true);
        }
예제 #26
0
        private void UpdatePreviewItems()
        {
            if (FilterScheme is null || RawCollection is null)
            {
                return;
            }

            if (!AllowLivePreview)
            {
                return;
            }

            if (!EnableLivePreview)
            {
                PreviewItems.Clear();
                return;
            }

            FilterScheme.Apply(RawCollection, PreviewItems);
        }
        private void OnNewSchemeExecute()
        {
            if (_targetType == null)
            {
                Log.Warning("Target type is unknown, cannot get any type information to create filters");
                return;
            }

            var filterScheme = new FilterScheme(_targetType);
            var filterSchemeEditInfo = new FilterSchemeEditInfo (filterScheme, RawItems, true, true);

            if (_uiVisualizerService.ShowDialog<EditFilterViewModel>(filterSchemeEditInfo) ?? false)
            {
                AvailableSchemes.Add(filterScheme);

                _filterSchemes.Schemes.Add(filterScheme);
                _filterService.SelectedFilter = filterScheme;

                _filterSchemeManager.UpdateFilters();
            }
        }
예제 #28
0
        private async Task OnNewSchemeExecuteAsync()
        {
            if (_targetType == null)
            {
                Log.Warning("Target type is unknown, cannot get any type information to create filters");
                return;
            }

            var filterScheme         = new FilterScheme(_targetType);
            var filterSchemeEditInfo = new FilterSchemeEditInfo(filterScheme, RawItems, true, true);

            if (await _uiVisualizerService.ShowDialogAsync <EditFilterViewModel>(filterSchemeEditInfo) ?? false)
            {
                AvailableSchemes.Add(filterScheme);

                _filterSchemes.Schemes.Add(filterScheme);
                _filterService.SelectedFilter = filterScheme;

                _filterSchemeManager.UpdateFilters();
            }
        }
예제 #29
0
        private void OnNewSchemeExecute()
        {
            if (_targetType == null)
            {
                Log.Warning("Target type is unknown, cannot get any type information to create filters");
                return;
            }

            var filterScheme         = new FilterScheme(_targetType);
            var filterSchemeEditInfo = new FilterSchemeEditInfo(filterScheme, RawCollection, AllowLivePreview, EnableAutoCompletion);

            if (_uiVisualizerService.ShowDialog <EditFilterViewModel>(filterSchemeEditInfo) ?? false)
            {
                AvailableSchemes.Add(filterScheme);
                _filterSchemes.Schemes.Add(filterScheme);

                ApplyFilterScheme(filterScheme, true);

                _filterSchemeManager.UpdateFilters();
            }
        }
예제 #30
0
        public EditFilterViewModel(FilterSchemeEditInfo filterSchemeEditInfo, IXmlSerializer xmlSerializer,
                                   IMessageService messageService, IServiceLocator serviceLocator)
        {
            Argument.IsNotNull(() => filterSchemeEditInfo);
            Argument.IsNotNull(() => xmlSerializer);
            Argument.IsNotNull(() => messageService);
            Argument.IsNotNull(() => serviceLocator);

            PreviewItems         = new FastObservableCollection <object>();
            RawCollection        = filterSchemeEditInfo.RawCollection;
            EnableAutoCompletion = filterSchemeEditInfo.EnableAutoCompletion;
            AllowLivePreview     = filterSchemeEditInfo.AllowLivePreview;
            EnableLivePreview    = filterSchemeEditInfo.AllowLivePreview;

            var filterScheme = filterSchemeEditInfo.FilterScheme;

            _originalFilterScheme = filterScheme;
            _xmlSerializer        = xmlSerializer;
            _messageService       = messageService;
            _serviceLocator       = serviceLocator;

            _reflectionService = _serviceLocator.ResolveType <IReflectionService>(filterScheme.Tag);

            DeferValidationUntilFirstSaveCall = true;

            using (var memoryStream = new MemoryStream())
            {
                xmlSerializer.Serialize(_originalFilterScheme, memoryStream);
                memoryStream.Position = 0L;
                FilterScheme          = (FilterScheme)xmlSerializer.Deserialize(typeof(FilterScheme), memoryStream);
                FilterScheme.Tag      = filterScheme.Tag;
            }

            FilterSchemeTitle = FilterScheme.Title;

            AddGroupCommand      = new Command <ConditionGroup>(OnAddGroup);
            AddExpressionCommand = new Command <ConditionGroup>(OnAddExpression);
            DeleteConditionItem  = new Command <ConditionTreeItem>(OnDeleteCondition, OnDeleteConditionCanExecute);
        }
        public EditFilterViewModel(FilterSchemeEditInfo filterSchemeEditInfo, IXmlSerializer xmlSerializer, 
            IMessageService messageService, IServiceLocator serviceLocator)
        {
            Argument.IsNotNull(() => filterSchemeEditInfo);
            Argument.IsNotNull(() => xmlSerializer);
            Argument.IsNotNull(() => messageService);
            Argument.IsNotNull(() => serviceLocator);

            PreviewItems = new FastObservableCollection<object>();
            RawCollection = filterSchemeEditInfo.RawCollection;
            EnableAutoCompletion = filterSchemeEditInfo.EnableAutoCompletion;
            AllowLivePreview = filterSchemeEditInfo.AllowLivePreview;
            EnableLivePreview = filterSchemeEditInfo.AllowLivePreview;

            var filterScheme = filterSchemeEditInfo.FilterScheme;

            _originalFilterScheme = filterScheme;
            _xmlSerializer = xmlSerializer;
            _messageService = messageService;
            _serviceLocator = serviceLocator;

            _reflectionService = _serviceLocator.ResolveType<IReflectionService>(filterScheme.Tag);

            DeferValidationUntilFirstSaveCall = true;

            using (var memoryStream = new MemoryStream())
            {
                xmlSerializer.Serialize(_originalFilterScheme, memoryStream);
                memoryStream.Position = 0L;
                FilterScheme = (FilterScheme)xmlSerializer.Deserialize(typeof(FilterScheme), memoryStream);
                FilterScheme.Tag = filterScheme.Tag;
            }

            FilterSchemeTitle = FilterScheme.Title;

            AddGroupCommand = new Command<ConditionGroup>(OnAddGroup);
            AddExpressionCommand = new Command<ConditionGroup>(OnAddExpression);
            DeleteConditionItem = new Command<ConditionTreeItem>(OnDeleteCondition, OnDeleteConditionCanExecute);
        }
예제 #32
0
        protected override async Task InitializeAsync()
        {
            await base.InitializeAsync();

            InstanceProperties = _reflectionService.GetInstanceProperties(_originalFilterScheme.TargetType).Properties;

            using (var memoryStream = new MemoryStream())
            {
                _xmlSerializer.Serialize(_originalFilterScheme, memoryStream, null);
                memoryStream.Position = 0L;
                _xmlSerializer.Deserialize(FilterScheme, memoryStream, null);
            }

            FilterScheme.EnsureIntegrity(_reflectionService);
            FilterScheme.Scope = _originalFilterScheme.Scope;
            FilterSchemeTitle  = FilterScheme.Title;

            RaisePropertyChanged(() => FilterScheme);

            UpdatePreviewItems();

            FilterScheme.Updated += OnFilterSchemeUpdated;
        }
        public EditFilterViewModel(FilterSchemeEditInfo filterSchemeEditInfo, IXmlSerializer xmlSerializer,
                                   IMessageService messageService, IServiceLocator serviceLocator, ILanguageService languageService)
        {
            Argument.IsNotNull(() => filterSchemeEditInfo);
            Argument.IsNotNull(() => xmlSerializer);
            Argument.IsNotNull(() => messageService);
            Argument.IsNotNull(() => serviceLocator);
            Argument.IsNotNull(() => languageService);

            _xmlSerializer   = xmlSerializer;
            _messageService  = messageService;
            _serviceLocator  = serviceLocator;
            _languageService = languageService;

            PreviewItems         = new FastObservableCollection <object>();
            RawCollection        = filterSchemeEditInfo.RawCollection;
            EnableAutoCompletion = filterSchemeEditInfo.EnableAutoCompletion;
            AllowLivePreview     = filterSchemeEditInfo.AllowLivePreview;
            EnableLivePreview    = filterSchemeEditInfo.AllowLivePreview;

            var filterScheme = filterSchemeEditInfo.FilterScheme;

            _originalFilterScheme = filterScheme;

            _reflectionService = _serviceLocator.ResolveType <IReflectionService>(filterScheme.Scope);

            DeferValidationUntilFirstSaveCall = true;

            FilterScheme = new FilterScheme
            {
                Scope = _originalFilterScheme.Scope
            };

            AddGroupCommand      = new Command <ConditionGroup>(OnAddGroup);
            AddExpressionCommand = new Command <ConditionGroup>(OnAddExpression);
            DeleteConditionItem  = new Command <ConditionTreeItem>(OnDeleteCondition, OnDeleteConditionCanExecute);
        }
        public EditFilterViewModel(FilterSchemeEditInfo filterSchemeEditInfo, IXmlSerializer xmlSerializer,
            IMessageService messageService, IServiceLocator serviceLocator, ILanguageService languageService)
        {
            Argument.IsNotNull(() => filterSchemeEditInfo);
            Argument.IsNotNull(() => xmlSerializer);
            Argument.IsNotNull(() => messageService);
            Argument.IsNotNull(() => serviceLocator);
            Argument.IsNotNull(() => languageService);

            _xmlSerializer = xmlSerializer;
            _messageService = messageService;
            _serviceLocator = serviceLocator;
            _languageService = languageService;

            PreviewItems = new FastObservableCollection<object>();
            RawCollection = filterSchemeEditInfo.RawCollection;
            EnableAutoCompletion = filterSchemeEditInfo.EnableAutoCompletion;
            AllowLivePreview = filterSchemeEditInfo.AllowLivePreview;
            EnableLivePreview = filterSchemeEditInfo.AllowLivePreview;

            var filterScheme = filterSchemeEditInfo.FilterScheme;
            _originalFilterScheme = filterScheme;

            _reflectionService = _serviceLocator.ResolveType<IReflectionService>(filterScheme.Scope);

            DeferValidationUntilFirstSaveCall = true;

            FilterScheme = new FilterScheme
            {
                Scope = _originalFilterScheme.Scope
            };

            AddGroupCommand = new Command<ConditionGroup>(OnAddGroup);
            AddExpressionCommand = new Command<ConditionGroup>(OnAddExpression);
            DeleteConditionItem = new Command<ConditionTreeItem>(OnDeleteCondition, OnDeleteConditionCanExecute);
        }
 private bool ReadyForResetOrDeleteScheme(FilterScheme filterScheme)
 {
     return(filterScheme != null && AvailableSchemes != null && AvailableSchemes.Any() &&
            !ReferenceEquals(filterScheme, AvailableSchemes[0]));
 }
 private bool OnDeleteSchemeCanExecute(FilterScheme filterScheme)
 {
     return(AllowDelete && ReadyForResetOrDeleteScheme(filterScheme));
 }
        private void ApplyFilterScheme(FilterScheme filterScheme, bool force = false)
        {
            if (filterScheme == null || _applyingFilter)
            {
                return;
            }

            _applyingFilter = true;

            var selectedFilterIsDifferent = !ReferenceEquals(SelectedFilterScheme, filterScheme);
            var filterServiceSelectedFilterIsDifferent = !ReferenceEquals(filterScheme, _filterService.SelectedFilter);

            if (selectedFilterIsDifferent)
            {
                SelectedFilterScheme = filterScheme;
            }

            if (filterServiceSelectedFilterIsDifferent)
            {
                _filterService.SelectedFilter = filterScheme;
            }

            if (force || selectedFilterIsDifferent || filterServiceSelectedFilterIsDifferent)
            {
                if (AutoApplyFilter)
                {
                    ApplyFilter();
                }
            }

            _applyingFilter = false;
        }
 private bool ReadyForResetOrDeleteScheme(FilterScheme filterScheme)
 {
     return filterScheme != null && AvailableSchemes != null && AvailableSchemes.Any()
            && !ReferenceEquals(filterScheme, AvailableSchemes[0]);
 }
 private bool OnDeleteSchemeCanExecute(FilterScheme filterScheme)
 {
     return AllowDelete && ReadyForResetOrDeleteScheme(filterScheme);
 }
        private void OnEditSchemeExecute(FilterScheme filterScheme)
        {
            try
            {
                filterScheme.EnsureIntegrity(_reflectionService);

                var filterSchemeEditInfo = new FilterSchemeEditInfo(filterScheme, RawCollection, AllowLivePreview, EnableAutoCompletion);

                if (_uiVisualizerService.ShowDialog<EditFilterViewModel>(filterSchemeEditInfo) ?? false)
                {
                    _filterSchemeManager.UpdateFilters();

                    if (ReferenceEquals(filterScheme, _filterService.SelectedFilter))
                    {
                        Log.Debug("Current filter has been edited, re-applying filter");

                        _filterService.SelectedFilter = filterScheme;
                    }
                }
            }
            catch (Exception ex)
            {
                Log.Error(ex, $"Failed to edit filter scheme '{filterScheme?.Title}'");
                throw;
            }
        }
        private bool OnEditSchemeCanExecute(FilterScheme filterScheme)
        {
            if (filterScheme == null)
            {
                return false;
            }

            if (AvailableSchemes.Count == 0)
            {
                return false;
            }

            if (ReferenceEquals(AvailableSchemes[0], filterScheme))
            {
                return false;
            }

            return true;
        }
        private async Task OnEditSchemeExecuteAsync(FilterScheme filterScheme)
        {
            await filterScheme.EnsureIntegrityAsync();

            var filterSchemeEditInfo = new FilterSchemeEditInfo(filterScheme, RawCollection, AllowLivePreview, EnableAutoCompletion);

            if (_uiVisualizerService.ShowDialog<EditFilterViewModel>(filterSchemeEditInfo) ?? false)
            {
                _filterSchemeManager.UpdateFilters();

                ApplyFilter();
            }
        }
        private async void OnDeleteSchemeExecute(FilterScheme filterScheme)
        {
            if (await _messageService.ShowAsync(string.Format("Are you sure you want to delete filter '{0}'?", filterScheme.Title), "Delete filter?", MessageButton.YesNo) == MessageResult.Yes)
            {
                _filterSchemeManager.FilterSchemes.Schemes.Remove(filterScheme);

                SelectedFilterScheme = AvailableSchemes[0];

                _filterSchemeManager.UpdateFilters();
            }
        }
        private void OnNewSchemeExecute()
        {
            if (_targetType == null)
            {
                Log.Warning("Target type is unknown, cannot get any type information to create filters");
                return;
            }

            var filterScheme = new FilterScheme(_targetType);
            var filterSchemeEditInfo = new FilterSchemeEditInfo(filterScheme, RawCollection, AllowLivePreview, EnableAutoCompletion);

            if (_uiVisualizerService.ShowDialog<EditFilterViewModel>(filterSchemeEditInfo) ?? false)
            {
                AvailableSchemes.Add(filterScheme);
                _filterSchemes.Schemes.Add(filterScheme);

                ApplyFilterScheme(filterScheme, true);

                _filterSchemeManager.UpdateFilters();
            }
        }
예제 #45
0
 private bool OnEditSchemeCanExecute(FilterScheme filterScheme)
 {
     return(filterScheme?.CanEdit ?? false);
 }