示例#1
0
文件: MenuItem.cs 项目: mono/uia2atk
		public MenuItem (IRawElementProviderSimple provider) : base (provider)
		{
			if (provider == null)
				throw new ArgumentNullException ("provider");

			if ((provider as IRawElementProviderFragment) == null)
				throw new ArgumentException ("Provider for ParentMenu should be IRawElementProviderFragment");

			textExpert = TextImplementorFactory.GetImplementor (this, provider);

			Role = Atk.Role.MenuItem;

			string name = (string) provider.GetPropertyValue (AutomationElementIdentifiers.NameProperty.Id);
			if (!String.IsNullOrEmpty (name))
				Name = name;

			invokeProvider = (IInvokeProvider)
				provider.GetPatternProvider (InvokePatternIdentifiers.Pattern.Id);
			toggleProvider = (IToggleProvider)
				provider.GetPatternProvider (TogglePatternIdentifiers.Pattern.Id);
			selectionItemProvider = (ISelectionItemProvider)
				provider.GetPatternProvider (SelectionItemPatternIdentifiers.Pattern.Id);
			expandCollapseProvider = (IExpandCollapseProvider)
				provider.GetPatternProvider (ExpandCollapsePatternIdentifiers.Pattern.Id);

			actionExpert.Add ("click", "click", null, DoClick);
		}
示例#2
0
文件: TreeItem.cs 项目: mono/uia2atk
		public TreeItem (IRawElementProviderSimple provider) : base (provider)
		{
			invokeProvider = (IInvokeProvider)provider.GetPatternProvider(InvokePatternIdentifiers.Pattern.Id);
			selectionItemProvider = (ISelectionItemProvider)provider.GetPatternProvider(SelectionItemPatternIdentifiers.Pattern.Id);

			expandCollapseProvider = provider.GetPatternProvider (
				ExpandCollapsePatternIdentifiers.Pattern.Id) as IExpandCollapseProvider;

			textExpert = TextImplementorFactory.GetImplementor (this, provider);
			actionExpert = new ActionImplementorHelper ();

			// TODO: Localize the name?s
			actionExpert.Add ("click", "click", null, DoClick);
			if (ToggleProvider != null)
				actionExpert.Add ("toggle", "toggle", null, DoToggle);
			if (invokeProvider != null)
				actionExpert.Add ("invoke", "invoke", null, DoInvoke);

			IRawElementProviderFragment fragment = Provider as IRawElementProviderFragment;
			if (fragment != null && fragment.Navigate (NavigateDirection.FirstChild) != null)
				AddExpandContractAction ();

			Role = (ToggleProvider != null? Atk.Role.CheckBox: Atk.Role.TableCell);

			imageExpert = new ImageImplementorHelper (this);
			editableTextExpert = new EditableTextImplementorHelper (this, this, textExpert);
		}
示例#3
0
文件: Spinner.cs 项目: mono/uia2atk
		public Spinner (IRawElementProviderSimple provider) : base (provider)
		{
			Role = Atk.Role.SpinButton;
			rangeValueProvider = (IRangeValueProvider)provider.GetPatternProvider (RangeValuePatternIdentifiers.Pattern.Id);
			
			editableRange
				= provider.GetPatternProvider (EditableRangePatternIdentifiers.Pattern.Id) as IEditableRangeProvider;

			valueProvider = (IValueProvider)provider.GetPatternProvider (ValuePatternIdentifiers.Pattern.Id);
			textExpert = TextImplementorFactory.GetImplementor (this, provider);
			oldText = textExpert.Text;
		}
示例#4
0
		public ExpandCollapseButton (IRawElementProviderSimple provider) : base (provider)
		{
			ec_prov = (IExpandCollapseProvider)provider.GetPatternProvider (
				ExpandCollapsePatternIdentifiers.Pattern.Id);

			Role = Atk.Role.ToggleButton;
		}
示例#5
0
文件: Slider.cs 项目: mono/uia2atk
		public Slider (IRawElementProviderSimple provider) : base (provider)
		{
			Role = Atk.Role.Slider;
			rangeValueProvider = (IRangeValueProvider)provider.GetPatternProvider (RangeValuePatternIdentifiers.Pattern.Id);
			textExpert = TextImplementorFactory.GetImplementor (this, provider);
			oldText = textExpert.Text;
		}
