Esempio n. 1
0
        public override bool DeleteChild(Expression child)
        {
            bool       result = SecondExpression.Remove(child) || FirstExpression.Remove(child);
            Expression aux    = AddAuxiliary();

            Caret.Instance.SetActiveExpression(aux, ExpressionSide.Left);
            return(result);
        }
Esempio n. 2
0
        public override void AddExpression(Expression activeExpression, Expression expressionToBeAdded)
        {
            int activeIndex = SecondExpression.IndexOf(activeExpression);

            if (activeIndex >= 0)
            {
                if (Caret.Instance.ExpressionSide == ExpressionSide.Right)
                {
                    activeIndex++;
                }
                SecondExpression.Insert(activeIndex, expressionToBeAdded);

                // remove auxiliary
                if (activeExpression is Auxiliary)
                {
                    SecondExpression.Remove(activeExpression);
                }

                base.UpdateChildrensBottomMargin(SecondExpression);
                return;
            }

            activeIndex = FirstExpression.IndexOf(activeExpression);
            if (activeIndex >= 0)
            {
                if (Caret.Instance.ExpressionSide == ExpressionSide.Right)
                {
                    activeIndex++;
                }
                FirstExpression.Insert(activeIndex, expressionToBeAdded);

                // remove auxiliary
                if (activeExpression is Auxiliary)
                {
                    FirstExpression.Remove(activeExpression);
                }

                base.UpdateChildrensBottomMargin(FirstExpression);
                return;
            }
            throw new KeyNotFoundException("Active expression wasn't found therefore a new expression couldn't be added.");
        }