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); }
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."); }