示例#6
0
文件: Window.cs 项目: mono/uia2atk
		public Window (IRawElementProviderSimple provider) : base (provider)
		{
			if (provider != null)
				Role = Atk.Role.Frame;
			
			balloonWindow = (bool)(provider.GetPropertyValue (AutomationElementIdentifiers.IsNotifyIconProperty.Id) != null);
			rootProvider = (IRawElementProviderFragmentRoot) provider;
			
			if (rootProvider != null && balloonWindow) {
				Role = Atk.Role.Alert;
				Name = (string) provider.GetPropertyValue (AutomationElementIdentifiers.HelpTextProperty.Id);
			}

			transformProvider = (ITransformProvider) provider.GetPatternProvider (TransformPatternIdentifiers.Pattern.Id);
			windowProvider = (IWindowProvider) provider.GetPatternProvider (WindowPatternIdentifiers.Pattern.Id);
		}
示例#7
0
		public TextBoxEntryView (IRawElementProviderSimple provider) : base (provider)
		{
			if (IsTableCell)
				Role = Atk.Role.TableCell;
			else
				Role = Atk.Role.Text;

			if (provider.GetPatternProvider (TextPatternIdentifiers.Pattern.Id) == null
			    && provider.GetPatternProvider (ValuePatternIdentifiers.Pattern.Id) == null)
				throw new ArgumentException ("Provider for TextBox should either implement IValue or IText");
			
			textExpert = TextImplementorFactory.GetImplementor (this, provider);
			if ((int) provider.GetPropertyValue (AutomationElementIdentifiers.ControlTypeProperty.Id) 
			    == ControlType.Document.Id)
				multiLine = true;

			editableTextExpert = new EditableTextImplementorHelper (this, this, textExpert);
		}
示例#8
0
文件: Hyperlink.cs 项目: mono/uia2atk
		public Hyperlink (IRawElementProviderSimple provider) : base (provider)
		{
			invokeProvider = (IInvokeProvider)provider.GetPatternProvider (InvokePatternIdentifiers.Pattern.Id);
			hypertext = (IHypertext)invokeProvider;
			links = new List<HyperlinkObject> ();
			Role = Atk.Role.Label;
			
			textExpert = TextImplementorFactory.GetImplementor (this, provider);
		}
示例#9
0
		public CheckBoxButton (IRawElementProviderSimple provider) : base (provider)
		{
			toggleProvider = (IToggleProvider) provider.GetPatternProvider (TogglePatternIdentifiers.Pattern.Id);
			imageImplementor = new ImageImplementorHelper (this);
			if (toggleProvider == null)
				throw new ArgumentException ("The provider for CheckBox should implement the Toggle pattern");

			Role = Atk.Role.CheckBox;
		}
示例#10
0
文件: TabPage.cs 项目: mono/uia2atk
		public TabPage (IRawElementProviderSimple provider): base (provider)
		{
			Role = Atk.Role.PageTab;
			selectionItemProvider = (ISelectionItemProvider)provider.GetPatternProvider (
			  SelectionItemPatternIdentifiers.Pattern.Id);
			if (selectionItemProvider == null)
				throw new ArgumentException (
				  "Provider for TabPage should implement ISelectionItemProvider");
		}
示例#11
0
		public SplitContainer (IRawElementProviderSimple provider) : base (provider)
		{
			Role = Atk.Role.SplitPane;
			rangeValueProvider = (IRangeValueProvider)provider.GetPatternProvider (RangeValuePatternIdentifiers.Pattern.Id);
			object o = provider.GetPropertyValue (AutomationElementIdentifiers.OrientationProperty.Id);
			if (o is OrientationType)
				orientation = (OrientationType)o;
			else {
				IDockProvider dockProvider = (IDockProvider)provider.GetPatternProvider (DockPatternIdentifiers.Pattern.Id);
				if (dockProvider != null) {
					orientation = (dockProvider.DockPosition == DockPosition.Top || dockProvider.DockPosition == DockPosition.Bottom)?
						OrientationType.Horizontal:
						OrientationType.Vertical;
				} else {
					Log.Warn ("SplitContainer: Couldn't get orientation for splitter.  Does not support DockProvider.");
					orientation = OrientationType.Horizontal;
				}
			}
		}
