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.
///
void InvokeOnUIThread(Action action);
}