Exemplo n.º 1
0
        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;
        }
Exemplo n.º 2
0
        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;
            }
        }