示例#12
0
		public HeaderItem (IRawElementProviderSimple provider) : base (provider)
		{
			Role = Atk.Role.TableColumnHeader;

			invokeProvider = (IInvokeProvider) provider.GetPatternProvider (InvokePatternIdentifiers.Pattern.Id);		
			imageExpert = new ImageImplementorHelper (this); 

			actionExpert = new ActionImplementorHelper ();
			if (invokeProvider != null)
				actionExpert.Add ("click", "click", null, DoClick);
		}
示例#13
0
文件: ListItem.cs 项目: mono/uia2atk
		public ListItem (IRawElementProviderSimple provider) : base (provider)
		{
			invokeProvider = (IInvokeProvider)provider.GetPatternProvider(InvokePatternIdentifiers.Pattern.Id);
			selectionItemProvider = (ISelectionItemProvider)provider.GetPatternProvider(SelectionItemPatternIdentifiers.Pattern.Id);
			if (selectionItemProvider == null)
				throw new ArgumentException ("ListItem should always implement ISelectionItemProvider");
			toggleProvider = (IToggleProvider) provider.GetPatternProvider (TogglePatternIdentifiers.Pattern.Id);

			textExpert = TextImplementorFactory.GetImplementor (this, provider);
			imageExpert = new ImageImplementorHelper (this);
			actionExpert = new ActionImplementorHelper ();
			editableTextExpert = new EditableTextImplementorHelper (this, this, textExpert);

			// TODO: Localize the name?s
			actionExpert.Add ("click", "click", null, DoClick);
			if (toggleProvider != null)
				actionExpert.Add ("toggle", "toggle", null, DoToggle);
			if (invokeProvider != null)
				actionExpert.Add ("invoke", "invoke", null, DoInvoke);
			Role = (toggleProvider != null? Atk.Role.CheckBox: Atk.Role.ListItem);
		}
示例#14
0
文件: Button.cs 项目: mono/uia2atk
		// UI Automation Properties supported
		// AutomationElementIdentifiers.AcceleratorKeyProperty.Id
		// AutomationIdProperty() ?
		// AutomationElementIdentifiers.BoundingRectangleProperty.Id
		// AutomationElementIdentifiers.ClickablePointProperty.Id
		// AutomationElementIdentifiers.ControlTypeProperty.Id
		// AutomationElementIdentifiers.HelpTextProperty.Id
		// AutomationElementIdentifiers.IsContentElementProperty.Id
		// AutomationElementIdentifiers.IsControlElementProperty.Id
		// AutomationElementIdentifiers.IsKeyboardFocusableProperty.Id
		// AutomationElementIdentifiers.LabeledByProperty.Id
		// AutomationElementIdentifiers.LocalizedControlTypeProperty.Id
		// AutomationElementIdentifiers.NameProperty.Id
		public Button (IRawElementProviderSimple provider) : base (provider)
		{
			invokeProvider = (IInvokeProvider)provider.GetPatternProvider(InvokePatternIdentifiers.Pattern.Id);
			imageImplementor = new ImageImplementorHelper (this);
			InitializeAdditionalProviders ();
			if (invokeProvider != null) {
				//it seems the default description should be null
				actionName = default_invoke_name;
				Role = Atk.Role.PushButton;
			}

			textExpert = TextImplementorFactory.GetImplementor (this, provider);
		}
示例#15
0
		public static ITextImplementor GetImplementor (Adapter adapter,
		                                               IRawElementProviderSimple prov)
		{
			ITextProvider textProvider
				= prov.GetPatternProvider (TextPatternIdentifiers.Pattern.Id)
					as ITextProvider;
			if (textProvider != null)
				return new TextProviderTextImplementor (adapter, textProvider);

			IValueProvider valueProvider
				= prov.GetPatternProvider (ValuePatternIdentifiers.Pattern.Id)
					as IValueProvider;
			if (valueProvider != null)
				return new ValueProviderTextImplementor (adapter, valueProvider);
			
			IRangeValueProvider rangeValueProvider
				= prov.GetPatternProvider (RangeValuePatternIdentifiers.Pattern.Id)
					as IRangeValueProvider;
			if (rangeValueProvider != null)
				return new RangeValueProviderTextImplementor (adapter, rangeValueProvider);
			
			return new NamePropertyTextImplementor (adapter, prov);
		}
