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