public EditFilterViewModel(FilterSchemeEditInfo filterSchemeEditInfo, IReflectionService reflectionService, IXmlSerializer xmlSerializer, IMessageService messageService) { Argument.IsNotNull(() => filterSchemeEditInfo); Argument.IsNotNull(() => reflectionService); Argument.IsNotNull(() => xmlSerializer); Argument.IsNotNull(() => messageService); PreviewItems = new FastObservableCollection<object>(); RawCollection = filterSchemeEditInfo.RawCollection; EnableAutoCompletion = filterSchemeEditInfo.EnableAutoCompletion; AllowLivePreview = filterSchemeEditInfo.AllowLivePreview; EnableLivePreview = filterSchemeEditInfo.AllowLivePreview; var filterScheme = filterSchemeEditInfo.FilterScheme; _originalFilterScheme = filterScheme; _reflectionService = reflectionService; _xmlSerializer = xmlSerializer; _messageService = messageService; DeferValidationUntilFirstSaveCall = true; InstanceProperties = _reflectionService.GetInstanceProperties(filterScheme.TargetType).Properties; // Serializing gives us a *real* deep clone, there was a bug in Copy() //FilterScheme = _originalFilterScheme.Copy(); using (var memoryStream = new MemoryStream()) { xmlSerializer.Serialize(_originalFilterScheme, memoryStream); memoryStream.Position = 0L; FilterScheme = (FilterScheme) xmlSerializer.Deserialize(typeof (FilterScheme), memoryStream); } FilterSchemeTitle = FilterScheme.Title; AddGroupCommand = new Command<ConditionGroup>(OnAddGroup); AddExpressionCommand = new Command<ConditionGroup>(OnAddExpression); DeleteConditionItem = new Command<ConditionTreeItem>(OnDeleteCondition); }
private void OnEditSchemeExecute() { var filterSchemeEditInfo = new FilterSchemeEditInfo(SelectedFilterScheme, RawCollection, AllowLivePreview, EnableAutoCompletion); if (_uiVisualizerService.ShowDialog<EditFilterViewModel>(filterSchemeEditInfo) ?? false) { _filterSchemeManager.UpdateFilters(); ApplyFilter(); } }
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); SelectedFilterScheme = filterScheme; _filterSchemeManager.UpdateFilters(); } }