public static void SetSelectedItems(IntPtr controlHandle, Collection <string> items)
        {
            try
            {
                CommonUIAPatternHelpers.Prologue(SelectionPattern.Pattern, controlHandle);
                if (!CanSelectMultiple(controlHandle))
                {
                    return;
                }

                foreach (string item in items)
                {
                    AddToSelection(controlHandle, item);
                }
                List <object>       itemList = new List <object>(items);
                Collection <object> retList  = new Collection <object>(itemList);
                LogController.ReceiveLogMessage(new LogMessage("List items Selected: ", retList));
            }
            catch (InvalidOperationException)
            {
                /* Call native function */
                foreach (string item in items)
                {
                    ProdListBoxNative.AddSelectedItemNative(controlHandle, item);
                }
            }
            catch (ElementNotAvailableException err)
            {
                throw new ProdOperationException(err.Message, err);
            }
            catch (ArgumentException err)
            {
                throw new ProdOperationException(err.Message, err);
            }
        }
Beispiel #2
0
        /// <summary>
        /// Gets the value of the current slider control
        /// </summary>
        /// <param name="controlHandle">NativeWindowHandle to the target control</param>
        /// <returns>
        /// Value of the control
        /// </returns>
        /// <exception cref="ProdOperationException">Examine inner exception</exception>
        /// <remarks>
        /// Invalid for WPF controls
        /// </remarks>
        public static double SliderGetValue(IntPtr controlHandle)
        {
            try
            {
                AutomationElement control = CommonUIAPatternHelpers.Prologue(RangeValuePattern.Pattern, controlHandle);
                StaticEvents.RegisterEvent(RangeValuePattern.ValueProperty, control);
                double retVal = RangeValuePatternHelper.GetValue(control);

                if (retVal == -1)
                {
                    ProdSliderNative.GetValueNative(controlHandle);
                }

                LogController.ReceiveLogMessage(new LogMessage(control.Current.Name + " Value: " + retVal));
                return(retVal);
            }
            catch (InvalidOperationException err)
            {
                throw new ProdOperationException(err.Message, err);
            }
            catch (ElementNotAvailableException err)
            {
                throw new ProdOperationException(err.Message, err);
            }
            catch (ArgumentException err)
            {
                throw new ProdOperationException(err.Message, err);
            }
        }
        public static ToggleState GetCheckState(IntPtr controlHandle)
        {
            try
            {
                AutomationElement control = CommonUIAPatternHelpers.Prologue(TogglePattern.Pattern, controlHandle);
                StaticEvents.RegisterEvent(TogglePattern.ToggleStateProperty, control);

                ToggleState ret = TogglePatternHelper.GetToggleState(control);
                if (ret == ToggleState.Indeterminate)
                {
                    /* Otherwise, retry with native method */
                    ret = ProdCheckBoxNative.GetCheckStateNative(controlHandle);
                }

                LogController.ReceiveLogMessage(new LogMessage(control.Current.Name));

                return(ret);
            }
            catch (InvalidOperationException err)
            {
                throw new ProdOperationException(err.Message, err);
            }
            catch (ElementNotAvailableException err)
            {
                throw new ProdOperationException(err.Message, err);
            }
            catch (ArgumentException err)
            {
                throw new ProdOperationException(err.Message, err);
            }
        }
        /// <summary>
        /// Determines whether the specified index is selected.
        /// </summary>
        /// <param name="controlHandle">The control handle.</param>
        /// <param name="index">The zero-based index of the tab to select.</param>
        /// <returns>
        ///   <c>true</c> if the specified index is selected; otherwise, <c>false</c>.
        /// </returns>
        ///<exception cref="ProdOperationException">Examine inner exception</exception>
        public static bool TabIsSelected(IntPtr controlHandle, int index)
        {
            bool ret;

            try
            {
                AutomationElement   control = CommonUIAPatternHelpers.Prologue(SelectionPattern.Pattern, controlHandle);
                AutomationElement[] element = SelectionPatternHelper.GetSelection(control);
                int retVal = SelectionItemPatternHelper.FindIndexByItem(control, element[0].Current.Name);

                ret = (retVal == index);
                LogController.ReceiveLogMessage(new LogMessage(ret.ToString()));
                return(ret);
            }
            catch (InvalidOperationException err)
            {
                throw new ProdOperationException(err.Message, err);
            }
            catch (ElementNotAvailableException err)
            {
                throw new ProdOperationException(err.Message, err);
            }
            catch (ArgumentException err)
            {
                throw new ProdOperationException(err.Message, err);
            }
        }
        public static Collection <object> GetSelectedIndexes(IntPtr controlHandle)
        {
            if (!CanSelectMultiple(controlHandle))
            {
                return(null);
            }

            try
            {
                AutomationElement control = CommonUIAPatternHelpers.Prologue(SelectionPattern.Pattern, controlHandle);

                AutomationElement[] selectedItems = SelectionPatternHelper.GetSelection(control);
                Collection <object> retList       = new Collection <object>(selectedItems);

                LogController.ReceiveLogMessage(new LogMessage("List selected items: ", retList));

                return(retList);
            }
            catch (InvalidOperationException err)
            {
                throw new ProdOperationException(err.Message, err);
            }
            catch (ElementNotAvailableException err)
            {
                throw new ProdOperationException(err.Message, err);
            }
            catch (ArgumentException err)
            {
                throw new ProdOperationException(err.Message, err);
            }
        }
        public static void AddToSelection(IntPtr controlHandle, int index)
        {
            try
            {
                AutomationElement control = CommonUIAPatternHelpers.Prologue(SelectionPattern.Pattern, controlHandle);

                StaticEvents.RegisterEvent(SelectionItemPattern.ElementAddedToSelectionEvent, control);
                SelectionItemPatternHelper.AddToSelection(control, index);

                LogController.ReceiveLogMessage(new LogMessage(control.Current.Name));
            }
            catch (InvalidOperationException)
            {
                /* Call native function */
                ProdListBoxNative.AddSelectedItemNative(controlHandle, index);
            }
            catch (ElementNotAvailableException err)
            {
                throw new ProdOperationException(err.Message, err);
            }
            catch (ArgumentException err)
            {
                throw new ProdOperationException(err.Message, err);
            }
        }
        public static void DeselectItem(IntPtr controlHandle, string itemText)
        {
            try
            {
                AutomationElement control      = CommonUIAPatternHelpers.Prologue(SelectionPattern.Pattern, controlHandle);
                AutomationElement itemToSelect = SelectionItemPatternHelper.FindItemByText(control, itemText);

                StaticEvents.RegisterEvent(SelectionItemPattern.ElementRemovedFromSelectionEvent, control);
                SelectionItemPatternHelper.RemoveFromSelection(itemToSelect);

                LogController.ReceiveLogMessage(new LogMessage("List Item deselected: " + itemText));
            }
            catch (InvalidOperationException)
            {
                /* Call native function */
                ProdListBoxNative.DeSelectItemNative(controlHandle, itemText);
            }
            catch (ElementNotAvailableException err)
            {
                throw new ProdOperationException(err.Message, err);
            }
            catch (ArgumentException err)
            {
                throw new ProdOperationException(err.Message, err);
            }
        }
        public static AutomationElement GetSelectedItem(IntPtr controlHandle)
        {
            try
            {
                AutomationElement   control = CommonUIAPatternHelpers.Prologue(SelectionPattern.Pattern, controlHandle);
                AutomationElement[] retVal  = SelectionPatternHelper.GetSelection(control);

                AutomationElement ret = retVal[0];
                if (ret == null)
                {
                    throw new ProdOperationException("Unable to select Item");
                }

                LogController.ReceiveLogMessage(new LogMessage(control.Current.Name));
                return(ret);
            }
            catch (InvalidOperationException err)
            {
                throw new ProdOperationException(err.Message, err);
            }
            catch (ElementNotAvailableException err)
            {
                throw new ProdOperationException(err.Message, err);
            }
            catch (ArgumentException err)
            {
                throw new ProdOperationException(err.Message, err);
            }
        }
        public static void SetSelectedItem(IntPtr controlHandle, string itemText)
        {
            try
            {
                AutomationElement control = CommonUIAPatternHelpers.Prologue(SelectionPattern.Pattern, controlHandle);
                StaticEvents.RegisterEvent(SelectionItemPattern.ElementSelectedEvent, control);

                AutomationElement indexedItem = SelectionItemPatternHelper.FindItemByText(control, itemText);
                SelectionItemPatternHelper.SelectItem(indexedItem);

                LogController.ReceiveLogMessage(new LogMessage(itemText));
            }
            catch (InvalidOperationException)
            {
                ProdListBoxNative.SelectItemNative(controlHandle, itemText);
            }
            catch (ElementNotAvailableException err)
            {
                throw new ProdOperationException(err.Message, err);
            }
            catch (ArgumentException err)
            {
                throw new ProdOperationException(err.Message, err);
            }
        }
        public static void TabSelect(IntPtr controlHandle, int index)
        {
            try
            {
                AutomationElement           control = CommonUIAPatternHelpers.Prologue(SelectionPattern.Pattern, controlHandle);
                AutomationElementCollection aec     = SelectionItemPatternHelper.GetListItems(control);

                /* When using the GetListItems() methods, item index 0 is the tab control itself, so add on to get to correct TabItem */
                if (index >= int.MaxValue)
                {
                    throw new ProdOperationException("input must be less than Int32.MaxValue");
                }

                int    adjustedIndex = index + 1;
                string itemText      = aec[adjustedIndex].Current.Name;

                StaticEvents.RegisterEvent(SelectionItemPattern.ElementSelectedEvent, control);
                SelectionItemPatternHelper.SelectItem(SelectionItemPatternHelper.FindItemByText(control, itemText));

                LogController.ReceiveLogMessage(new LogMessage(control.Current.Name));
            }
            catch (InvalidOperationException)
            {
                /* Call native function */
                ProdTabNative.SetSelectedTab(controlHandle, index);
            }
            catch (ElementNotAvailableException err)
            {
                throw new ProdOperationException(err.Message, err);
            }
            catch (ArgumentException err)
            {
                throw new ProdOperationException(err.Message, err);
            }
        }
 public static int GetSelectedIndex(IntPtr controlHandle)
 {
     try
     {
         AutomationElement   control = CommonUIAPatternHelpers.Prologue(SelectionPattern.Pattern, controlHandle);
         AutomationElement[] element = SelectionPatternHelper.GetSelection(control);
         int ret = SelectionItemPatternHelper.FindIndexByItem(control, element[0].Current.Name);
         if (ret == -1)
         {
             /* Call native function */
             ret = ProdListBoxNative.GetSelectedIndexNative(controlHandle);
         }
         LogController.ReceiveLogMessage(new LogMessage(ret.ToString(CultureInfo.InvariantCulture)));
         return(ret);
     }
     catch (InvalidOperationException err)
     {
         throw new ProdOperationException(err.Message, err);
     }
     catch (ElementNotAvailableException err)
     {
         throw new ProdOperationException(err.Message, err);
     }
     catch (ArgumentException err)
     {
         throw new ProdOperationException(err.Message, err);
     }
 }
        public static int GetItemCount(IntPtr controlHandle)
        {
            try
            {
                AutomationElement control = CommonUIAPatternHelpers.Prologue(SelectionPattern.Pattern, controlHandle);
                int ret = SelectionItemPatternHelper.GetListItemCount(control);

                if (ret == -1)
                {
                    if (control.Current.ControlType == ControlType.ComboBox)
                    {
                        ProdComboBoxNative.GetItemCountNative(controlHandle);
                    }
                    else
                    {
                        ProdListBoxNative.GetItemCountNative(controlHandle);
                    }
                }

                LogController.ReceiveLogMessage(new LogMessage(ret.ToString(CultureInfo.InvariantCulture)));
                return(ret);
            }
            catch (InvalidOperationException err)
            {
                throw new ProdOperationException(err.Message, err);
            }
            catch (ElementNotAvailableException err)
            {
                throw new ProdOperationException(err.Message, err);
            }
            catch (ArgumentException err)
            {
                throw new ProdOperationException(err.Message, err);
            }
        }
        public static Collection <object> GetItems(IntPtr controlHandle)
        {
            try
            {
                AutomationElement           control = CommonUIAPatternHelpers.Prologue(SelectionPattern.Pattern, controlHandle);
                AutomationElementCollection convRet = SelectionItemPatternHelper.GetListItems(control);

                Collection <object> ret = InternalUtilities.AutomationCollToObjectList(convRet);

                if (ret == null)
                {
                    ProdListBoxNative.GetItemsNative(controlHandle);
                }

                LogController.ReceiveLogMessage(new LogMessage(control.Current.Name, ret));
                return(ret);
            }
            catch (InvalidOperationException err)
            {
                throw new ProdOperationException(err.Message, err);
            }
            catch (ElementNotAvailableException err)
            {
                throw new ProdOperationException(err.Message, err);
            }
            catch (ArgumentException err)
            {
                throw new ProdOperationException(err.Message, err);
            }
        }
        /// <summary>
        /// Gets the number of child tabs contained in the tab control
        /// </summary>
        /// <param name="controlHandle">The target controls handle.</param>
        /// <returns>
        /// The number of tabs in a TabControl
        /// </returns>
        /// <exception cref="ProdOperationException">Examine inner exception</exception>
        public static int TabGetCount(IntPtr controlHandle)
        {
            try
            {
                AutomationElement control = CommonUIAPatternHelpers.Prologue(SelectionPattern.Pattern, controlHandle);
                int retVal = SelectionItemPatternHelper.GetListItemCount(control);

                if (retVal == -1)
                {
                    ProdTabNative.GetTabCount(controlHandle);
                }
                LogController.ReceiveLogMessage(new LogMessage(retVal.ToString(CultureInfo.CurrentCulture)));
                return(retVal);
            }
            catch (InvalidOperationException err)
            {
                throw new ProdOperationException(err.Message, err);
            }
            catch (ElementNotAvailableException err)
            {
                throw new ProdOperationException(err.Message, err);
            }
            catch (ArgumentException err)
            {
                throw new ProdOperationException(err.Message, err);
            }
        }
        public static void SetSelectedIndexes(IntPtr controlHandle, Collection <int> indexes)
        {
            if (!CanSelectMultiple(controlHandle))
            {
                return;
            }

            try
            {
                AutomationElement control = CommonUIAPatternHelpers.Prologue(SelectionPattern.Pattern, controlHandle);
                if (!CanSelectMultiple((IntPtr)control.Current.NativeWindowHandle))
                {
                    return;
                }

                foreach (int index in indexes)
                {
                    AddToSelection(controlHandle, index);
                }

                Collection <object> retList = new Collection <object> {
                    indexes
                };
                LogController.ReceiveLogMessage(new LogMessage("List items Selected: ", retList));
            }
            catch (InvalidOperationException)
            {
                /* Call native function */
                foreach (int item in indexes)
                {
                    ProdListBoxNative.AddSelectedItemNative(controlHandle, item);
                }
            }
            catch (ElementNotAvailableException err)
            {
                throw new ProdOperationException(err.Message, err);
            }
            catch (ArgumentException err)
            {
                throw new ProdOperationException(err.Message, err);
            }
        }
        public static int SelectedItemCount(IntPtr controlHandle)
        {
            try
            {
                AutomationElement control = CommonUIAPatternHelpers.Prologue(SelectionPattern.Pattern, controlHandle);
                if (!SelectionPatternHelper.CanSelectMultiple(control))
                {
                    return(-1);
                }

                AutomationElement[] selectedItems = SelectionPatternHelper.GetSelection(control);

                if (selectedItems == null)
                {
                    if (CanSelectMultiple(controlHandle))
                    {
                        /* Call native function */
                        return(ProdListBoxNative.GetSelectedItemCountNative(controlHandle));
                    }
                }

                if (selectedItems == null)
                {
                    return(-1);
                }
                LogController.ReceiveLogMessage(new LogMessage("List selection count: " + selectedItems.Length));
                return(selectedItems.Length);
            }
            catch (InvalidOperationException err)
            {
                throw new ProdOperationException(err.Message, err);
            }
            catch (ElementNotAvailableException err)
            {
                throw new ProdOperationException(err.Message, err);
            }
            catch (ArgumentException err)
            {
                throw new ProdOperationException(err.Message, err);
            }
        }
 public static bool CanSelectMultiple(IntPtr controlHandle)
 {
     try
     {
         AutomationElement control = CommonUIAPatternHelpers.Prologue(SelectionPattern.Pattern, controlHandle);
         LogController.ReceiveLogMessage(new LogMessage(control.Current.Name));
         return(SelectionPatternHelper.CanSelectMultiple(control));
     }
     catch (InvalidOperationException err)
     {
         throw new ProdOperationException(err.Message, err);
     }
     catch (ElementNotAvailableException err)
     {
         throw new ProdOperationException(err.Message, err);
     }
     catch (ArgumentException err)
     {
         throw new ProdOperationException(err.Message, err);
     }
 }
