// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using Windows.Win32.UI.Accessibility; namespace System.Windows.Forms; public partial class TrackBar { internal sealed class TrackBarFirstButtonAccessibleObject : TrackBarChildAccessibleObject { public TrackBarFirstButtonAccessibleObject(TrackBar owningTrackBar) : base(owningTrackBar) { } public override string DefaultAction => SR.AccessibleActionPress; private protected override bool IsInternal => true; internal override bool CanGetDefaultActionInternal => false; public override string? Name => !this.TryGetOwnerAs(out TrackBar? owner) || ParentInternal is not { } parent ? null : owner.Orientation == Orientation.Horizontal && (owner.RightToLeft == RightToLeft.No || parent.IsMirrored) ? SR.TrackBarLargeDecreaseButtonName : SR.TrackBarLargeIncreaseButtonName; internal override bool CanGetNameInternal => false; internal override bool IsDisplayed { get { if (!this.TryGetOwnerAs(out TrackBar? owner) || ParentInternal is not { } parent || !owner.IsHandleCreated || !base.IsDisplayed) { return false; } return owner.Orientation == Orientation.Vertical || parent.RTLLayoutDisabled ? owner.Maximum != owner.Value : owner.Minimum != owner.Value; } } internal override IRawElementProviderFragment.Interface? FragmentNavigate(NavigateDirection direction) { if (!this.IsOwnerHandleCreated(out TrackBar? _)) { return null; } return direction switch { NavigateDirection.NavigateDirection_PreviousSibling => null, NavigateDirection.NavigateDirection_NextSibling => IsDisplayed ? ParentInternal?.ThumbAccessibleObject : null, _ => base.FragmentNavigate(direction) }; } internal override int GetChildId() => 1; internal override void Invoke() { if (this.IsOwnerHandleCreated(out TrackBar? _)) { // The "GetChildId" method returns to the id of the trackbar element, // which allows to use the native "accDoDefaultAction" method when the "Invoke" method is called ParentInternal?.SystemIAccessible.TryDoDefaultAction(GetChildId()); } } } } |