示例#16
0
		public ComboBoxOptions (IRawElementProviderSimple provider) : base (provider)
		{
			if (provider == null)
				throw new ArgumentNullException ("provider");

			if ((provider as IRawElementProviderFragment) == null)
				throw new ArgumentException ("Provider for ParentMenu should be IRawElementProviderFragment");

			selectionProvider = (ISelectionProvider)provider.GetPatternProvider(SelectionPatternIdentifiers.Pattern.Id);
			if (selectionProvider == null)
				throw new ArgumentException ("The List inside the ComboBox should always implement ISelectionProvider");

			selectionHelper = new SelectionProviderUserHelper (provider as IRawElementProviderFragment, selectionProvider);

			Role = Atk.Role.Menu;
		}
示例#17
0
		public ComboBoxItem (IRawElementProviderSimple provider) : base (provider)
		{
			int controlType = (int) provider.GetPropertyValue (AutomationElementIdentifiers.ControlTypeProperty.Id);
			selectionItemProvider = (ISelectionItemProvider)provider.GetPatternProvider (
			  SelectionItemPatternIdentifiers.Pattern.Id);
			if (selectionItemProvider == null)
				throw new ArgumentException (
				  String.Format ("Provider for ComboBoxItem (control type {0}) should implement ISelectionItemProvider", controlType));

			textExpert = TextImplementorFactory.GetImplementor (this, provider);
			
			//FIXME: take in account ComboBox style changes at runtime
			if (ParentIsSimple ())
				Role = Atk.Role.TableCell;
			else
				Role = Atk.Role.MenuItem;
		}
示例#18
0
文件: ComboBox.cs 项目: mono/uia2atk
		public ComboBox (IRawElementProviderSimple provider) : base (provider)
		{
			if (!(provider is IRawElementProviderFragment))
				throw new ArgumentException ("Provider should be IRawElementProviderFragment");
			
			this.Role = Atk.Role.ComboBox;

			selProvider = (ISelectionProvider)provider.GetPatternProvider (SelectionPatternIdentifiers.Pattern.Id);
			
			if (selProvider == null)
				throw new ArgumentException ("ComboBoxProvider should always implement ISelectionProvider");
			
			selectionHelper = 
				new SelectionProviderUserHelper ((IRawElementProviderFragment)Provider, 
				                                 selProvider, true);
			
			var providersSelected = selProvider.GetSelection ();
			if (providersSelected != null && providersSelected.Length == 1)
				Name = (string)providersSelected [0].GetPropertyValue (AEIds.NameProperty.Id);
		}
示例#19
0
		protected virtual void TestTableItemPattern_GetRowHeaderItems (IRawElementProviderSimple provider)
		{
			ITableItemProvider tableItemProvider
				= provider.GetPatternProvider (TableItemPatternIdentifiers.Pattern.Id) as ITableItemProvider;
			if (tableItemProvider == null)
				Assert.Fail ("Provider {0} is not implementing ITableItemProvider", provider.GetType ());

			IRawElementProviderFragment child = provider as IRawElementProviderFragment;
			if (child == null)
				Assert.Fail ("Unable to test a non-navigable ITableItemProvider");

			Assert.IsNotNull (tableItemProvider.ContainingGrid, 
			                  "ContainingGrid should not be null");

			// http://msdn.microsoft.com/en-us/library/system.windows.automation.provider.igriditemprovider.containinggrid.aspx
			Assert.IsNotNull (tableItemProvider.ContainingGrid.GetPatternProvider (GridPatternIdentifiers.Pattern.Id),
			                  "ContainingGrid must implement GridPatternProvider");

			// Provider must never return null
			Assert.IsNotNull (tableItemProvider.GetRowHeaderItems (), 
			                  "GetRowHeaderItems must return an empty array instead of returning null");
		}
