private void RemoveOperand() { if (SelectedFilterConfiguration == null || SelectedExpression == null) { return; } if (SelectedExpression.Parent == null) { SelectedFilterConfiguration.Conditions.Root = null; } else { var parent = SelectedExpression.Parent as BooleanOperatorNode; if (parent != null) { ExpressionTreeElement expression; if (SelectedExpression.Equals(parent.Right)) { expression = parent.Left; } else { expression = parent.Right; } if (expression != null) { expression.Parent = parent.Parent; } var isReplace = SelectedFilterConfiguration.Conditions.FindAndReplace(SelectedExpression.Parent, expression); if (!isReplace) { Trace.WriteLine("Cant replace SelectedExpression.Parent"); } } else { Trace.WriteLine("SelectedExpression.Parent [is not BooleanOperatorNode] OR [== null]"); } } if (SelectedFilterConfiguration.Conditions.Root != null) { SelectedFilterConfiguration.Conditions.Root = SelectedFilterConfiguration.Conditions.Root.Clone() as ExpressionTreeNode; } SelectedExpression = null; }
private void AddNode(BooleanOperators type) { if (SelectedFilterConfiguration == null || SelectedExpression == null) { return; } if (SelectedExpression is BooleanOperatorNode && ((BooleanOperatorNode)SelectedExpression).Operator == type) { return; } ExpressionTreeElement left; ExpressionTreeElement right; if (type == BooleanOperators.Not) { left = SelectedExpression.Clone() as ExpressionTreeElement; right = null; } else { left = null; right = SelectedExpression.Clone() as ExpressionTreeElement; } var newNode = new BooleanOperatorNode(SelectedExpression.Parent, left, right, type); var replaceResult = SelectedFilterConfiguration.Conditions.FindAndReplace(SelectedExpression, newNode); if (!replaceResult) { Trace.WriteLine("Cant replace SelectedExpression"); } if (SelectedFilterConfiguration.Conditions.Root != null) { SelectedFilterConfiguration.Conditions.Root = SelectedFilterConfiguration.Conditions.Root.Clone() as ExpressionTreeNode; } }