Beispiel #18
0
 public static bool GetRadioState(IntPtr controlHandle)
 {
     try
     {
         AutomationElement control = CommonUIAPatternHelpers.Prologue(SelectionPattern.Pattern, controlHandle);
         bool ret = (TogglePatternHelper.GetToggleState(control) == ToggleState.On);
         LogController.ReceiveLogMessage(new LogMessage(control.Current.Name));
         return(ret);
     }
     catch (InvalidOperationException err)
     {
         throw new ProdOperationException(err.Message, err);
     }
     catch (ElementNotAvailableException err)
     {
         throw new ProdOperationException(err.Message, err);
     }
     catch (ArgumentException err)
     {
         throw new ProdOperationException(err.Message, err);
     }
 }
 /// <summary>
 /// Gets a collection of all items in the list control
 /// </summary>
 /// <param name="controlHandle">The target controls handle.</param>
 /// <returns>
 /// list containing all items
 /// </returns>
 /// <exception cref="ProdOperationException">Examine inner exception</exception>
 public static Collection <object> TabsGet(IntPtr controlHandle)
 {
     try
     {
         AutomationElement           control = CommonUIAPatternHelpers.Prologue(SelectionPattern.Pattern, controlHandle);
         AutomationElementCollection aec     = SelectionItemPatternHelper.GetListItems(control);
         LogController.ReceiveLogMessage(new LogMessage(control.Current.Name));
         return(InternalUtilities.AutomationCollToObjectList(aec));
     }
     catch (InvalidOperationException err)
     {
         throw new ProdOperationException(err.Message, err);
     }
     catch (ElementNotAvailableException err)
     {
         throw new ProdOperationException(err.Message, err);
     }
     catch (ArgumentException err)
     {
         throw new ProdOperationException(err.Message, err);
     }
 }