示例#20
0
文件: ComboBox.cs 项目: mono/uia2atk
		internal static bool IsSimple (IRawElementProviderSimple provider)
		{
			return provider.GetPatternProvider (ExpandCollapsePatternIdentifiers.Pattern.Id) == null;
		}
示例#21
0
		internal static void IDockProviderSetDockPositionTest (IRawElementProviderSimple provider, Control control)
		{
			IDockProvider dockProvider = (IDockProvider)provider.GetPatternProvider (DockPatternIdentifiers.Pattern.Id);
			Assert.IsNotNull (dockProvider, "Dock provider should not be null");

			DockStyle dockOrig = control.Dock;

			dockProvider.SetDockPosition (DockPosition.Top);
			Assert.AreEqual (DockStyle.Top, control.Dock, "DockStyle Top");
			dockProvider.SetDockPosition (DockPosition.Bottom);
			Assert.AreEqual (DockStyle.Bottom, control.Dock, "DockStyle Bottom");
			dockProvider.SetDockPosition (DockPosition.Left);
			Assert.AreEqual (DockStyle.Left, control.Dock, "DockStyle Left");
			dockProvider.SetDockPosition (DockPosition.Right);
			Assert.AreEqual (DockStyle.Right, control.Dock, "DockStyle Right");
			if ((control is Splitter)) {
				try {
					dockProvider.SetDockPosition (DockPosition.None);
					Assert.Fail ("InvalidOperationException not thrown");
				} catch (InvalidOperationException) { }
			
				try {
					dockProvider.SetDockPosition (DockPosition.Fill);
					Assert.Fail ("InvalidOperationException not thrown");
				} catch (InvalidOperationException) { }
			} else {
				dockProvider.SetDockPosition (DockPosition.Fill);
				Assert.AreEqual (DockStyle.Fill, control.Dock, "DockStyle Fill");
				dockProvider.SetDockPosition (DockPosition.None);
				Assert.AreEqual (DockStyle.None, control.Dock, "DockStyle None");
			}

			control.Dock = dockOrig;
		}
示例#22
0
		internal static void IDockProviderDockPositionTest (IRawElementProviderSimple provider, Control control)
		{
			IDockProvider dockProvider = (IDockProvider)provider.GetPatternProvider (DockPatternIdentifiers.Pattern.Id);
			Assert.IsNotNull (dockProvider, "Dock provider should not be null");

			DockStyle dockOrig = control.Dock;

			control.Dock = DockStyle.Top;
			Assert.AreEqual (DockPosition.Top, dockProvider.DockPosition, "DockPosition Top");
			control.Dock = DockStyle.Bottom;
			Assert.AreEqual (DockPosition.Bottom, dockProvider.DockPosition, "DockPosition Bottom");
			control.Dock = DockStyle.Left;
			Assert.AreEqual (DockPosition.Left, dockProvider.DockPosition, "DockPosition Left");
			control.Dock = DockStyle.Right;
			Assert.AreEqual (DockPosition.Right, dockProvider.DockPosition, "DockPosition Right");
			if (!(control is Splitter)) {
				control.Dock = DockStyle.Fill;
				Assert.AreEqual (DockPosition.Fill, dockProvider.DockPosition, "DockPosition Fill");
				control.Dock = DockStyle.None;
				Assert.AreEqual (DockPosition.None, dockProvider.DockPosition, "DockPosition None");
			}

			control.Dock = dockOrig;
		}
