View | Details | Raw Unified | Return to bug 428698
Collapse All | Expand All

(-)UIAutomationWinforms/Mono.UIAutomation.Winforms/StatusBarProvider.cs (-3 / +3 lines)
Lines 37-43 Link Here
37
{
37
{
38
	internal class StatusBarProvider : FragmentRootControlProvider
38
	internal class StatusBarProvider : FragmentRootControlProvider
39
	{
39
	{
40
		#region Constructors
40
		#region Constructor
41
41
42
		public StatusBarProvider (StatusBar statusBar) : base (statusBar)
42
		public StatusBarProvider (StatusBar statusBar) : base (statusBar)
43
		{
43
		{
Lines 177-183 Link Here
177
		
177
		
178
		internal class StatusBarPanelProvider : FragmentControlProvider
178
		internal class StatusBarPanelProvider : FragmentControlProvider
179
		{
179
		{
180
			#region Constructors
180
			#region Constructor
181
181
182
			public StatusBarPanelProvider (StatusBarPanel statusBarPanel) : base (statusBarPanel)
182
			public StatusBarPanelProvider (StatusBarPanel statusBarPanel) : base (statusBarPanel)
183
			{
183
			{
Lines 186-192 Link Here
186
				SetBehavior (ValuePatternIdentifiers.Pattern,
186
				SetBehavior (ValuePatternIdentifiers.Pattern,
187
				             new StatusBarPanelValueProviderBehavior (this));
187
				             new StatusBarPanelValueProviderBehavior (this));
188
				SetBehavior (GridItemPatternIdentifiers.Pattern,
188
				SetBehavior (GridItemPatternIdentifiers.Pattern,
189
				             new StatusBarPanelGridItemProviderBehavior (this, statusBarPanel));
189
				             new StatusBarPanelGridItemProviderBehavior (this));
190
			}
190
			}
191
		
191
		
192
			#endregion
192
			#endregion
(-)UIAutomationWinforms/Mono.UIAutomation.Winforms.Behaviors/StatusBar/StatusBarPanelGridItemProviderBehavior.cs (-3 / +2 lines)
Lines 37-47 Link Here
37
	{
37
	{
38
		#region Constructor
38
		#region Constructor
39
		
39
		
40
		public StatusBarPanelGridItemProviderBehavior (StatusBarProvider.StatusBarPanelProvider provider,
40
		public StatusBarPanelGridItemProviderBehavior (StatusBarProvider.StatusBarPanelProvider provider)
41
		                                               SWF.StatusBarPanel statusBarPanel)
42
			: base (provider)
41
			: base (provider)
43
		{
42
		{
44
			this.statusBarPanel = statusBarPanel;
43
			this.statusBarPanel = (SWF.StatusBarPanel) Provider.Component;
45
		}
44
		}
46
		
45
		
47
		#endregion
46
		#endregion
(-)UIAutomationWinforms/Mono.UIAutomation.Winforms.Behaviors/StatusBar/StatusBarPanelValueProviderBehavior.cs (-2 / +9 lines)
Lines 26-32 Link Here
26
using System;
26
using System;
27
using System.Windows.Automation;
27
using System.Windows.Automation;
28
using System.Windows.Automation.Provider;
28
using System.Windows.Automation.Provider;
29
using System.Windows.Forms;
29
using SWF = System.Windows.Forms;
30
using Mono.UIAutomation.Winforms;
30
using Mono.UIAutomation.Winforms;
31
using Mono.UIAutomation.Winforms.Events;
31
using Mono.UIAutomation.Winforms.Events;
32
using Mono.UIAutomation.Winforms.Events.StatusBar;
32
using Mono.UIAutomation.Winforms.Events.StatusBar;
Lines 40-45 Link Here
40
		public StatusBarPanelValueProviderBehavior (StatusBarProvider.StatusBarPanelProvider provider)
40
		public StatusBarPanelValueProviderBehavior (StatusBarProvider.StatusBarPanelProvider provider)
41
			: base (provider)
41
			: base (provider)
42
		{
42
		{
43
			this.statusBarPanel = (SWF.StatusBarPanel) Provider.Component;
43
		}
44
		}
44
		
45
		
45
		#endregion
46
		#endregion
Lines 84-90 Link Here
84
		}
85
		}
85
		
86
		
86
		public string Value {
87
		public string Value {
87
			get { return Provider.Control.Text; }
88
			get { return statusBarPanel.Text; }
88
		}
89
		}
89
90
90
		public void SetValue (string value)
91
		public void SetValue (string value)
Lines 93-97 Link Here
93
		}
94
		}
94
		
95
		
95
		#endregion
96
		#endregion
97
		
98
		#region Private Fields
99
		
100
		private SWF.StatusBarPanel statusBarPanel;
101
		
102
		#endregion
96
	}
103
	}
97
}
104
}
(-)UIAutomationWinforms/Mono.UIAutomation.Winforms.Events/StatusBar/StatusBarPanelGridItemPatternColumnEvent.cs (-4 / +4 lines)
Lines 47-54 Link Here
47
		public override void Connect ()
47
		public override void Connect ()
48
		{
48
		{
49
			try {
49
			try {
50
				Helper.AddPrivateEvent (typeof (SWF.StatusBar.StatusBarPanelCollection),
50
				Helper.AddPrivateEvent (typeof (SWF.StatusBarPanel),
51
				                        ((SWF.StatusBar) Provider.Control).Panels,
51
				                        (SWF.StatusBarPanel) Provider.Component,
52
				                        "UIACollectionChanged",
52
				                        "UIACollectionChanged",
53
				                        this,
53
				                        this,
54
				                        "OnColumnChanged");
54
				                        "OnColumnChanged");
Lines 58-65 Link Here
58
		public override void Disconnect ()
58
		public override void Disconnect ()
59
		{
59
		{
60
			try {
60
			try {
61
				Helper.RemovePrivateEvent (typeof (SWF.StatusBar.StatusBarPanelCollection),
61
				Helper.RemovePrivateEvent (typeof (SWF.StatusBarPanel),
62
				                           ((SWF.StatusBar) Provider.Control).Panels,
62
				                           (SWF.StatusBarPanel) Provider.Component,
63
				                           "UIACollectionChanged",
63
				                           "UIACollectionChanged",
64
				                           this,
64
				                           this,
65
				                           "OnColumnChanged");
65
				                           "OnColumnChanged");
(-)UIAutomationWinforms/Mono.UIAutomation.Winforms.Events/StatusBar/StatusBarPanelValuePatternValueEvent.cs (-3 / +15 lines)
Lines 26-32 Link Here
26
using System;
26
using System;
27
using System.Windows.Automation;
27
using System.Windows.Automation;
28
using System.Windows.Automation.Provider;
28
using System.Windows.Automation.Provider;
29
using System.Windows.Forms;
29
using SWF = System.Windows.Forms;
30
30
31
namespace Mono.UIAutomation.Winforms.Events.StatusBar
31
namespace Mono.UIAutomation.Winforms.Events.StatusBar
32
{
32
{
Lines 45-56 Link Here
45
45
46
		public override void Connect ()
46
		public override void Connect ()
47
		{
47
		{
48
			Provider.Control.TextChanged += new EventHandler (OnValueChanged);
48
			try {
49
				Helper.AddPrivateEvent (typeof (SWF.StatusBarPanel),
50
				                        (SWF.StatusBarPanel) Provider.Component,
51
				                        "TextChanged",
52
				                        this,
53
				                        "OnValueChanged");
54
			} catch (NotSupportedException) { }
49
		}
55
		}
50
56
51
		public override void Disconnect ()
57
		public override void Disconnect ()
52
		{
58
		{
53
			Provider.Control.TextChanged -= new EventHandler (OnValueChanged);
59
			try {
60
				Helper.RemovePrivateEvent (typeof (SWF.StatusBarPanel),
61
				                           (SWF.StatusBarPanel) Provider.Component,
62
				                           "TextChanged",
63
				                           this,
64
				                           "OnValueChanged");
65
			} catch (NotSupportedException) { }
54
		}
66
		}
55
		
67
		
56
		#endregion 
68
		#endregion 
(-)UIAutomationWinformsTests/StatusBarProviderTest.cs (-4 / +231 lines)
Lines 56-62 Link Here
56
			              AutomationElementIdentifiers.LabeledByProperty,
56
			              AutomationElementIdentifiers.LabeledByProperty,
57
			              null);
57
			              null);
58
			
58
			
59
			string value = "Name Property";
59
			string value = "StatusBar Name Property";
60
			statusBar.Text = value;
60
			statusBar.Text = value;
61
			TestProperty (provider,
61
			TestProperty (provider,
62
			              AutomationElementIdentifiers.NameProperty,
62
			              AutomationElementIdentifiers.NameProperty,
Lines 98-104 Link Here
98
			for (; index < elements; ++index)
98
			for (; index < elements; ++index)
99
				statusBar.Panels.Add (string.Format ("Panel: {0}", index));
99
				statusBar.Panels.Add (string.Format ("Panel: {0}", index));
100
			int value = 1;
100
			int value = 1;
101
			Assert.AreEqual (gridProvider.RowCount, value, "RowCount value");
101
			Assert.AreEqual (value, gridProvider.RowCount, "RowCount value");
102
		}
102
		}
103
103
104
		[Test]
104
		[Test]
Lines 117-123 Link Here
117
			for (; index < elements; ++index)
117
			for (; index < elements; ++index)
118
				statusBar.Panels.Add (string.Format ("Panel: {0}", index));
118
				statusBar.Panels.Add (string.Format ("Panel: {0}", index));
119
			int value = elements;
119
			int value = elements;
120
			Assert.AreEqual (gridProvider.ColumnCount, value, "ColumnCount value");
120
			Assert.AreEqual (value, gridProvider.ColumnCount, "ColumnCount value");
121
		}
121
		}
122
122
123
		[Test]
123
		[Test]
Lines 139-145 Link Here
139
				provider.Navigate (NavigateDirection.FirstChild);
139
				provider.Navigate (NavigateDirection.FirstChild);
140
			IRawElementProviderSimple itemProvider =
140
			IRawElementProviderSimple itemProvider =
141
				gridProvider.GetItem (rowValue, columnValue);
141
				gridProvider.GetItem (rowValue, columnValue);
142
			Assert.AreSame (itemProvider, panelProvider, "GetItem method");
142
			Assert.AreSame (panelProvider, itemProvider, "GetItem method");
143
			
143
			
144
			try {
144
			try {
145
				rowValue = gridProvider.RowCount;
145
				rowValue = gridProvider.RowCount;
Lines 197-203 Link Here
197
		}
197
		}
198
198
199
		#endregion
199
		#endregion
200
		
201
		#region StatusBarPanel Test
200
202
203
        	[Test]
204
        	public void StatusBarPanelBasicPropertiesTest ()
205
        	{
206
            		StatusBar statusBar = new StatusBar ();
207
            		IRawElementProviderFragmentRoot rootProvider =
208
				(IRawElementProviderFragmentRoot) GetProviderFromControl (statusBar);
209
			
210
			statusBar.Panels.Add ("Panel");
211
			IRawElementProviderFragment childProvider =
212
				rootProvider.Navigate (NavigateDirection.FirstChild);
213
214
			TestProperty (childProvider,
215
			              AutomationElementIdentifiers.ControlTypeProperty,
216
			              ControlType.Edit.Id);
217
218
			TestProperty (childProvider,
219
			              AutomationElementIdentifiers.LocalizedControlTypeProperty,
220
			              "edit");
221
			
222
			string value = "StatusBarPanel Name Property";
223
			statusBar.Panels [0].Text = value;
224
			TestProperty (childProvider,
225
			              AutomationElementIdentifiers.NameProperty,
226
			              value);
227
		}
228
229
		[Test]
230
		public void StatusBarPanelProviderPatternTest ()
231
		{
232
			StatusBar statusBar = new StatusBar ();
233
            		IRawElementProviderFragmentRoot rootProvider =
234
				(IRawElementProviderFragmentRoot) GetProviderFromControl (statusBar);
235
			
236
			statusBar.Panels.Add ("Panel");
237
			IRawElementProviderFragment childProvider =
238
				rootProvider.Navigate (NavigateDirection.FirstChild);
239
240
			object valueProvider =
241
				childProvider.GetPatternProvider (ValuePatternIdentifiers.Pattern.Id);
242
			Assert.IsNotNull (valueProvider,
243
			                  "Not returning ValuePatternIdentifiers.");
244
			Assert.IsTrue (valueProvider is IValueProvider,
245
			               "Not returning ValuePatternIdentifiers.");
246
			
247
			object gridItemProvider =
248
				childProvider.GetPatternProvider (GridItemPatternIdentifiers.Pattern.Id);
249
			Assert.IsNotNull (gridItemProvider,
250
			                  "Not returning GridItemPatternIdentifiers.");
251
			Assert.IsTrue (gridItemProvider is IGridItemProvider,
252
			               "Not returning GridItemPatternIdentifiers.");
253
		}
254
255
		#endregion
256
		
257
		#region StatusBarPanel IValuePattern Test
258
		
259
		[Test]
260
		public void StatusBarPanelIValueProviderIsReadOnlyTest ()
261
		{
262
			StatusBar statusBar = new StatusBar ();
263
            		IRawElementProviderFragmentRoot rootProvider =
264
				(IRawElementProviderFragmentRoot) GetProviderFromControl (statusBar);
265
			
266
			statusBar.Panels.Add ("Panel");
267
			IRawElementProviderFragment childProvider =
268
				rootProvider.Navigate (NavigateDirection.FirstChild);
269
			
270
			IValueProvider valueProvider = (IValueProvider)
271
				childProvider.GetPatternProvider (ValuePatternIdentifiers.Pattern.Id);
272
			Assert.IsNotNull (valueProvider,
273
			                  "Not returning ValuePatternIdentifiers.");
274
			
275
			Assert.IsTrue (valueProvider.IsReadOnly, "IsReadOnly value");
276
		}
277
		
278
		[Test]
279
		public void StatusBarPanelIValueProviderValueTest ()
280
		{
281
			StatusBar statusBar = new StatusBar ();
282
            		IRawElementProviderFragmentRoot rootProvider =
283
				(IRawElementProviderFragmentRoot) GetProviderFromControl (statusBar);
284
			
285
			string value = "Panel";
286
			statusBar.Panels.Add (value);
287
			IRawElementProviderFragment childProvider =
288
				rootProvider.Navigate (NavigateDirection.FirstChild);
289
			
290
			IValueProvider valueProvider = (IValueProvider)
291
				childProvider.GetPatternProvider (ValuePatternIdentifiers.Pattern.Id);
292
			Assert.IsNotNull (valueProvider,
293
			                  "Not returning ValuePatternIdentifiers.");
294
			
295
			Assert.AreEqual (value, valueProvider.Value, "Value value");
296
		}
297
		
298
		[Test]
299
		public void StatusBarPanelIValueProviderSetValueTest ()
300
		{
301
			StatusBar statusBar = new StatusBar ();
302
            		IRawElementProviderFragmentRoot rootProvider =
303
				(IRawElementProviderFragmentRoot) GetProviderFromControl (statusBar);
304
			
305
			statusBar.Panels.Add ("Panel");
306
			IRawElementProviderFragment childProvider =
307
				rootProvider.Navigate (NavigateDirection.FirstChild);
308
			
309
			IValueProvider valueProvider = (IValueProvider)
310
				childProvider.GetPatternProvider (ValuePatternIdentifiers.Pattern.Id);
311
			Assert.IsNotNull (valueProvider,
312
			                  "Not returning ValuePatternIdentifiers.");
313
			
314
			try {
315
				string value = "Another Panel";
316
				valueProvider.SetValue (value);
317
				Assert.Fail ("ElementNotEnabledException not thrown.");
318
			} catch (ElementNotEnabledException) { }
319
		}
320
321
		#endregion
322
		
323
		#region StatusBarPanel IGridItemPattern Test
324
		
325
		[Test]
326
		public void StatusBarPanelIGridItemProviderRowTest ()
327
		{
328
			StatusBar statusBar = new StatusBar ();
329
            		IRawElementProviderFragmentRoot rootProvider =
330
				(IRawElementProviderFragmentRoot) GetProviderFromControl (statusBar);
331
			
332
			statusBar.Panels.Add ("Panel");
333
			IRawElementProviderFragment childProvider =
334
				rootProvider.Navigate (NavigateDirection.FirstChild);
335
			
336
			IGridItemProvider gridItemProvider = (IGridItemProvider)
337
				childProvider.GetPatternProvider (GridItemPatternIdentifiers.Pattern.Id);
338
			Assert.IsNotNull (gridItemProvider,
339
			                  "Not returning GridItemPatternIdentifiers.");
340
			
341
			Assert.AreEqual (0, gridItemProvider.Row, "Row value");
342
		}
343
		
344
		[Test]
345
		public void StatusBarPanelIGridItemProviderColumnTest ()
346
		{
347
			StatusBar statusBar = new StatusBar ();
348
            		IRawElementProviderFragmentRoot rootProvider =
349
				(IRawElementProviderFragmentRoot) GetProviderFromControl (statusBar);
350
			
351
			StatusBarPanel panel = new StatusBarPanel ();
352
			panel.Text = "Panel";
353
			statusBar.Panels.Add (panel);
354
			IRawElementProviderFragment childProvider =
355
				rootProvider.Navigate (NavigateDirection.FirstChild);
356
			
357
			IGridItemProvider gridItemProvider = (IGridItemProvider)
358
				childProvider.GetPatternProvider (GridItemPatternIdentifiers.Pattern.Id);
359
			Assert.IsNotNull (gridItemProvider,
360
			                  "Not returning GridItemPatternIdentifiers.");
361
			
362
			int value = statusBar.Panels.IndexOf (panel);
363
			Assert.AreEqual (value, gridItemProvider.Column, "Column value");
364
		}
365
		
366
		[Test]
367
		public void StatusBarPanelIGridItemProviderRowSpanTest ()
368
		{
369
			StatusBar statusBar = new StatusBar ();
370
            		IRawElementProviderFragmentRoot rootProvider =
371
				(IRawElementProviderFragmentRoot) GetProviderFromControl (statusBar);
372
			
373
			statusBar.Panels.Add ("Panel");
374
			IRawElementProviderFragment childProvider =
375
				rootProvider.Navigate (NavigateDirection.FirstChild);
376
			
377
			IGridItemProvider gridItemProvider = (IGridItemProvider)
378
				childProvider.GetPatternProvider (GridItemPatternIdentifiers.Pattern.Id);
379
			Assert.IsNotNull (gridItemProvider,
380
			                  "Not returning GridItemPatternIdentifiers.");
381
			
382
			Assert.AreEqual (1, gridItemProvider.RowSpan, "RowSpan value");
383
		}
384
		
385
		[Test]
386
		public void StatusBarPanelIGridItemProviderColumnSpanTest ()
387
		{
388
			StatusBar statusBar = new StatusBar ();
389
            		IRawElementProviderFragmentRoot rootProvider =
390
				(IRawElementProviderFragmentRoot) GetProviderFromControl (statusBar);
391
			
392
			statusBar.Panels.Add ("Panel");
393
			IRawElementProviderFragment childProvider =
394
				rootProvider.Navigate (NavigateDirection.FirstChild);
395
			
396
			IGridItemProvider gridItemProvider = (IGridItemProvider)
397
				childProvider.GetPatternProvider (GridItemPatternIdentifiers.Pattern.Id);
398
			Assert.IsNotNull (gridItemProvider,
399
			                  "Not returning GridItemPatternIdentifiers.");
400
			
401
			Assert.AreEqual (1, gridItemProvider.ColumnSpan, "ColumnSpan value");
402
		}
403
		
404
		[Test]
405
		public void StatusBarPanelIGridItemProviderContainingGridTest ()
406
		{
407
			StatusBar statusBar = new StatusBar ();
408
            		IRawElementProviderFragmentRoot rootProvider =
409
				(IRawElementProviderFragmentRoot) GetProviderFromControl (statusBar);
410
			
411
			statusBar.Panels.Add ("Panel");
412
			IRawElementProviderFragment childProvider =
413
				rootProvider.Navigate (NavigateDirection.FirstChild);
414
			
415
			IGridItemProvider gridItemProvider = (IGridItemProvider)
416
				childProvider.GetPatternProvider (GridItemPatternIdentifiers.Pattern.Id);
417
			Assert.IsNotNull (gridItemProvider,
418
			                  "Not returning GridItemPatternIdentifiers.");
419
			
420
			IRawElementProviderSimple parentProvider = (IRawElementProviderSimple)
421
				childProvider.Navigate (NavigateDirection.Parent);
422
			IRawElementProviderSimple itemProvider = gridItemProvider.ContainingGrid;
423
			Assert.AreSame (parentProvider, itemProvider, "ContainingGrid value");
424
		}
425
		
426
		#endregion
427
201
		#region BaseProviderTest Overrides
428
		#region BaseProviderTest Overrides
202
429
203
        	protected override Control GetControlInstance ()
430
        	protected override Control GetControlInstance ()

Return to bug 428698