Beispiel #20
0
 /// <summary>
 /// Performs a "Click" on the specified static ProdButton
 /// </summary>
 /// <param name="controlHandle">NativeWindowHandle of the target control</param>
 /// <exception cref="ProdOperationException">Examine inner exception</exception>
 /// <remarks>
 /// This overload is invalid for WPF controls
 /// </remarks>
 public static void ButtonClick(IntPtr controlHandle)
 {
     try
     {
         AutomationElement control = CommonUIAPatternHelpers.Prologue(InvokePattern.Pattern, controlHandle);
         StaticEvents.RegisterEvent(InvokePattern.InvokedEvent, control);
         InvokePatternHelper.Invoke(control);
         LogController.ReceiveLogMessage(new LogMessage(control.Current.Name));
     }
     catch (InvalidOperationException err)
     {
         throw new ProdOperationException(err.Message, err);
     }
     catch (ElementNotAvailableException err)
     {
         throw new ProdOperationException(err.Message, err);
     }
     catch (ArgumentException err)
     {
         throw new ProdOperationException(err.Message, err);
     }
 }
Beispiel #21
0
        /// <summary>
        /// Expands the menu item.
        /// </summary>
        /// <param name="menuItems">The menu items.</param>
        /// <param name="itemPath">The item path.</param>
        private static void ExpandMenuItem(AutomationElementCollection menuItems, string[] itemPath)
        {
            foreach (AutomationElement item in menuItems)
            {
                /* Expand top menu */
                try
                {
                    string name = item.Current.Name;
                    if (string.Compare(name, itemPath[_ctr], true, CultureInfo.CurrentCulture) != 0)
                    {
                        continue;
                    }

                    if (CommonUIAPatternHelpers.CheckPatternSupport(ExpandCollapsePattern.Pattern, item) != null)
                    {
                        ExpandCollapseHelper.Expand(item);

                        AutomationElementCollection items = GetChildMenuItems(item);
                        _ctr++;
                        ExpandMenuItem(items, itemPath);
                    }

                    if (CommonUIAPatternHelpers.CheckPatternSupport(InvokePattern.Pattern, item) == null)
                    {
                        return;
                    }
                    InvokePatternHelper.Invoke(item);
                }
                catch (InvalidOperationException err)
                {
                    throw new ProdOperationException(err.Message, err);
                }
                catch (ElementNotAvailableException err)
                {
                    throw new ProdOperationException(err.Message, err);
                }
            }
        }
