private bool SetValueOnAutomationIdentification(AutomationIdentifier controlIdentifier, string textValue,
                                                        int ordinal, AutomationIdentifier parentIdentifier)
        {
            var command = new SetValueCommand
                {
                    AutomationIdentifier = controlIdentifier,
                    TextValue = textValue,
                    Ordinal = ordinal,
                    ParentIdentifier = parentIdentifier
                };

            var result = SyncExecuteCommand(command);
            var successResult = result as SuccessResult;
            return successResult != null;
        }
        private bool TryGetValueFromAutomationIdentifier(AutomationIdentifier controlIdentifier, out string value,
                                                         int ordinal, AutomationIdentifier parentIdentifier)
        {
            value = null;
            var command = new GetValueCommand
                {
                    AutomationIdentifier = controlIdentifier,
                    Ordinal = ordinal,
                    ParentIdentifier = parentIdentifier
                };

            var result = SyncExecuteCommand(command);
            var successResult = result as SuccessResult;
            if (successResult == null)
            {
                return false;
            }

            value = successResult.ResultText;
            return true;
        }
        private ProgressValues GetProgressOfAutomationIdentifier(AutomationIdentifier automationIdentifier)
        {
            var command = new GetProgressCommand { AutomationIdentifier = automationIdentifier };
            var result = SyncExecuteCommand(command);
            var progressResult = result as ProgressResult;
            if (progressResult == null)
            {
                // TODO - should log the result here really
                return new ProgressValues();
            }

            return new ProgressValues(
                progressResult.Min,
                progressResult.Max,
                progressResult.Current);
        }
        private bool LookForAutomationIdentifer(AutomationIdentifier controlIdentifier, int ordinal,
                                                AutomationIdentifier parentIdentifier)
        {
            var command = new GetPositionCommand
                {
                    AutomationIdentifier = controlIdentifier,
                    Ordinal = ordinal,
                    ParentIdentifier = parentIdentifier,
                    ReturnEmptyIfNotVisible = true
                };

            var result = SyncLookExecuteCommand(command) as PositionResult;
            if (result == null)
            {
                return false;
            }

            // check that position is not empty
            return result.Width + result.Height > 0.0;
        }
        private RectangleF GetPositionOfAutomationIdentifier(AutomationIdentifier controlIdentifier, int ordinal,
                                                             AutomationIdentifier parentIdentifier)
        {
            var command = new GetPositionCommand
                {
                    AutomationIdentifier = controlIdentifier,
                    Ordinal = ordinal,
                    ParentIdentifier = parentIdentifier
                };

            var result = SyncExecuteCommand(command);
            var positionResult = result as PositionResult;
            if (positionResult == null)
            {
                // TODO - should log the result here really
                return RectangleF.Empty;
            }

            return new RectangleF(
                (float)positionResult.Left,
                (float)positionResult.Top,
                (float)positionResult.Width,
                (float)positionResult.Height);
        }
        private bool TryGetValueFromAutomationIdentifier(AutomationIdentifier automationIdentifier, out string textValue)
        {
            textValue = null;
            var command = new GetValueCommand()
            {
                AutomationIdentifier = automationIdentifier
            };
            var result = SyncExecuteCommand(command);
            var successResult = result as SuccessResult;
            if (successResult == null)
                return false;

            textValue = successResult.ResultText;
            return true;
        }
        private bool SetValueOnAutomationIdentification(AutomationIdentifier automationIdentifier, string textValue)
        {
            var command = new SetValueCommand()
            {
                AutomationIdentifier = automationIdentifier,
                TextValue = textValue
            };

            var result = SyncExecuteCommand(command);
            var successResult = result as SuccessResult;
            return (successResult != null);
        }
 private bool InvokeControlTapActionAutomationIdentifer(AutomationIdentifier automationIdentifier)
 {
     var command = new InvokeControlTapActionCommand()
     {
         AutomationIdentifier = automationIdentifier
     };
     var result = SyncExecuteCommand(command);
     return result is SuccessResult;
 }
        private bool LookForAutomationIdentifer(AutomationIdentifier automationIdentifier)
        {
            var command = new GetPositionCommand() { AutomationIdentifier = automationIdentifier, ReturnEmptyIfNotVisible = true };
            var result = SyncLookExecuteCommand(command) as PositionResult;
            if (result == null)
                return false;

            // check that position is not empty
            return (result.Width + result.Height > 0.0);
        }