// </Snippet101> // <Snippet102> ///-------------------------------------------------------------------- /// <summary> /// Obtains a table items primary row or column header. /// </summary> /// <param name="tableItem"> /// The table item of interest. /// </param> /// <returns> /// The table item header. /// </returns> ///-------------------------------------------------------------------- private AutomationElement GetTableItemHeader(TableItemPattern tableItem) { if (tableItem == null) { throw new ArgumentException("Target element cannot be null."); } TablePattern tablePattern = GetTablePattern(tableItem.Current.ContainingGrid); if (tablePattern == null) { return(null); } AutomationElement[] tableHeaders = GetPrimaryHeaders(tablePattern); if (tableHeaders == null) { // Indeterminate headers. return(null); } if (tablePattern.Current.RowOrColumnMajor == RowOrColumnMajor.ColumnMajor) { return(tableHeaders[tableItem.Current.Column]); } if (tablePattern.Current.RowOrColumnMajor == RowOrColumnMajor.RowMajor) { return(tableHeaders[tableItem.Current.Row]); } return(null); }
// </Snippet103> // <Snippet104> ///-------------------------------------------------------------------- /// <summary> /// Gets the current property values from target. /// </summary> /// <param name="tableItemPattern"> /// A TableItemPattern control pattern obtained from /// an AutomationElement representing a target control. /// </param> /// <param name="automationProperty"> /// The automation property of interest. /// </param> /// <returns> /// An object representing the requested integer property value. /// </returns> ///-------------------------------------------------------------------- private object GetTableItemProperties( TableItemPattern tableItemPattern, AutomationProperty automationProperty) { if (automationProperty.Id == TableItemPattern.ColumnProperty.Id) { return(tableItemPattern.Current.Column); } if (automationProperty.Id == TableItemPattern.RowProperty.Id) { return(tableItemPattern.Current.Row); } if (automationProperty.Id == TableItemPattern.ColumnSpanProperty.Id) { return(tableItemPattern.Current.ColumnSpan); } if (automationProperty.Id == TableItemPattern.RowSpanProperty.Id) { return(tableItemPattern.Current.RowSpan); } return(null); }
/// <summary> /// Gets the ordinal number of the row that contains the cell or item. /// </summary> /// <param name="item">The UI Automation element.</param> /// <returns> /// A zero-based ordinal number that identifies the row containing the cell or item /// </returns> internal static int GetRowIndex(AutomationElement item) { /* move to next state */ TableItemPattern pat = (TableItemPattern)CommonUIAPatternHelpers.CheckPatternSupport(TableItemPattern.Pattern, item); return(pat.Current.Row); }
/// <summary> /// Gets a UI Automation provider that implements IGridProvider and represents the container of the cell or item /// </summary> /// <param name="item">The UI Automation element</param> /// <returns> /// A UI Automation provider that implements the GridPattern and represents the cell or item container /// </returns> internal static AutomationElement GetContainingGrid(AutomationElement item) { /* move to next state */ TableItemPattern pat = (TableItemPattern)CommonUIAPatternHelpers.CheckPatternSupport(TableItemPattern.Pattern, item); return(pat.Current.ContainingGrid); }
/// ------------------------------------------------------------------- /// <summary> /// Get the TableItemPattern on the element /// </summary> /// ------------------------------------------------------------------- public TableItemTests(AutomationElement element, TestPriorities priority, string dirResults, bool testEvents, TypeOfControl typeOfControl, IApplicationCommands commands) : base(element, TestSuite, priority, typeOfControl, TypeOfPattern.TableItem, dirResults, testEvents, commands) { m_pattern = (TableItemPattern)GetPattern(m_le, m_useCurrent, TableItemPattern.Pattern); if (m_pattern == null) { throw new Exception(Helpers.PatternNotSupported); } }
public static bool TryGetTableItemPattern(this AutomationElement element, out TableItemPattern result) { if (element.TryGetCurrentPattern(System.Windows.Automation.TableItemPattern.Pattern, out var pattern)) { result = (TableItemPattern)pattern; return(true); } result = null; return(false); }
// </SnippetGetTableElement> // <Snippet101> ///-------------------------------------------------------------------- /// <summary> /// Obtains a TableItemPattern control pattern from an /// AutomationElement. /// </summary> /// <param name="targetControl"> /// The AutomationElement of interest. /// </param> /// <returns> /// A TableItemPattern object. /// </returns> ///-------------------------------------------------------------------- private TableItemPattern GetTableItemPattern( AutomationElement targetControl) { TableItemPattern tableItemPattern = null; try { tableItemPattern = targetControl.GetCurrentPattern( TableItemPattern.Pattern) as TableItemPattern; } // Object doesn't support the // TableItemPattern control pattern catch (InvalidOperationException) { return(null); } return(tableItemPattern); }
public void TablePatternCachedTest() { CacheRequest req = new CacheRequest(); req.Add(TablePattern.Pattern); req.Add(TableItemPattern.Pattern); req.Add(GridPattern.Pattern); req.Add(GridItemPattern.Pattern); req.Add(GridPattern.RowCountProperty); req.Add(GridPattern.ColumnCountProperty); req.Add(GridItemPattern.RowProperty); req.Add(GridItemPattern.ColumnProperty); req.Add(GridItemPattern.ContainingGridProperty); req.Add(TablePattern.RowHeadersProperty); req.Add(TablePattern.ColumnHeadersProperty); req.Add(TableItemPattern.RowHeaderItemsProperty); req.Add(TableItemPattern.ColumnHeaderItemsProperty); using (req.Activate()) { AutomationElement itemsView = ExplorerTargetTests.explorerHost.Element.FindFirst(TreeScope.Subtree, new PropertyCondition(AutomationElement.ClassNameProperty, "UIItemsView")); Assert.IsNotNull(itemsView); // TablePattern test TablePattern table = (TablePattern)itemsView.GetCachedPattern(TablePattern.Pattern); Assert.IsTrue(table.Cached.ColumnCount > 0); Assert.IsTrue(table.Cached.RowCount > 0); Assert.IsTrue(table.Cached.GetRowHeaders().Length == 0); Assert.IsTrue(table.Cached.GetColumnHeaders().Length > 0); AutomationElement tableItemElement = table.GetItem(0, 0); TableItemPattern tableItem = (TableItemPattern)tableItemElement.GetCachedPattern(TableItemPattern.Pattern); Assert.AreEqual(tableItem.Cached.Row, 0); Assert.AreEqual(tableItem.Cached.Column, 0); Assert.AreEqual(tableItem.Cached.ContainingGrid, itemsView); Assert.IsTrue(tableItem.Cached.GetColumnHeaderItems().Length == 1); Assert.IsTrue(tableItem.Cached.GetRowHeaderItems().Length == 0); } }
public void TablePatternTest() { AutomationElement itemsView = ExplorerTargetTests.explorerHost.Element.FindFirst(TreeScope.Subtree, new PropertyCondition(AutomationElement.ClassNameProperty, "UIItemsView")); Assert.IsNotNull(itemsView); // TablePattern test TablePattern table = (TablePattern)itemsView.GetCurrentPattern(TablePattern.Pattern); Assert.IsTrue(table.Current.ColumnCount > 0); Assert.IsTrue(table.Current.RowCount > 0); Assert.IsTrue(table.Current.GetRowHeaders().Length == 0); Assert.IsTrue(table.Current.GetColumnHeaders().Length > 0); AutomationElement tableItemElement = table.GetItem(0, 0); TableItemPattern tableItem = (TableItemPattern)tableItemElement.GetCurrentPattern(TableItemPattern.Pattern); Assert.AreEqual(tableItem.Current.Row, 0); Assert.AreEqual(tableItem.Current.Column, 0); Assert.AreEqual(tableItem.Current.ContainingGrid, itemsView); Assert.IsTrue(tableItem.Current.GetColumnHeaderItems().Length == 1); Assert.IsTrue(tableItem.Current.GetRowHeaderItems().Length == 0); }
// </Snippet102> // <Snippet103> ///-------------------------------------------------------------------- /// <summary> /// Event handler for table item focus change. /// Can be used to track traversal of individual table items /// within a table. /// </summary> /// <param name="src">Object that raised the event.</param> /// <param name="e">Event arguments.</param> ///-------------------------------------------------------------------- private void OnTableItemFocusChange( object src, AutomationFocusChangedEventArgs e) { // Make sure the element still exists. Elements such as tooltips // can disappear before the event is processed. AutomationElement sourceElement; try { sourceElement = src as AutomationElement; } catch (ElementNotAvailableException) { return; } // Get a TableItemPattern from the source of the event. TableItemPattern tableItemPattern = GetTableItemPattern(sourceElement); if (tableItemPattern == null) { return; } // Get a TablePattern from the container of the current element. TablePattern tablePattern = GetTablePattern(tableItemPattern.Current.ContainingGrid); if (tablePattern == null) { return; } AutomationElement tableItem = null; try { tableItem = tablePattern.GetItem( tableItemPattern.Current.Row, tableItemPattern.Current.Column); } catch (ArgumentOutOfRangeException) { // If the requested row coordinate is larger than the RowCount // or the column coordinate is larger than the ColumnCount. // -- OR -- // If either of the requested row or column coordinates // is less than zero. // TO DO: error handling. } // Further event processing can be done at this point. // For the purposes of this sample we can just record item properties. string controlType = tableItem.Current.ControlType.LocalizedControlType; AutomationElement[] columnHeaders = tableItemPattern.Current.GetColumnHeaderItems(); AutomationElement[] rowHeaders = tableItemPattern.Current.GetRowHeaderItems(); int itemRow = tableItemPattern.Current.Row; int itemColumn = tableItemPattern.Current.Column; int itemRowSpan = tableItemPattern.Current.RowSpan; int itemColumnSpan = tableItemPattern.Current.ColumnSpan; }
/// <summary> /// Retrieves a collection of UI Automation providers representing all the row headers associated with a table item or cell /// </summary> /// <param name="control">The UI Automation element</param> /// <returns> /// A collection of UI Automation providers /// </returns> internal static AutomationElement[] GetRowHeaderItems(AutomationElement control) { TableItemPattern pat = (TableItemPattern)CommonUIAPatternHelpers.CheckPatternSupport(TableItemPattern.Pattern, control); return(pat.Current.GetRowHeaderItems()); }
public TableItemPatternPropertyObject(TableItemPattern pattern) { this._pattern = pattern; }