Beispiel #22
0
        /// <summary>
        /// Set value of control
        /// </summary>
        /// <param name="controlHandle">NativeWindowHandle to the target control</param>
        /// <param name="value">The value to set the slider to.</param>
        /// <exception cref="ProdOperationException">Examine inner exception</exception>
        /// <remarks>
        /// Invalid for WPF controls
        /// </remarks>
        public static void SliderSetValue(IntPtr controlHandle, double value)
        {
            try
            {
                AutomationElement control = CommonUIAPatternHelpers.Prologue(RangeValuePattern.Pattern, controlHandle);
                StaticEvents.RegisterEvent(RangeValuePattern.ValueProperty, control);

                RangeValuePatternHelper.SetValue(control, value);
                LogController.ReceiveLogMessage(new LogMessage(control.Current.Name));
            }
            catch (InvalidOperationException err)
            {
                throw new ProdOperationException(err.Message, err);
            }
            catch (ElementNotAvailableException err)
            {
                throw new ProdOperationException(err.Message, err);
            }
            catch (ArgumentException err)
            {
                throw new ProdOperationException(err.Message, err);
            }
        }
 /// <summary>
 /// Determines whether the specified item text is selected.
 /// </summary>
 /// <param name="controlHandle">The control handle.</param>
 /// <param name="itemText">The item text.</param>
 /// <returns>
 ///   <c>true</c> if the specified item text is selected; otherwise, <c>false</c>.
 /// </returns>
 /// <exception cref="ProdOperationException">Examine inner exception</exception>
 public static bool TabIsSelected(IntPtr controlHandle, string itemText)
 {
     try
     {
         AutomationElement   control = CommonUIAPatternHelpers.Prologue(SelectionPattern.Pattern, controlHandle);
         AutomationElement[] element = SelectionPatternHelper.GetSelection(control);
         bool retVal = (SelectionItemPatternHelper.FindItemByText(control, itemText).Current.FrameworkId == element[0].Current.FrameworkId);
         LogController.ReceiveLogMessage(new LogMessage(retVal.ToString()));
         return(retVal);
     }
     catch (InvalidOperationException err)
     {
         throw new ProdOperationException(err.Message, err);
     }
     catch (ElementNotAvailableException err)
     {
         throw new ProdOperationException(err.Message, err);
     }
     catch (ArgumentException err)
     {
         throw new ProdOperationException(err.Message, err);
     }
 }
        public static void ToggleCheckState(IntPtr controlHandle)
        {
            try
            {
                AutomationElement control = CommonUIAPatternHelpers.Prologue(TogglePattern.Pattern, controlHandle);
                StaticEvents.RegisterEvent(TogglePattern.ToggleStateProperty, control);

                TogglePatternHelper.Toggle(AutomationElement.FromHandle(controlHandle));

                LogController.ReceiveLogMessage(new LogMessage(control.Current.Name));
            }
            catch (InvalidOperationException err)
            {
                throw new ProdOperationException(err.Message, err);
            }
            catch (ElementNotAvailableException err)
            {
                throw new ProdOperationException(err.Message, err);
            }
            catch (ArgumentException err)
            {
                throw new ProdOperationException(err.Message, err);
            }
        }
