void Initialize(IFactory <I> itemFactory) { Validate.ArgumentNotNull(parameter: itemFactory, parameterName: nameof(itemFactory)); ItemFactory = itemFactory; MultipleViewProvider = new MultipleViewImplementation(uiObject: this); ItemContainerProvider = new ItemContainerImplementation(uiObject: this); SelectionProvider = new SelectionImplementation <I>(uiObject: this, itemFactory: itemFactory); TableProvider = new TableImplementation <I>(uiObject: this, itemFactory: itemFactory); }
public override IEnumerator <AutomationElement> GetEnumerator() { var childrenNavigator = this; var icPattern = new ItemContainerImplementation(uiObject: new UIObject(element: childrenNavigator._root)); UIObject current = null; var flag = false; if (childrenNavigator.Filter.UICondition.Condition == Condition.TrueCondition) { for (current = icPattern.FindItemByProperty(uiObject: current, uiProperty: UIProperty.Get(property: AutomationElement.SearchVirtualItemsProperty), value: null); current != (UIObject)null; current = icPattern.FindItemByProperty(uiObject: current, uiProperty: UIProperty.Get(property: AutomationElement.SearchVirtualItemsProperty), value: null)) { if (childrenNavigator._autoRealize) { Realize(uiObject: current); } yield return(current.AutomationElement); } } else { var propertyCondition = childrenNavigator.GetPropertyConditionFromFilter(); if (propertyCondition == null) { for (current = icPattern.FindItemByProperty(uiObject: current, uiProperty: UIProperty.Get(property: AutomationElement.SearchVirtualItemsProperty), value: null); current != (UIObject)null; current = icPattern.FindItemByProperty(uiObject: current, uiProperty: UIProperty.Get(property: AutomationElement.SearchVirtualItemsProperty), value: null)) { if (childrenNavigator._autoRealize) { Realize(uiObject: current); } if (childrenNavigator.Filter.Matches(element: current.AutomationElement)) { yield return(current.AutomationElement); } } } else { var property = propertyCondition.Property; try { current = icPattern.FindItemByProperty(uiObject: current, uiProperty: UIProperty.Get(property: property), value: propertyCondition.Value); } catch (COMException ex) { if (ex.HResult == -2147467259) { flag = true; } } if (flag) { for (current = icPattern.FindItemByProperty(uiObject: current, uiProperty: UIProperty.Get(property: AutomationElement.SearchVirtualItemsProperty), value: null); current != (UIObject)null; current = icPattern.FindItemByProperty(uiObject: current, uiProperty: UIProperty.Get(property: AutomationElement.SearchVirtualItemsProperty), value: null)) { if (childrenNavigator._autoRealize) { Realize(uiObject: current); } if (childrenNavigator.Filter.Matches(element: current.AutomationElement)) { yield return(current.AutomationElement); } } } else { current = null; for (current = icPattern.FindItemByProperty(uiObject: current, uiProperty: UIProperty.Get(property: property), value: propertyCondition.Value); current != (UIObject)null; current = icPattern.FindItemByProperty(uiObject: current, uiProperty: UIProperty.Get(property: property), value: propertyCondition.Value)) { if (childrenNavigator._autoRealize) { Realize(uiObject: current); } yield return(current.AutomationElement); } } property = null; } propertyCondition = null; } }