/// <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));
        }