示例#23
0
		internal static void TestPatterns (string msg, IRawElementProviderSimple provider, params AutomationPattern [] expected)
		{
			List <AutomationPattern> expectedPatterns = null;
			if (expected != null)
				expectedPatterns = new List <AutomationPattern> (expected);
			else
				expectedPatterns = new List <AutomationPattern> ();
			List <AutomationPattern> missingPatterns = new List <AutomationPattern> ();
			List <AutomationPattern> superfluousPatterns = new List <AutomationPattern> ();
			
			foreach (AutomationPattern pattern in GetAllPossiblePatterns ()) {
				object behaviour = provider.GetPatternProvider (pattern.Id);
				if (expectedPatterns.Contains (pattern) &&
				    behaviour == null)
					missingPatterns.Add (pattern);
				else if ((!expectedPatterns.Contains (pattern)) && 
					     behaviour != null)
					superfluousPatterns.Add (pattern);
			}

			string missingPatternsMsg = string.Empty;
			string superfluousPatternsMsg = string.Empty;

			if (missingPatterns.Count != 0) {
				missingPatternsMsg = "Missing patterns: ";
				foreach (AutomationPattern pattern in missingPatterns)
					missingPatternsMsg += pattern.ProgrammaticName + ",";
			}
			if (superfluousPatterns.Count != 0) {
				superfluousPatternsMsg = "Superfluous patterns: ";
				foreach (AutomationPattern pattern in superfluousPatterns)
					superfluousPatternsMsg += pattern.ProgrammaticName + ",";
			}
			Assert.IsTrue ((missingPatterns.Count == 0) && (superfluousPatterns.Count == 0),
			  msg + "; " + missingPatternsMsg + " .. " + superfluousPatternsMsg);
		}
示例#24
0
		protected virtual void TestGridItemPattern_RowPropertyEvent (IRawElementProviderSimple provider)
		{
			IGridItemProvider gridItemProvider
				= provider.GetPatternProvider (GridItemPatternIdentifiers.Pattern.Id) as IGridItemProvider;
			if (gridItemProvider == null)
				Assert.Fail ("Provider {0} is not implementing IGridItemProvider", provider.GetType ());

			IRawElementProviderFragment child = provider as IRawElementProviderFragment;
			if (child == null)
				Assert.Fail ("Unable to test a non-navigable IGridItemProvider");

			Assert.IsNotNull (gridItemProvider.ContainingGrid, 
			                  "ContainingGrid must not be null");
			IGridProvider gridProvider 
				= gridItemProvider.ContainingGrid.GetPatternProvider (GridPatternIdentifiers.Pattern.Id) as IGridProvider;
			if (gridProvider == null)
				Assert.Fail ("Provider {0} is ContainingGrid of {1} and should implement IGridProvider",
				             gridItemProvider.ContainingGrid,
				             provider.GetType ());

			int oldValue = gridItemProvider.Row;
			int currentRow = gridItemProvider.Row;

			// Adding row before to increase our current row value
			bridge.ResetEventLists ();
			TestGridItemPattern_AddRowBefore (provider, 1);

			AutomationPropertyChangedEventTuple tuple
				= bridge.GetAutomationPropertyEventFrom (provider,
				                                         GridItemPatternIdentifiers.RowProperty.Id);
			Assert.IsNotNull (tuple,
			                  string.Format ("{0} RowProperty event.", provider.GetType ()));
			Assert.AreEqual (currentRow,
			                 (int) tuple.e.OldValue,
			                 "Old value should match value before adding row");

			int newValue = 0;
			
			if (gridProvider.ColumnCount > 1)
				// We may be moved to next column
				newValue = (currentRow + 1) % gridProvider.RowCount;
			else
				newValue = currentRow + 1;

			Assert.AreEqual (newValue,
			                 (int) tuple.e.NewValue,
			                 "New value should match value after adding row");
			Assert.AreEqual (newValue,
			                 gridItemProvider.Row,
			                 "Current row is different than NewValue");
			
			// Adding row after to just match sure our Row is not changing at all
			currentRow = gridItemProvider.Row;
			bridge.ResetEventLists ();
			TestGridItemPattern_AddRowAfter (provider, 1);

			Assert.IsNull (bridge.GetAutomationPropertyEventFrom (provider,
			                                                      GridItemPatternIdentifiers.RowProperty.Id),
			               string.Format ("{0} RowProperty event should not be raised.", provider.GetType ()));
			Assert.AreEqual (currentRow,
			                 gridItemProvider.Row,
			                 "Current row is different than value before adding row after");

			// Remove previous added row, so our RowProperty will change again!
			bridge.ResetEventLists ();
			TestGridItemPattern_RemoveRowBefore (provider, 1);

			tuple = bridge.GetAutomationPropertyEventFrom (provider,
			                                               GridItemPatternIdentifiers.RowProperty.Id);
			Assert.IsNotNull (tuple,
			                  string.Format ("{0} RowProperty event.", provider.GetType ()));

			Assert.AreEqual (currentRow, 
			                 (int) tuple.e.OldValue,
			                 "Old value should match value before removing row");
			Assert.AreEqual (oldValue,
			                 (int) tuple.e.NewValue,
			                 "New value should match value after removing row");
			Assert.AreEqual (oldValue,
			                 gridItemProvider.Row,
			                 "Current row is different than NewValue");

			// Remove row added after, to make sure our Row is not changing at all
			bridge.ResetEventLists ();
			TestGridItemPattern_RemoveRowAfter (provider, 1);

			Assert.IsNull (bridge.GetAutomationPropertyEventFrom (provider,
			                                                      GridItemPatternIdentifiers.RowProperty.Id),
			               string.Format ("{0} RowProperty event should not be raised.", provider.GetType ()));
			Assert.AreEqual (oldValue,
			                 gridItemProvider.Row,
			                 "Current row is different than value before removing row after");
		}
