using System; using System.Collections.Generic; using System.Linq; using Avalonia; using Avalonia.Automation; using Avalonia.Controls; using Avalonia.Controls.ApplicationLifetimes; using Avalonia.Input; using Avalonia.Interactivity; using Avalonia.Markup.Xaml; using Avalonia.VisualTree; using Microsoft.CodeAnalysis; namespace IntegrationTestApp { public class MainWindow : Window { public MainWindow() { InitializeComponent(); InitializeViewMenu(); InitializeGesturesTab(); this.AttachDevTools(); AddHandler(Button.ClickEvent, OnButtonClick); ListBoxItems = Enumerable.Range(0, 100).Select(x => "Item " + x).ToList(); DataContext = this; } public List ListBoxItems { get; } private void InitializeComponent() { AvaloniaXamlLoader.Load(this); } private void InitializeViewMenu() { var mainTabs = this.Get("MainTabs"); var viewMenu = (NativeMenuItem)NativeMenu.GetMenu(this).Items[1]; if (mainTabs.Items is not null) { foreach (TabItem tabItem in mainTabs.Items) { var menuItem = new NativeMenuItem { Header = (string)tabItem.Header!, IsChecked = tabItem.IsSelected, ToggleType = NativeMenuItemToggleType.Radio, }; menuItem.Click += (s, e) => tabItem.IsSelected = true; viewMenu?.Menu?.Items.Add(menuItem); } } } private void ShowWindow() { var sizeTextBox = this.GetControl("ShowWindowSize"); var modeComboBox = this.GetControl("ShowWindowMode"); var locationComboBox = this.GetControl("ShowWindowLocation"); var stateComboBox = this.GetControl("ShowWindowState"); var size = !string.IsNullOrWhiteSpace(sizeTextBox.Text) ? Size.Parse(sizeTextBox.Text) : (Size?)null; var owner = (Window)this.GetVisualRoot()!; var window = new ShowWindowTest { WindowStartupLocation = (WindowStartupLocation)locationComboBox.SelectedIndex, }; if (Application.Current?.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime lifetime) { // Make sure the windows have unique names and AutomationIds. var existing = lifetime.Windows.OfType().Count(); if (existing > 0) { AutomationProperties.SetAutomationId(window, window.Name + (existing + 1)); window.Title += $" {existing + 1}"; } } if (size.HasValue) { window.Width = size.Value.Width; window.Height = size.Value.Height; } sizeTextBox.Text = string.Empty; window.WindowState = (WindowState)stateComboBox.SelectedIndex; switch (modeComboBox.SelectedIndex) { case 0: window.Show(); break; case 1: window.Show(owner); break; case 2: window.ShowDialog(owner); break; } } private void SendToBack() { var lifetime = (ClassicDesktopStyleApplicationLifetime)Application.Current!.ApplicationLifetime!; foreach (var window in lifetime.Windows) { window.Activate(); } } private void RestoreAll() { var lifetime = (ClassicDesktopStyleApplicationLifetime)Application.Current!.ApplicationLifetime!; foreach (var window in lifetime.Windows) { window.Show(); if (window.WindowState == WindowState.Minimized) window.WindowState = WindowState.Normal; } } private void InitializeGesturesTab() { var gestureBorder = this.GetControl("GestureBorder"); var gestureBorder2 = this.GetControl("GestureBorder2"); var lastGesture = this.GetControl("LastGesture"); var resetGestures = this.GetControl