2 * Copyright(c) 2021 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
19 using System.ComponentModel;
20 using System.Runtime.InteropServices;
23 namespace Tizen.NUI.BaseComponents
26 /// Address represents an unique object address on accessibility bus.
28 [EditorBrowsable(EditorBrowsableState.Never)]
32 /// Creates an initialized Address.
34 /// <param name="bus">Accessibility bus</param>
35 /// <param name="path">Accessibility path</param>
36 [EditorBrowsable(EditorBrowsableState.Never)]
37 public Address(string bus, string path)
44 /// Gets or sets accessibility bus.
46 [EditorBrowsable(EditorBrowsableState.Never)]
47 public string Bus { get; set; }
50 /// Gets or sets accessibility path.
52 [EditorBrowsable(EditorBrowsableState.Never)]
53 public string Path { get; set; }
57 /// AddressCollection.
59 [EditorBrowsable(EditorBrowsableState.Never)]
60 public class AddressCollection : SafeHandle
63 /// Creates an initialized AddressCollection.
65 /// <param name="collection">Initialized AddressCollection</param>
66 [EditorBrowsable(EditorBrowsableState.Never)]
67 public AddressCollection(IntPtr collection) : base(collection, true)
72 /// Checks whether this handle is invalid or not.
74 [EditorBrowsable(EditorBrowsableState.Never)]
75 public override bool IsInvalid
79 return this.handle == IntPtr.Zero;
84 /// Gets the size of accessibility relation.
86 /// <param name="relation">Accessibility relation</param>
87 /// <returns>The size of relation, which means the number of elements</returns>
88 [EditorBrowsable(EditorBrowsableState.Never)]
89 public uint GetRelationSize(AccessibilityRelationType relation)
91 uint result = Interop.ControlDevel.DaliToolkitDevelControlAccessibilityRelationsRelationSize(this, Convert.ToInt32(relation));
92 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
97 /// Gets Address object using contained bus and path.
99 /// <param name="relation">Accessibility relation</param>
100 /// <param name="position">Position</param>
101 /// <returns>Accessibility Adress</returns>
102 [EditorBrowsable(EditorBrowsableState.Never)]
103 public Address GetAddressAt(AccessibilityRelationType relation, int position)
105 var bus = Interop.ControlDevel.DaliToolkitDevelControlAccessibilityRelationsAt(this, Convert.ToInt32(relation), position, 0);
106 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
108 var path = Interop.ControlDevel.DaliToolkitDevelControlAccessibilityRelationsAt(this, Convert.ToInt32(relation), position, 1);
109 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
111 return new Address(bus, path);
115 /// Releases handle itself.
117 /// <returns>true when released successfully.</returns>
118 [EditorBrowsable(EditorBrowsableState.Never)]
119 protected override bool ReleaseHandle()
121 Interop.ControlDevel.DaliToolkitDevelControlDeleteAccessibilityRelations(handle);
122 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
123 this.SetHandle(IntPtr.Zero);
129 /// AccessibilityRange is used to store data related with Text.
131 [EditorBrowsable(EditorBrowsableState.Never)]
132 public class AccessibilityRange
135 /// Start position in stored text.
137 public int StartOffset { get; set; } = 0;
140 /// End position in stored text.
142 public int EndOffset { get; set; } = 0;
145 /// Text content in stored text.
147 public string Content { get; set; } = "";
151 /// View is the base class for all views.
153 /// <since_tizen> 3 </since_tizen>
154 public partial class View
156 ///////////////////////////////////////////////////////////////////
157 // ****************** Accessibility Attributes ****************** //
158 ///////////////////////////////////////////////////////////////////
161 /// Adds or modifies the value matched with given key.
164 /// Modification takes place if key was previously set.
166 /// <param name="key">The key to insert</param>
167 /// <param name="value">The value to insert</param>
168 [EditorBrowsable(EditorBrowsableState.Never)]
169 public void AppendAccessibilityAttribute(string key, string value)
171 Interop.ControlDevel.DaliToolkitDevelControlAppendAccessibilityAttribute(SwigCPtr, key, value);
172 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
176 /// Erases a key with its value from accessibility attributes.
178 /// <param name="key">The key to remove</param>
179 [EditorBrowsable(EditorBrowsableState.Never)]
180 public void RemoveAccessibilityAttribute(string key)
182 Interop.ControlDevel.DaliToolkitDevelControlRemoveAccessibilityAttribute(SwigCPtr, key);
183 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
187 /// Clears accessibility attributes.
189 [EditorBrowsable(EditorBrowsableState.Never)]
190 public void ClearAccessibilityAttributes()
192 Interop.ControlDevel.DaliToolkitDevelControlClearAccessibilityAttributes(SwigCPtr);
193 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
196 ///////////////////////////////////////////////////////////////////
197 // ************************** Highlight ************************ //
198 ///////////////////////////////////////////////////////////////////
201 /// Clears accessibility highlight.
203 /// <returns>True if cleared, otherwise false when it is not possible</returns>
204 [EditorBrowsable(EditorBrowsableState.Never)]
205 public bool ClearAccessibilityHighlight()
207 bool result = Interop.ControlDevel.DaliToolkitDevelControlClearAccessibilityHighlight(SwigCPtr);
208 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
213 /// Grabs accessibility highlight.
215 /// <returns>True if cleared, otherwise false when it is not possible</returns>
216 [EditorBrowsable(EditorBrowsableState.Never)]
217 public bool GrabAccessibilityHighlight()
219 bool result = Interop.ControlDevel.DaliToolkitDevelControlGrabAccessibilityHighlight(SwigCPtr);
220 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
225 /// Flag to check whether this view is highlighted or not.
227 [EditorBrowsable(EditorBrowsableState.Never)]
228 protected bool IsHighlighted
232 return (this == Accessibility.Accessibility.Instance.GetCurrentlyHighlightedView());
236 ///////////////////////////////////////////////////////////////////
237 // ****************** Accessibility Relations ******************* //
238 ///////////////////////////////////////////////////////////////////
241 /// Creates relation between objects.
243 /// <param name="second">Object which will be in relation.</param>
244 /// <param name="relation">Relation type.</param>
245 /// <exception cref="ArgumentNullException">You must pass valid object. NULL could not be in relation.</exception>
246 [EditorBrowsable(EditorBrowsableState.Never)]
247 public void AppendAccessibilityRelation(View second, AccessibilityRelationType relation)
251 throw new ArgumentNullException(nameof(second));
254 Interop.ControlDevel.DaliToolkitDevelControlAppendAccessibilityRelation(SwigCPtr, second.SwigCPtr, (int)relation);
255 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
259 /// Removes accessibility relation.
261 /// <param name="second">Object which will be removed in relation</param>
262 /// <param name="relation">Relation type</param>
263 [EditorBrowsable(EditorBrowsableState.Never)]
264 public void RemoveAccessibilityRelation(View second, AccessibilityRelationType relation)
268 throw new ArgumentNullException(nameof(second));
271 Interop.ControlDevel.DaliToolkitDevelControlRemoveAccessibilityRelation(SwigCPtr, second.SwigCPtr, (int)relation);
272 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
276 /// Removes all previously appended relations.
278 [EditorBrowsable(EditorBrowsableState.Never)]
279 public void ClearAccessibilityRelations()
281 Interop.ControlDevel.DaliToolkitDevelControlClearAccessibilityRelations(SwigCPtr);
282 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
286 /// Gets accessibility collection connected with the current object.
288 /// <returns>AddressCollection</returns>
289 [EditorBrowsable(EditorBrowsableState.Never)]
290 public AddressCollection GetAccessibilityRelations()
292 var result = new AddressCollection(Interop.ControlDevel.DaliToolkitDevelControlNewGetAccessibilityRelations(SwigCPtr));
293 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
297 ///////////////////////////////////////////////////////////////////
298 // ********************* ReadingInfoType *********************** //
299 ///////////////////////////////////////////////////////////////////
302 /// Sets accessibility reading information.
304 /// <param name="type">Reading information type</param>
305 [EditorBrowsable(EditorBrowsableState.Never)]
306 public void SetAccessibilityReadingInfoTypes(AccessibilityReadingInfoTypes type)
308 Interop.ControlDevel.DaliToolkitDevelControlSetAccessibilityReadingInfoTypes(SwigCPtr, (int)type);
309 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
313 /// Gets accessibility reading information.
315 /// <returns>Reading information type</returns>
316 [EditorBrowsable(EditorBrowsableState.Never)]
317 public AccessibilityReadingInfoTypes GetAccessibilityReadingInfoTypes()
319 AccessibilityReadingInfoTypes result = (AccessibilityReadingInfoTypes)Interop.ControlDevel.DaliToolkitDevelControlGetAccessibilityReadingInfoTypes(SwigCPtr);
320 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
324 ///////////////////////////////////////////////////////////////////
325 // ******************** Accessibility States ******************* //
326 ///////////////////////////////////////////////////////////////////
329 /// Notifies sending notifications about the current states to accessibility clients.
332 /// If recursive is true, all children of the Accessibility object will also re-emit the states.
334 /// <param name="states">Accessibility States</param>
335 /// <param name="notifyMode">Controls the notification strategy</param>
336 [EditorBrowsable(EditorBrowsableState.Never)]
337 public void NotifyAccessibilityStatesChange(AccessibilityStates states, AccessibilityStatesNotifyMode notifyMode)
339 Interop.ControlDevel.DaliToolkitDevelControlNotifyAccessibilityStatesChange(SwigCPtr, (ulong)states, (int)notifyMode);
340 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
344 /// Gets Accessibility States.
346 /// <returns>Accessibility States</returns>
347 [EditorBrowsable(EditorBrowsableState.Never)]
348 public AccessibilityStates GetAccessibilityStates()
350 AccessibilityStates result = (AccessibilityStates) Interop.ControlDevel.DaliToolkitDevelControlGetAccessibilityStates(SwigCPtr);
351 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
355 ///////////////////////////////////////////////////////////////////
356 // ************************ Accessible ************************* //
357 ///////////////////////////////////////////////////////////////////
360 /// Emits accessibility property changed event.
362 /// <param name="changeEvent">Property changed event</param>
363 [EditorBrowsable(EditorBrowsableState.Never)]
364 public void EmitAccessibilityEvent(AccessibilityPropertyChangeEvent changeEvent)
366 Interop.ControlDevel.DaliAccessibilityEmitAccessibilityEvent(SwigCPtr, Convert.ToInt32(changeEvent));
367 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
371 /// Emits accessibility states changed event.
373 /// <param name="state">Accessibility state</param>
374 /// <param name="equal">True if the state is set or enabled, otherwise false</param>
375 [EditorBrowsable(EditorBrowsableState.Never)]
376 public void EmitAccessibilityStatesChangedEvent(AccessibilityStates state, bool equal)
378 Interop.ControlDevel.DaliAccessibilityEmitAccessibilityStatesChangedEvent(SwigCPtr, (ulong)state, Convert.ToInt32(equal));
379 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
383 /// Emits accessibility text inserted event.
385 /// <param name="cursorPosition">Text cursor position</param>
386 /// <param name="length">Text length</param>
387 /// <param name="content">Inserted text content</param>
388 [EditorBrowsable(EditorBrowsableState.Never)]
389 public void EmitTextInsertedEvent(int cursorPosition, int length, string content)
391 Interop.ControlDevel.DaliAccessibilityEmitTextInsertedEvent(SwigCPtr, cursorPosition, length, content);
392 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
396 /// Emits accessibility text deleted event.
398 /// <param name="cursorPosition">Text cursor position</param>
399 /// <param name="length">Text length</param>
400 /// <param name="content">Inserted text content</param>
401 [EditorBrowsable(EditorBrowsableState.Never)]
402 public void EmitTextDeletedEvent(int cursorPosition, int length, string content)
404 Interop.ControlDevel.DaliAccessibilityEmitTextDeletedEvent(SwigCPtr, cursorPosition, length, content);
405 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
409 /// Emits accessibility text cursor moved event.
411 /// <param name="cursorPosition">The new cursor position</param>
412 [EditorBrowsable(EditorBrowsableState.Never)]
413 public void EmitTextCursorMovedEvent(int cursorPosition)
415 Interop.ControlDevel.DaliAccessibilityEmitTextCursorMovedEvent(SwigCPtr, cursorPosition);
416 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
419 ///////////////////////////////////////////////////////////////////
420 // ************************** Bridge *************************** //
421 ///////////////////////////////////////////////////////////////////
424 /// Registers component as a source of an accessibility "default label".
425 /// The "Default label" is a text that could be read by screen-reader immediately
426 /// after the navigation context has changed (window activates, popup shows up, tab changes)
427 /// and before first UI element is highlighted.
429 [EditorBrowsable(EditorBrowsableState.Never)]
430 public void RegisterDefaultLabel()
432 Interop.ControlDevel.DaliAccessibilityBridgeRegisterDefaultLabel(SwigCPtr);
433 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
437 /// Unregisters component that has been registered previously as a source of an accessibility "default label".
438 /// The "Default label" is a text that could be read by screen-reader immediately
439 /// after the navigation context has changed (window activates, popup shows up, tab changes)
440 /// and before first UI element is highlighted.
442 [EditorBrowsable(EditorBrowsableState.Never)]
443 public void UnregisterDefaultLabel()
445 Interop.ControlDevel.DaliAccessibilityBridgeUnregisterDefaultLabel(SwigCPtr);
446 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
449 private IntPtr DuplicateString(string value)
451 return Interop.ControlDevel.DaliToolkitDevelControlAccessibleImplNUIDuplicateString(value ?? "");
454 private IntPtr DuplicateStates(AccessibilityStates states)
456 return Interop.ControlDevel.DaliToolkitDevelControlConvertState((ulong)states);
459 private IntPtr DuplicateRange(AccessibilityRange range)
461 return Interop.ControlDevel.DaliAccessibilityNewRange(range.StartOffset, range.EndOffset, range.Content);
464 private Interop.ControlDevel.AccessibilityDelegate accessibilityDelegate = null;
465 private IntPtr accessibilityDelegatePtr;
468 /// Sets the specific constructor for creating accessibility structure with its role and interface.
471 /// The method should be called inside OnInitialize method of all classes inheriting from View.
473 /// <param name="role">Accessibility role</param>
474 /// <param name="accessibilityInterface">Accessibility interface</param>
475 [EditorBrowsable(EditorBrowsableState.Never)]
476 public void SetAccessibilityConstructor(Role role, AccessibilityInterface accessibilityInterface = AccessibilityInterface.None)
478 var size = Marshal.SizeOf<Interop.ControlDevel.AccessibilityDelegate>();
480 if (accessibilityDelegate == null)
482 accessibilityDelegate = new Interop.ControlDevel.AccessibilityDelegate()
484 GetName = () => DuplicateString(AccessibilityGetName()),
485 GetDescription = () => DuplicateString(AccessibilityGetDescription()),
486 DoAction = (name) => AccessibilityDoAction(Marshal.PtrToStringAnsi(name)),
487 CalculateStates = (states) => DuplicateStates(AccessibilityCalculateStates(states)),
488 GetActionCount = () => AccessibilityGetActionCount(),
489 GetActionName = (index) => DuplicateString(AccessibilityGetActionName(index)),
490 ShouldReportZeroChildren = () => AccessibilityShouldReportZeroChildren(),
491 GetMinimum = () => AccessibilityGetMinimum(),
492 GetCurrent = () => AccessibilityGetCurrent(),
493 GetMaximum = () => AccessibilityGetMaximum(),
494 SetCurrent = (value) => AccessibilitySetCurrent(value),
495 GetMinimumIncrement = () => AccessibilityGetMinimumIncrement(),
496 IsScrollable = () => AccessibilityIsScrollable(),
497 GetText = (startOffset, endOffset) => DuplicateString(AccessibilityGetText(startOffset, endOffset)),
498 GetCharacterCount = () => AccessibilityGetCharacterCount(),
499 GetCursorOffset = () => AccessibilityGetCursorOffset(),
500 SetCursorOffset = (offset) => AccessibilitySetCursorOffset(offset),
501 GetTextAtOffset = (offset, boundary) => DuplicateRange(AccessibilityGetTextAtOffset(offset, (AccessibilityTextBoundary)boundary)),
502 GetSelection = (selectionNumber) => DuplicateRange(AccessibilityGetSelection(selectionNumber)),
503 RemoveSelection = (selectionNumber) => AccessibilityRemoveSelection(selectionNumber),
504 SetSelection = (selectionNumber, startOffset, endOffset) => AccessibilitySetSelection(selectionNumber, startOffset, endOffset),
505 CopyText = (startPosition, endPosition) => AccessibilityCopyText(startPosition, endPosition),
506 CutText = (startPosition, endPosition) => AccessibilityCutText(startPosition, endPosition),
507 InsertText = (startPosition, text) => AccessibilityInsertText(startPosition, Marshal.PtrToStringAnsi(text)),
508 SetTextContents = (newContents) => AccessibilitySetTextContents(Marshal.PtrToStringAnsi(newContents)),
509 DeleteText = (startPosition, endPosition) => AccessibilityDeleteText(startPosition, endPosition),
510 ScrollToChild = (child) => AccessibilityScrollToChild(this.GetInstanceSafely<View>(child)),
511 GetSelectedChildrenCount = () => AccessibilityGetSelectedChildrenCount(),
512 GetSelectedChild = (selectedChildIndex) => View.getCPtr(AccessibilityGetSelectedChild(selectedChildIndex)).Handle,
513 SelectChild = (childIndex) => AccessibilitySelectChild(childIndex),
514 DeselectSelectedChild = (selectedChildIndex) => AccessibilityDeselectSelectedChild(selectedChildIndex),
515 IsChildSelected = (childIndex) => AccessibilityIsChildSelected(childIndex),
516 SelectAll = () => AccessibilitySelectAll(),
517 ClearSelection = () => AccessibilityClearSelection(),
518 DeselectChild = (childIndex) => AccessibilityDeselectChild(childIndex),
521 accessibilityDelegatePtr = Marshal.AllocHGlobal(size);
522 Marshal.StructureToPtr(accessibilityDelegate, accessibilityDelegatePtr, false);
525 Interop.ControlDevel.DaliToolkitDevelControlSetAccessibilityConstructor(SwigCPtr, (int)role, (int)accessibilityInterface, accessibilityDelegatePtr, size);
527 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
531 /// A helper method to manipulate individual bit flags (e.g. turn them on or off)
533 /// <param name="obj">An object that accumulates combination of bit flags</param>
534 /// <param name="bit">A bit flag to be operated</param>
535 /// <param name="state">A state of the bit flag to be set (0 == off, 1 == on)</param>
536 [EditorBrowsable(EditorBrowsableState.Never)]
537 static public void FlagSetter<T>(ref T obj ,T bit, bool state)
539 dynamic result = obj;
552 [EditorBrowsable(EditorBrowsableState.Never)]
553 protected override void Dispose(bool disposing)
560 if (disposing == false)
562 if (IsNativeHandleInvalid() || SwigCMemOwn == false)
564 // at this case, implicit nor explicit dispose is not required. No native object is made.
575 if (accessibilityDelegate != null)
577 Marshal.DestroyStructure<Interop.ControlDevel.AccessibilityDelegate>(accessibilityDelegatePtr);
578 Marshal.FreeHGlobal(accessibilityDelegatePtr);
579 accessibilityDelegate = null;
582 base.Dispose(disposing);
585 [EditorBrowsable(EditorBrowsableState.Never)]
586 protected static readonly string AccessibilityActivateAction = "activate";
587 [EditorBrowsable(EditorBrowsableState.Never)]
588 protected static readonly string AccessibilityReadingSkippedAction = "ReadingSkipped";
589 [EditorBrowsable(EditorBrowsableState.Never)]
590 protected static readonly string AccessibilityReadingCancelledAction = "ReadingCancelled";
591 [EditorBrowsable(EditorBrowsableState.Never)]
592 protected static readonly string AccessibilityReadingStoppedAction = "ReadingStopped";
593 [EditorBrowsable(EditorBrowsableState.Never)]
594 protected static readonly string AccessibilityReadingPausedAction = "ReadingPaused";
595 [EditorBrowsable(EditorBrowsableState.Never)]
596 protected static readonly string AccessibilityReadingResumedAction = "ReadingResumed";
598 [EditorBrowsable(EditorBrowsableState.Never)]
599 private static readonly string[] AccessibilityActions = {
600 AccessibilityActivateAction,
601 AccessibilityReadingSkippedAction,
602 AccessibilityReadingCancelledAction,
603 AccessibilityReadingStoppedAction,
604 AccessibilityReadingPausedAction,
605 AccessibilityReadingResumedAction,
608 [EditorBrowsable(EditorBrowsableState.Never)]
609 protected virtual string AccessibilityGetName()
614 [EditorBrowsable(EditorBrowsableState.Never)]
615 protected virtual string AccessibilityGetDescription()
620 [EditorBrowsable(EditorBrowsableState.Never)]
621 protected virtual bool AccessibilityDoAction(string name)
626 [EditorBrowsable(EditorBrowsableState.Never)]
627 protected virtual AccessibilityStates AccessibilityCalculateStates(ulong states)
629 AccessibilityStates accessibilityStates = (AccessibilityStates)states;
631 FlagSetter(ref accessibilityStates, AccessibilityStates.Highlightable, this.AccessibilityHighlightable);
632 FlagSetter(ref accessibilityStates, AccessibilityStates.Focusable, this.Focusable);
633 FlagSetter(ref accessibilityStates, AccessibilityStates.Focused, this.State == States.Focused);
634 FlagSetter(ref accessibilityStates, AccessibilityStates.Highlighted, this.IsHighlighted);
635 FlagSetter(ref accessibilityStates, AccessibilityStates.Enabled, this.State != States.Disabled);
636 FlagSetter(ref accessibilityStates, AccessibilityStates.Sensitive, this.Sensitive);
637 FlagSetter(ref accessibilityStates, AccessibilityStates.Visible, true);
638 FlagSetter(ref accessibilityStates, AccessibilityStates.Defunct, !this.IsOnWindow);
640 return accessibilityStates;
643 [EditorBrowsable(EditorBrowsableState.Never)]
644 protected virtual int AccessibilityGetActionCount()
646 return AccessibilityActions.Length;
649 [EditorBrowsable(EditorBrowsableState.Never)]
650 protected virtual string AccessibilityGetActionName(int index)
652 if (index >= 0 && index < AccessibilityActions.Length)
654 return AccessibilityActions[index];
662 [EditorBrowsable(EditorBrowsableState.Never)]
663 protected virtual bool AccessibilityShouldReportZeroChildren()
668 [EditorBrowsable(EditorBrowsableState.Never)]
669 protected virtual double AccessibilityGetMinimum()
674 [EditorBrowsable(EditorBrowsableState.Never)]
675 protected virtual double AccessibilityGetCurrent()
680 [EditorBrowsable(EditorBrowsableState.Never)]
681 protected virtual double AccessibilityGetMaximum()
686 [EditorBrowsable(EditorBrowsableState.Never)]
687 protected virtual bool AccessibilitySetCurrent(double value)
692 [EditorBrowsable(EditorBrowsableState.Never)]
693 protected virtual double AccessibilityGetMinimumIncrement()
698 [EditorBrowsable(EditorBrowsableState.Never)]
699 protected virtual bool AccessibilityIsScrollable()
704 [EditorBrowsable(EditorBrowsableState.Never)]
705 protected virtual string AccessibilityGetText(int startOffset, int endOffset)
710 [EditorBrowsable(EditorBrowsableState.Never)]
711 protected virtual int AccessibilityGetCharacterCount()
716 [EditorBrowsable(EditorBrowsableState.Never)]
717 protected virtual int AccessibilityGetCursorOffset()
722 [EditorBrowsable(EditorBrowsableState.Never)]
723 protected virtual bool AccessibilitySetCursorOffset(int offset)
728 [EditorBrowsable(EditorBrowsableState.Never)]
729 protected virtual AccessibilityRange AccessibilityGetTextAtOffset(int offset, AccessibilityTextBoundary boundary)
731 return new AccessibilityRange();
734 [EditorBrowsable(EditorBrowsableState.Never)]
735 protected virtual AccessibilityRange AccessibilityGetSelection(int selectionNumber)
737 return new AccessibilityRange();
740 [EditorBrowsable(EditorBrowsableState.Never)]
741 protected virtual bool AccessibilityRemoveSelection(int selectionNumber)
746 [EditorBrowsable(EditorBrowsableState.Never)]
747 protected virtual bool AccessibilitySetSelection(int selectionNumber, int startOffset, int endOffset)
752 [EditorBrowsable(EditorBrowsableState.Never)]
753 protected virtual bool AccessibilityCopyText(int startPosition, int endPosition)
758 [EditorBrowsable(EditorBrowsableState.Never)]
759 protected virtual bool AccessibilityCutText(int startPosition, int endPosition)
764 [EditorBrowsable(EditorBrowsableState.Never)]
765 protected virtual bool AccessibilityInsertText(int startPosition, string text)
770 [EditorBrowsable(EditorBrowsableState.Never)]
771 protected virtual bool AccessibilitySetTextContents(string newContents)
776 [EditorBrowsable(EditorBrowsableState.Never)]
777 protected virtual bool AccessibilityDeleteText(int startPosition, int endPosition)
782 [EditorBrowsable(EditorBrowsableState.Never)]
783 protected virtual bool AccessibilityScrollToChild(View child)
788 [EditorBrowsable(EditorBrowsableState.Never)]
789 protected virtual int AccessibilityGetSelectedChildrenCount()
794 [EditorBrowsable(EditorBrowsableState.Never)]
795 protected virtual View AccessibilityGetSelectedChild(int selectedChildIndex)
800 [EditorBrowsable(EditorBrowsableState.Never)]
801 protected virtual bool AccessibilitySelectChild(int childIndex)
806 [EditorBrowsable(EditorBrowsableState.Never)]
807 protected virtual bool AccessibilityDeselectSelectedChild(int selectedChildIndex)
812 [EditorBrowsable(EditorBrowsableState.Never)]
813 protected virtual bool AccessibilityIsChildSelected(int childIndex)
818 [EditorBrowsable(EditorBrowsableState.Never)]
819 protected virtual bool AccessibilitySelectAll()
824 [EditorBrowsable(EditorBrowsableState.Never)]
825 protected virtual bool AccessibilityClearSelection()
830 [EditorBrowsable(EditorBrowsableState.Never)]
831 protected virtual bool AccessibilityDeselectChild(int childIndex)