示例#25
0
文件: ScrollBar.cs 项目: mono/uia2atk
		public ScrollBar (IRawElementProviderSimple provider) : base (provider)
		{
			Role = Atk.Role.ScrollBar;
			rangeValueProvider = (IRangeValueProvider)provider.GetPatternProvider (RangeValuePatternIdentifiers.Pattern.Id);
			orientation = (OrientationType)provider.GetPropertyValue (AutomationElementIdentifiers.OrientationProperty.Id);
		}
示例#26
0
		protected virtual void TestEmbeddedImagePattern_All (IRawElementProviderSimple provider, bool imageExpected)
		{
			IEmbeddedImageProvider embeddedImage 
				= provider.GetPatternProvider (EmbeddedImagePatternIdentifiers.Pattern.Id) as IEmbeddedImageProvider;

			Assert.IsNotNull (embeddedImage, "Provider {0} is not implementing IEmbeddedImageProvider");
			Assert.AreEqual (!imageExpected,
			                 embeddedImage.Bounds.IsEmpty,
			                 string.Format ("Image was {0}expected, but was {1}found", 
			                                imageExpected ? "" : "not ",
			                                embeddedImage.Bounds.IsEmpty ? "not " : ""));

			if (imageExpected) {
				Rect providerRect
					= (Rect) provider.GetPropertyValue (AutomationElementIdentifiers.BoundingRectangleProperty.Id);
				Rect imageRect = embeddedImage.Bounds;

				Assert.IsTrue (imageRect.X >= providerRect.X,
				               string.Format ("Image X: {0} must be >= than container X: {1}", imageRect.X, providerRect.X));
				Assert.IsTrue (imageRect.Y >= providerRect.Y,
				               string.Format ("Image Y: {0} must be >= than container Y: {1}", imageRect.Y, providerRect.Y));
				Assert.IsTrue (imageRect.Width <= providerRect.Width,
				               string.Format ("Image Width: {0} must be <= than container Width: {1}", imageRect.Width, providerRect.Width));
				Assert.IsTrue (imageRect.Height <= providerRect.Height,
				               string.Format ("Image Height: {0} must be <= than container Height: {1}", imageRect.Height, providerRect.Height));
			}
		}
示例#27
0
		protected virtual void TestGridItemPattern_ColumnPropertyEvent (IRawElementProviderSimple provider)
		{
			IGridItemProvider gridItemProvider
				= provider.GetPatternProvider (GridItemPatternIdentifiers.Pattern.Id) as IGridItemProvider;
			if (gridItemProvider == null)
				Assert.Fail ("Provider {0} is not implementing IGridItemProvider", provider.GetType ());

			IRawElementProviderFragment child = provider as IRawElementProviderFragment;
			if (child == null)
				Assert.Fail ("Unable to test a non-navigable IGridItemProvider");

			Assert.IsNotNull (gridItemProvider.ContainingGrid, 
			                  "ContainingGrid must not be null");
			IGridProvider gridProvider 
				= gridItemProvider.ContainingGrid.GetPatternProvider (GridPatternIdentifiers.Pattern.Id) as IGridProvider;
			if (gridProvider == null)
				Assert.Fail ("Provider {0} is ContainingGrid of {1} and should implement IGridProvider",
				             gridItemProvider.ContainingGrid,
				             provider.GetType ());

			// FIXME: Implement
		}
