/// <summary> /// Sets operator depending on pressed button. /// </summary> private void SetOperation(object sender, RoutedEventArgs e) { string buttonText = (sender as Button).Content.ToString(); OperatorType operation = InputValidator.ConvertToOperatorType(buttonText); if (operationExecutor.State == ExecutorState.Error) { return; } if (operationExecutor.State == ExecutorState.SecondOperandInput) { CalculateResult(sender, e); } if (operationExecutor.State == ExecutorState.FirstOperandInput) { operationExecutor.FirstOperand = inputValidator.getInput(); } if (operationExecutor.State == ExecutorState.ResultCalculated) { operationExecutor.SecondOperand = null; operationExecutor.State = ExecutorState.OperatorGot; } operationExecutor.Operator = operation; if (operation == OperatorType.Inversion || operation == OperatorType.SquareRoot) { CalculateResult(sender, e); return; } SetSecondaryOutput(outputFormatter.MakeTempExpression(operationExecutor.FirstOperand, operationExecutor.SecondOperand, operationExecutor.Operator)); }