Beispiel #25
0
        public static void SelectRadio(IntPtr controlHandle)
        {
            try
            {
                AutomationElement control = CommonUIAPatternHelpers.Prologue(SelectionPattern.Pattern, controlHandle);
                StaticEvents.RegisterEvent(SelectionItemPattern.ElementSelectedEvent, control);

                TogglePatternHelper.SetToggleState(control, ToggleState.On);

                LogController.ReceiveLogMessage(new LogMessage(control.Current.Name));
            }
            catch (InvalidOperationException err)
            {
                throw new ProdOperationException(err.Message, err);
            }
            catch (ElementNotAvailableException err)
            {
                throw new ProdOperationException(err.Message, err);
            }
            catch (ArgumentException err)
            {
                throw new ProdOperationException(err.Message, err);
            }
        }
        /// <summary>
        ///     Scrolls the content area of a container object in order to display the control within the visible region (viewport) of the container.
        /// </summary>
        /// <param name = "control">The UI Automation element</param>
        /// <remarks>
        ///     This method does not provide the ability to specify the position of the control within the visible region (viewport) of the container
        /// </remarks>
        internal static void ScrollIntoView(AutomationElement control)
        {
            ScrollItemPattern pat = (ScrollItemPattern)CommonUIAPatternHelpers.CheckPatternSupport(ScrollItemPattern.Pattern, control);

            pat.ScrollIntoView();
        }