示例#28
0
		protected virtual void TestSelectionItemPattern_IsSelectedPropertyEvent (IRawElementProviderSimple provider)
		{
			ISelectionItemProvider selectionItemProvider
				= provider.GetPatternProvider (SelectionItemPatternIdentifiers.Pattern.Id) as ISelectionItemProvider;
			if (selectionItemProvider == null)
				Assert.Fail ("Provider {0} is not implementing ISelectionItemProvider", provider.GetType ());

			IRawElementProviderFragment child = provider as IRawElementProviderFragment;
			if (child == null)
				Assert.Fail ("Unable to test a non-navigable ISelectionItemProvider");

			// Parent must implement Selection
			IRawElementProviderFragment parent = child.Navigate (NavigateDirection.Parent);
			if (parent == null)
				Assert.Fail ("We need parent to test ISelectionItemProvider.");

			ISelectionProvider selectionProvider
				= parent.GetPatternProvider (SelectionPatternIdentifiers.Pattern.Id) as ISelectionProvider;
			if (selectionProvider == null)
				Assert.Fail ("ISelectionItemProvider.Parent {0} is not implementing ISelectionProvider", parent.GetType ());

			// Item is selected, we try to unselect it
			if (selectionItemProvider.IsSelected)
				TestSelectionItemPattern_RemoveFromSelection (parent, child);

			if (selectionItemProvider.IsSelected && selectionProvider.IsSelectionRequired)
				return;

			int selectedItems = selectionProvider.GetSelection ().Length;

			bridge.ResetEventLists ();
			selectionItemProvider.Select ();
			
			// IsSelectedProperty
			AutomationPropertyChangedEventTuple tuple
				= bridge.GetAutomationPropertyEventFrom (provider,
				                                         SelectionItemPatternIdentifiers.IsSelectedProperty.Id);
			Assert.IsNotNull (tuple,
			                  string.Format ("{0} IsSelectedProperty event.", provider.GetType ()));
			Assert.IsFalse ((bool) tuple.e.OldValue, "Old value must be false");
			Assert.IsTrue ((bool) tuple.e.NewValue, "New value must be false");

			Assert.IsTrue (selectionItemProvider.IsSelected, "Must be selected");

			Assert.Greater (selectionProvider.GetSelection ().Length,
			                selectedItems,
			                "Selection must be greater that old selectedItems");
		}
示例#29
0
		public ProgressBar (IRawElementProviderSimple provider) : base (provider)
		{
			rangeValueProvider = (IRangeValueProvider)provider.GetPatternProvider (RangeValuePatternIdentifiers.Pattern.Id);
			Role = Atk.Role.ProgressBar;
		}
示例#30
0
		protected virtual void TestTablePattern_GetRowHeaderItems (IRawElementProviderSimple provider)
		{
			ITableProvider tableProvider
				= provider.GetPatternProvider (TablePatternIdentifiers.Pattern.Id) as ITableProvider;
			if (tableProvider == null)
				Assert.Fail ("Provider {0} is not implementing ITableProvider", provider.GetType ());

			// Provider must never return null
			Assert.IsNotNull (tableProvider.GetRowHeaders (), 
			                  "GetRowHeaderItems must return an empty array instead of returning null");

			// Testing children TableItemProvider: "The children of this control must implement ITableItemProvider."
			// http://msdn.microsoft.com/en-us/library/system.windows.automation.provider.itableprovider.aspx

			IRawElementProviderFragment fragment = provider as IRawElementProviderFragment;
			if (fragment == null)
				return;

			IRawElementProviderFragment child = fragment.Navigate (NavigateDirection.FirstChild);
			while (child != null) {
				TestTablePatternChild (child);
				child = child.Navigate (NavigateDirection.NextSibling);
			}
		}