268 references to PanelTargetKind
Aspire.Tray.Tests (268)
src\Aspire.Tray\Common\TrayPanel.cs (101)
232
_focus = new(
PanelTargetKind
.Back, PanelSection.None, null);
428
_focus = new(
PanelTargetKind
.OpenInMenu, open.Section, open.Host);
465
private static bool IsPrimary(
PanelTargetKind
kind)
466
=> kind is
PanelTargetKind
.Row or
PanelTargetKind
.ToggleRecent or
PanelTargetKind
.Documentation
467
or
PanelTargetKind
.Settings or
PanelTargetKind
.Quit or
PanelTargetKind
.ConfirmCancel or
PanelTargetKind
.Back
468
or
PanelTargetKind
.LaunchAtSignIn || IsActionItem(kind);
470
private static bool IsConfirmTarget(
PanelTargetKind
kind)
471
=> kind is
PanelTargetKind
.ConfirmCancel or
PanelTargetKind
.ConfirmAccept;
474
private static bool IsActionItem(
PanelTargetKind
kind)
475
=> kind is
PanelTargetKind
.OpenInMenu or
PanelTargetKind
.OpenIn or
PanelTargetKind
.ShowInFolder or
PanelTargetKind
.CopyPath
476
or
PanelTargetKind
.TogglePin or
PanelTargetKind
.RemoveRecent;
508
var top = Scene.Targets.FirstOrDefault(target => target.Key == row with { Kind =
PanelTargetKind
.Row, Item = 0 })?.Bounds.Y ?? bottom;
528
_focus = new(
PanelTargetKind
.More, actions.Section, actions.Host);
538
_focus = new(
PanelTargetKind
.ConfirmCancel, confirm.Section, confirm.Host?.Id);
570
PanelConfirmKind.ClearRecent => new(
PanelTargetKind
.ClearRecent, confirm.Section, null),
571
_ => new(
PanelTargetKind
.Start, confirm.Section, confirm.Host?.Id)
580
_focus = new(
PanelTargetKind
.Settings, PanelSection.None, null);
605
index = order.FindIndex(target => target.Kind ==
PanelTargetKind
.Row && target.Key.Host == current.Host
661
if (_actions is not null && target.Kind is not (
PanelTargetKind
.More or
PanelTargetKind
.Row) && !IsActionItem(target.Kind))
671
case
PanelTargetKind
.Row:
673
case
PanelTargetKind
.Dashboard:
675
case
PanelTargetKind
.More:
678
case
PanelTargetKind
.Stop:
680
case
PanelTargetKind
.Start:
682
case
PanelTargetKind
.OpenInMenu:
688
case
PanelTargetKind
.OpenIn:
695
case
PanelTargetKind
.ShowInFolder:
698
case
PanelTargetKind
.CopyPath:
701
case
PanelTargetKind
.TogglePin:
704
case
PanelTargetKind
.RemoveRecent:
707
case
PanelTargetKind
.ToggleRecent:
711
case
PanelTargetKind
.ClearRecent:
714
case
PanelTargetKind
.ConfirmCancel:
717
case
PanelTargetKind
.ConfirmAccept when _confirm is { } confirmed:
725
case
PanelTargetKind
.Back:
726
case
PanelTargetKind
.Settings when _settings is not null:
729
case
PanelTargetKind
.LaunchAtSignIn:
731
case
PanelTargetKind
.Documentation:
733
case
PanelTargetKind
.Settings:
735
case
PanelTargetKind
.Quit:
777
void Add(ListItemKind kind, double height, PanelSection section, AppHostMenuItem? host,
PanelTargetKind
target = default)
818
Add(ListItemKind.SectionHeader, SectionHeaderHeight, PanelSection.None, null,
PanelTargetKind
.LaunchAtSignIn);
819
Add(ListItemKind.SettingsToggle, SettingsRowHeight, PanelSection.None, null,
PanelTargetKind
.LaunchAtSignIn);
820
Add(ListItemKind.SectionHeader, SectionHeaderHeight, PanelSection.None, null,
PanelTargetKind
.Documentation);
881
var general = item.Target ==
PanelTargetKind
.LaunchAtSignIn;
1024
Box(actions[i].Kind ==
PanelTargetKind
.OpenIn
1027
actions[i].Kind ==
PanelTargetKind
.OpenIn ? "open-in app icon" : "action icon");
1152
var toggleKey = new PanelTargetKey(
PanelTargetKind
.ToggleRecent, section, null);
1163
var clearKey = new PanelTargetKey(
PanelTargetKind
.ClearRecent, section, null);
1173
var rowKey = new PanelTargetKey(
PanelTargetKind
.Row, section, host.Id);
1188
? new[] {
PanelTargetKind
.Dashboard,
PanelTargetKind
.Stop,
PanelTargetKind
.More }
1189
: [
PanelTargetKind
.Start,
PanelTargetKind
.More];
1198
foreach (
var
kind in buttons)
1205
PanelTargetKind
.Dashboard => (PanelIcon.ExternalLink, $"Open dashboard for {host.DisplayName}", "Open dashboard", host.CanOpenDashboard),
1206
PanelTargetKind
.Stop => (PanelIcon.Stop, $"Stop {host.DisplayName}", "Stop", host.CanStop),
1207
PanelTargetKind
.Start => (PanelIcon.Play, $"Start {host.DisplayName}", "Start", host.CanStart),
1218
if (kind ==
PanelTargetKind
.More && expanded && _hover != key && _pressed != key)
1257
private List<(
PanelTargetKind
Kind, int Item, PanelIcon Icon, string Label, string Name)> GetRowActions(AppHostMenuItem host, PanelSection section)
1260
var actions = new List<(
PanelTargetKind
, int, PanelIcon, string, string)>();
1263
actions.Add((
PanelTargetKind
.OpenInMenu, 0, PanelIcon.AppWindow, "Open in",
1268
actions.Add((
PanelTargetKind
.OpenIn, i, PanelIcon.AppWindow, application, $"Open {name} in {application}"));
1271
actions.Add((
PanelTargetKind
.ShowInFolder, 0, PanelIcon.Folder, $"Show in {_fileManagerName}", $"Show {name} in {_fileManagerName}"));
1272
actions.Add((
PanelTargetKind
.CopyPath, 0, PanelIcon.Copy, "Copy path", $"Copy the folder path of {name}"));
1274
? (
PanelTargetKind
.TogglePin, 0, PanelIcon.Unpin, "Unpin", $"Unpin {name}")
1275
: (
PanelTargetKind
.TogglePin, 0, PanelIcon.Pin, "Pin", $"Pin {name}"));
1278
actions.Add((
PanelTargetKind
.RemoveRecent, 0, PanelIcon.Remove, "Remove from recent", $"Remove {name} from recent AppHosts"));
1301
if (kind ==
PanelTargetKind
.OpenIn)
1316
if (kind ==
PanelTargetKind
.OpenInMenu)
1388
var cancelKey = new PanelTargetKey(
PanelTargetKind
.ConfirmCancel, section, id);
1389
var acceptKey = new PanelTargetKey(
PanelTargetKind
.ConfirmAccept, section, id);
1418
var backKey = new PanelTargetKey(
PanelTargetKind
.Back, PanelSection.None, null);
1427
private void AddSettingsToggle(List<PanelCommand> commands, List<PanelHitTarget> targets,
PanelTargetKind
kind, PanelSettings settings,
1482
(
PanelTargetKind
.Settings, PanelIcon.Gear, _settings is null ? "Settings" : "Close settings",
1484
(
PanelTargetKind
.Documentation, PanelIcon.Globe, "Open Aspire documentation", "Documentation", null, right - 2 * ButtonSize - ButtonGap),
1485
(
PanelTargetKind
.Quit, PanelIcon.Power, _quitVerb, quitDescription, quitDescription, right - ButtonSize)
1490
if (kind ==
PanelTargetKind
.Settings && _settings is not null && _hover != key && _pressed != key)
1535
private static bool IsChrome(
PanelTargetKind
kind)
1536
=> kind is
PanelTargetKind
.Documentation or
PanelTargetKind
.Settings or
PanelTargetKind
.Quit or
PanelTargetKind
.Back;
1540
&& value.Kind is
PanelTargetKind
.Row or
PanelTargetKind
.Dashboard or
PanelTargetKind
.Stop
1541
or
PanelTargetKind
.Start or
PanelTargetKind
.More;
1631
PanelTargetKind
Target);
src\Aspire.Tray\Common\TrayPanelScene.cs (2)
165
internal readonly record struct PanelTargetKey(
PanelTargetKind
Kind, PanelSection Section, AppHostId? Host, int Item = 0);
198
public
PanelTargetKind
Kind => Key.Kind;
TrayPanelTests.cs (165)
40
Click(panel, Target(panel,
PanelTargetKind
.More, state.AppHosts[3]).HitBounds);
43
Click(panel, Target(panel,
PanelTargetKind
.More, state.AppHosts[0]).HitBounds);
44
Click(panel, Target(panel,
PanelTargetKind
.OpenInMenu, state.AppHosts[0]).HitBounds);
47
Click(panel, panel.Scene.Targets.Single(target => target.Kind ==
PanelTargetKind
.ToggleRecent).HitBounds);
48
Click(panel, Target(panel,
PanelTargetKind
.More, state.RecentAppHosts[0]).HitBounds);
51
Click(panel, panel.Scene.Targets.Single(target => target.Kind ==
PanelTargetKind
.ClearRecent).HitBounds);
81
var footer = scene.Targets.Where(target => target.Kind is
PanelTargetKind
.Documentation or
PanelTargetKind
.Settings or
PanelTargetKind
.Quit).ToList();
84
Assert.All(scene.Targets.Where(target => target.Kind is not (
PanelTargetKind
.Documentation or
PanelTargetKind
.Settings
85
or
PanelTargetKind
.Quit or
PanelTargetKind
.Back)),
94
var rows = scene.Targets.Where(target => target.Kind is
PanelTargetKind
.Row).ToList();
95
var buttons = scene.Targets.Where(target => target.Kind is
PanelTargetKind
.Dashboard or
PanelTargetKind
.Stop
96
or
PanelTargetKind
.Start or
PanelTargetKind
.More).ToList();
112
var buttons = scene.Targets.Where(target => target.Kind is
PanelTargetKind
.Dashboard or
PanelTargetKind
.Stop
113
or
PanelTargetKind
.Start or
PanelTargetKind
.More).Select(target => target.Bounds).ToList();
132
var rows = scene.Targets.Where(target => target.Kind ==
PanelTargetKind
.Row).ToList();
137
Assert.Contains(scene.Targets, target => target.Kind ==
PanelTargetKind
.ClearRecent);
145
var toggle = Assert.Single(panel.Scene.Targets, target => target.Kind ==
PanelTargetKind
.ToggleRecent);
151
Assert.Equal(2, panel.Scene.Targets.Count(target => target.Kind ==
PanelTargetKind
.Row && target.Key.Section == PanelSection.Recent));
161
Assert.Equal(2, panel.Scene.Targets.Count(target => target.Kind ==
PanelTargetKind
.Row));
172
var response = Click(panel, Target(panel,
PanelTargetKind
.Row, host).HitBounds, offsetX: 10);
177
var focused = Target(panel,
PanelTargetKind
.Row, state.AppHosts[0]).Key;
188
var row = Target(panel,
PanelTargetKind
.Row, host);
190
var response = Click(panel, Target(panel,
PanelTargetKind
.More, host).HitBounds);
202
var next = Target(panel,
PanelTargetKind
.Row, state.AppHosts[3]);
217
PanelAction? Pick(
PanelTargetKind
kind, int item = 0)
219
Click(panel, Target(panel,
PanelTargetKind
.More, host).HitBounds);
220
if (kind ==
PanelTargetKind
.OpenIn)
222
Click(panel, Target(panel,
PanelTargetKind
.OpenInMenu, host).HitBounds);
231
Pick(
PanelTargetKind
.OpenIn, 1)! with { Anchor = default });
232
Assert.Equal(PanelActionKind.ShowInFolder, Pick(
PanelTargetKind
.ShowInFolder)?.Kind);
233
Assert.Equal(PanelActionKind.CopyPath, Pick(
PanelTargetKind
.CopyPath)?.Kind);
234
var pin = Pick(
PanelTargetKind
.TogglePin);
237
Click(panel, Target(panel,
PanelTargetKind
.More, host).HitBounds);
246
Click(panel, Target(panel,
PanelTargetKind
.More, state.AppHosts[3]).HitBounds);
248
Assert.Equal("Unpin Weather", panel.Scene.Targets.Single(target => target.Kind ==
PanelTargetKind
.TogglePin).AccessibleName);
249
Assert.DoesNotContain(panel.Scene.Targets, target => target.Kind ==
PanelTargetKind
.RemoveRecent);
251
Click(panel, panel.Scene.Targets.Single(target => target.Kind ==
PanelTargetKind
.ToggleRecent).HitBounds);
253
Click(panel, Target(panel,
PanelTargetKind
.More, recent).HitBounds);
254
var remove = panel.Scene.Targets.Single(target => target.Kind ==
PanelTargetKind
.RemoveRecent);
267
Click(panel, Target(panel,
PanelTargetKind
.More, state.AppHosts[0]).HitBounds);
268
Assert.Equal("Hide actions for eShop", Target(panel,
PanelTargetKind
.More, state.AppHosts[0]).AccessibleName);
269
Click(panel, Target(panel,
PanelTargetKind
.More, state.AppHosts[0]).HitBounds);
272
Click(panel, Target(panel,
PanelTargetKind
.More, state.AppHosts[0]).HitBounds);
273
Click(panel, Target(panel,
PanelTargetKind
.More, state.AppHosts[1]).HitBounds);
276
var stop = Click(panel, Target(panel,
PanelTargetKind
.Stop, state.AppHosts[0]).HitBounds);
287
var more = Target(panel,
PanelTargetKind
.More, state.AppHosts[0]).Key;
293
Assert.Equal(new PanelTargetKey(
PanelTargetKind
.OpenInMenu, PanelSection.Running, host), panel.FocusedTarget);
297
Assert.Equal(new PanelTargetKey(
PanelTargetKind
.OpenIn, PanelSection.Running, host, 1), panel.FocusedTarget);
301
Assert.Equal(new PanelTargetKey(
PanelTargetKind
.OpenInMenu, PanelSection.Running, host), panel.FocusedTarget);
302
Assert.DoesNotContain(panel.Scene.Targets, target => target.Kind ==
PanelTargetKind
.OpenIn);
304
Assert.Equal(new PanelTargetKey(
PanelTargetKind
.ShowInFolder, PanelSection.Running, host), panel.FocusedTarget);
317
Click(panel, Target(panel,
PanelTargetKind
.More, host).HitBounds);
320
var openIn = Target(panel,
PanelTargetKind
.OpenInMenu, host);
324
Assert.Equal($"Hide applications to open {host.DisplayName} in", Target(panel,
PanelTargetKind
.OpenInMenu, host).AccessibleName);
325
var applications = panel.Scene.Targets.Where(target => target.Kind ==
PanelTargetKind
.OpenIn).ToList();
334
Click(panel, Target(panel,
PanelTargetKind
.OpenInMenu, host).HitBounds);
335
Assert.DoesNotContain(panel.Scene.Targets, target => target.Kind ==
PanelTargetKind
.OpenIn);
343
Click(panel, Target(panel,
PanelTargetKind
.More, state.AppHosts[0]).HitBounds);
345
Assert.DoesNotContain(panel.Scene.Targets, target => target.Kind is
PanelTargetKind
.OpenInMenu or
PanelTargetKind
.OpenIn);
353
Click(panel, Target(panel,
PanelTargetKind
.More, state.AppHosts[0]).HitBounds);
357
Assert.DoesNotContain(panel.Scene.Targets, target => target.Kind ==
PanelTargetKind
.CopyPath);
367
panel.Focus(Target(panel,
PanelTargetKind
.Row, last).Key);
369
panel.Invoke(Target(panel,
PanelTargetKind
.More, last).Key);
371
Assert.All(panel.Scene.Targets.Where(target => target.Kind is
PanelTargetKind
.CopyPath or
PanelTargetKind
.TogglePin),
383
Assert.Equal(Target(panel,
PanelTargetKind
.Row, state.AppHosts[0]).Key, panel.FocusedTarget);
393
Assert.Equal(PanelActionKind.Stop, Click(panel, Target(panel,
PanelTargetKind
.Stop, state.AppHosts[0]).HitBounds).Action?.Kind);
394
Assert.Equal(PanelActionKind.OpenDashboard, Click(panel, Target(panel,
PanelTargetKind
.Dashboard, state.AppHosts[0]).HitBounds).Action?.Kind);
395
var start = Click(panel, Target(panel,
PanelTargetKind
.Start, state.AppHosts[3]).HitBounds).Action;
398
Assert.Equal(PanelActionKind.Settings, Click(panel, panel.Scene.Targets.Single(t => t.Kind ==
PanelTargetKind
.Settings).HitBounds).Action?.Kind);
399
Assert.Equal(PanelActionKind.Quit, Click(panel, panel.Scene.Targets.Single(t => t.Kind ==
PanelTargetKind
.Quit).HitBounds).Action?.Kind);
400
Assert.Equal(PanelActionKind.Documentation, Click(panel, panel.Scene.Targets.Single(t => t.Kind ==
PanelTargetKind
.Documentation).HitBounds).Action?.Kind);
408
var dashboard = Target(panel,
PanelTargetKind
.Dashboard, state.AppHosts[2]);
419
var stop = Target(panel,
PanelTargetKind
.Stop, state.AppHosts[0]);
420
var more = Target(panel,
PanelTargetKind
.More, state.AppHosts[0]);
433
var stop = Target(panel,
PanelTargetKind
.Stop, state.AppHosts[0]);
451
var row = Target(panel,
PanelTargetKind
.Row, state.AppHosts[0]);
468
var footer = scene.Targets.Single(target => target.Kind ==
PanelTargetKind
.Quit).Bounds;
474
Assert.Equal(footer, panel.Scene.Targets.Single(target => target.Kind ==
PanelTargetKind
.Quit).Bounds);
479
var last = panel.Scene.Targets.Last(target => target.Kind ==
PanelTargetKind
.ToggleRecent);
491
var first = panel.Scene.Targets.FirstOrDefault(target => target.Kind ==
PanelTargetKind
.Row && target.Host == state.AppHosts[0]);
505
Assert.Equal(new PanelTargetKey(
PanelTargetKind
.Row, PanelSection.Running, state.AppHosts[0].Id), panel.FocusedTarget);
511
Assert.Equal(new PanelTargetKey(
PanelTargetKind
.Row, PanelSection.Running, state.AppHosts[^1].Id), panel.FocusedTarget);
533
Assert.DoesNotContain(new PanelTargetKey(
PanelTargetKind
.Dashboard, PanelSection.Running, state.AppHosts[2].Id), visited);
555
var action = Click(panel, Target(panel,
PanelTargetKind
.Stop, state.AppHosts[1]).HitBounds).Action;
557
Assert.Equal(new PanelAction(PanelActionKind.Stop, state.AppHosts[1], Target(panel,
PanelTargetKind
.Stop, state.AppHosts[1]).Bounds), action);
559
Assert.Contains(panel.Scene.Targets, target => target.Kind ==
PanelTargetKind
.Row && target.Host == state.AppHosts[1]);
570
Assert.False(Target(panel,
PanelTargetKind
.Dashboard, stopping).Enabled);
571
Assert.Null(Click(panel, Target(panel,
PanelTargetKind
.Row, stopping).HitBounds, offsetX: 10).Action);
572
Assert.Null(Click(panel, Target(panel,
PanelTargetKind
.Row, starting).HitBounds, offsetX: 10).Action);
579
Click(panel, panel.Scene.Targets.Single(target => target.Kind ==
PanelTargetKind
.ClearRecent).HitBounds);
593
Click(panel, panel.Scene.Targets.Single(target => target.Kind ==
PanelTargetKind
.ClearRecent).HitBounds);
595
var response = Click(panel, panel.Scene.Targets.Single(target => target.Kind ==
PanelTargetKind
.ConfirmCancel).HitBounds);
599
Assert.Contains(panel.Scene.Targets, target => target.Kind ==
PanelTargetKind
.ToggleRecent);
606
Click(panel, panel.Scene.Targets.Single(target => target.Kind ==
PanelTargetKind
.ClearRecent).HitBounds);
608
var action = Click(panel, panel.Scene.Targets.Single(target => target.Kind ==
PanelTargetKind
.Documentation).HitBounds).Action;
632
var response = Click(panel, panel.Scene.Targets.Single(target => target.Kind ==
PanelTargetKind
.ClearRecent).HitBounds);
639
Assert.DoesNotContain(panel.Scene.Targets, target => target.Kind is
PanelTargetKind
.ToggleRecent);
640
Assert.Equal(new PanelTargetKey(
PanelTargetKind
.ConfirmCancel, PanelSection.Recent, null), panel.FocusedTarget);
641
var accept = panel.Scene.Targets.Single(target => target.Kind ==
PanelTargetKind
.ConfirmAccept);
658
var action = Click(panel, Target(panel,
PanelTargetKind
.ConfirmAccept, missing).HitBounds).Action;
668
Assert.Equal(PanelActionKind.Settings, Click(panel, panel.Scene.Targets.Single(t => t.Kind ==
PanelTargetKind
.Settings).HitBounds).Action?.Kind);
674
Assert.DoesNotContain(panel.Scene.Targets, target => target.Kind ==
PanelTargetKind
.Row);
675
Assert.Equal(new PanelTargetKey(
PanelTargetKind
.Back, PanelSection.None, null), panel.FocusedTarget);
676
var launch = panel.Scene.Targets.Single(target => target.Kind ==
PanelTargetKind
.LaunchAtSignIn);
688
Assert.True(panel.Scene.Targets.Single(target => target.Kind ==
PanelTargetKind
.LaunchAtSignIn).Checked);
697
var launch = panel.Scene.Targets.Single(target => target.Kind ==
PanelTargetKind
.LaunchAtSignIn);
710
var launch = panel.Scene.Targets.Single(target => target.Kind ==
PanelTargetKind
.LaunchAtSignIn);
731
Assert.Equal(new PanelTargetKey(
PanelTargetKind
.Settings, PanelSection.None, null), panel.FocusedTarget);
734
Assert.Null(Click(panel, panel.Scene.Targets.Single(target => target.Kind ==
PanelTargetKind
.Back).HitBounds).Action);
743
Click(panel, Target(panel,
PanelTargetKind
.Stop, state.AppHosts[0]).HitBounds);
751
Click(panel, Target(panel,
PanelTargetKind
.More, state.AppHosts[0]).HitBounds);
889
foreach (var button in scene.Targets.Where(target => target.Kind is
PanelTargetKind
.Dashboard or
PanelTargetKind
.Stop
890
or
PanelTargetKind
.Start or
PanelTargetKind
.More or
PanelTargetKind
.Settings or
PanelTargetKind
.Documentation
891
or
PanelTargetKind
.Quit or
PanelTargetKind
.Back).Where(target => !target.HitBounds.IsEmpty))
894
if (button.Kind ==
PanelTargetKind
.Back)
923
Assert.All(scene.Targets.Where(target => target.Kind is
PanelTargetKind
.Row or
PanelTargetKind
.LaunchAtSignIn),
989
Assert.All(scene.Targets.Where(target => target.Kind ==
PanelTargetKind
.Back),
1129
Click(panel, panel.Scene.Targets.Single(target => target.Kind ==
PanelTargetKind
.ClearRecent).HitBounds);
1130
var accept = panel.Scene.Targets.Single(target => target.Kind ==
PanelTargetKind
.ConfirmAccept);
1276
var row = panel.Scene.Targets.Where(target => target.Kind ==
PanelTargetKind
.Row).ElementAt(1);
1305
Assert.Equal([
PanelTargetKind
.Settings,
PanelTargetKind
.Documentation,
PanelTargetKind
.Quit],
1321
Assert.Equal(
PanelTargetKind
.Row, firstRow.Target?.Kind);
1324
var recent = scene.Accessibility.Single(element => element.Target?.Kind ==
PanelTargetKind
.ToggleRecent);
1332
panel.Invoke(panel.Scene.Targets.Single(target => target.Kind ==
PanelTargetKind
.ClearRecent).Key);
1351
Assert.Null(panel.Invoke(panel.Scene.Targets.Single(target => target.Kind ==
PanelTargetKind
.ClearRecent).Key).Action);
1353
Assert.Equal(
PanelTargetKind
.ConfirmCancel, panel.FocusedTarget?.Kind);
1355
var accept = panel.Scene.Targets.Single(target => target.Kind ==
PanelTargetKind
.ConfirmAccept).Key;
1366
var disabled = Target(panel,
PanelTargetKind
.Dashboard, state.AppHosts[2]);
1370
Assert.Equal(PanelResponse.None, panel.Invoke(new(
PanelTargetKind
.Back, PanelSection.None, null)));
1378
var last = panel.Scene.Accessibility.Last(element => element.Target?.Kind ==
PanelTargetKind
.Row);
1399
var launch = panel.Scene.Accessibility.Single(element => element.Target?.Kind ==
PanelTargetKind
.LaunchAtSignIn);
1417
Assert.Equal("Open dashboard", Target(panel,
PanelTargetKind
.Dashboard, running).Tooltip);
1418
Assert.Equal("Stop", Target(panel,
PanelTargetKind
.Stop, running).Tooltip);
1419
Assert.Equal("Start", Target(panel,
PanelTargetKind
.Start, stopped).Tooltip);
1420
Assert.Equal("More actions", Target(panel,
PanelTargetKind
.More, running).Tooltip);
1423
Assert.All(panel.Scene.Targets.Where(target => target.Kind is
PanelTargetKind
.Row or
PanelTargetKind
.ToggleRecent or
PanelTargetKind
.ClearRecent),
1426
Click(panel, Target(panel,
PanelTargetKind
.More, running).HitBounds);
1427
Assert.Equal("Hide actions", Target(panel,
PanelTargetKind
.More, running).Tooltip);
1429
Assert.Equal("Back", panel.Scene.Targets.Single(target => target.Kind ==
PanelTargetKind
.Back).Tooltip);
1430
Assert.Equal("Close settings", panel.Scene.Targets.Single(target => target.Kind ==
PanelTargetKind
.Settings).Tooltip);
1439
var quit = panel.Scene.Accessibility.Single(element => element.Target?.Kind ==
PanelTargetKind
.Quit);
1453
Assert.Equal([
PanelTargetKind
.Settings,
PanelTargetKind
.Documentation,
PanelTargetKind
.Quit], footer.Select(target => target.Kind));
1459
private static PanelHitTarget Target(TrayPanel panel,
PanelTargetKind
kind, AppHostMenuItem host)