namespace Lattice.UI.Docking.Abstractions; /// /// Предоставляет абстракцию для платформенно-зависимых UI-операций. /// Инкапсулирует вызовы к системным диалогам, управление окнами и /// синхронизацию с UI-потоком. /// /// /// Этот интерфейс позволяет отделить бизнес-логику док-системы от конкретной /// UI-платформы (WinUI, WPF, Avalonia и т.д.), обеспечивая возможность /// кроссплатформенной разработки. /// public interface IDockUIService { /// /// Создает главное окно приложения для размещения док-хоста. /// /// /// Экземпляр , который будет содержаться в окне. /// /// /// Платформенно-зависимый объект окна, который можно отобразить. /// /// /// Выбрасывается, если равен null. /// /// /// Реализация должна создавать окно с соответствующими стилями и поведением /// для целевой платформы, настроенное для работы с док-системой. /// object CreateMainWindow(IDockHost host); /// /// Отображает модальное диалоговое окно с указанным содержимым. /// /// Заголовок диалогового окна. /// Содержимое диалогового окна. /// /// Nullable boolean значение, указывающее результат диалога: /// true - пользователь подтвердил действие, /// false - пользователь отменил действие, /// null - диалог был закрыт без выбора. /// /// /// Выбрасывается, если или равны null. /// /// /// Реализация должна блокировать взаимодействие с родительским окном /// до закрытия диалога. /// bool? ShowDialog(string title, object content); /// /// Отображает информационное сообщение с кнопкой OK. /// /// Текст сообщения. /// Заголовок окна сообщения. /// /// Выбрасывается, если или равны null. /// /// /// Реализация должна использовать стандартные диалоги платформы /// или создавать кастомные окна сообщений. /// void ShowMessage(string message, string caption); /// /// Отображает диалог подтверждения с кнопками Yes/No. /// /// Текст вопроса. /// Заголовок окна подтверждения. /// /// true, если пользователь выбрал "Yes"; false, если пользователь выбрал "No". /// /// /// Выбрасывается, если или равны null. /// /// /// Используется для получения подтверждения от пользователя перед выполнением /// критических операций (закрытие вкладок, сброс настроек и т.д.). /// bool Confirm(string message, string caption); /// /// Отображает диалог ввода текста. /// /// Текст подсказки для пользователя. /// Значение по умолчанию для поля ввода. /// /// Введенный пользователем текст или null, если диалог был отменен. /// /// /// Выбрасывается, если равен null. /// /// /// Реализация должна предоставлять однострочное поле ввода текста /// с возможностью отмены операции. /// string? Prompt(string prompt, string? defaultValue = null); /// /// Выполняет указанное действие в UI-потоке. /// /// Действие для выполнения. /// /// Выбрасывается, если равен null. /// /// /// Этот метод гарантирует, что действие будет выполнено в потоке, /// связанном с пользовательским интерфейсом, что необходимо для /// безопасного обновления UI-элементов. /// void InvokeOnUIThread(Action action); }