DragAndDrop core

This commit is contained in:
FrigaT
2026-01-18 16:33:35 +03:00
parent 9ea82af329
commit 79bdd8bc62
229 changed files with 21214 additions and 2494 deletions

View File

@@ -0,0 +1,47 @@
namespace Lattice.Serialization.Docking;
/// <summary>
/// Data Transfer Object (DTO) для сериализации состояния макета док-системы.
/// Содержит все необходимые данные для сохранения и восстановления состояния макета.
/// </summary>
/// <remarks>
/// Этот DTO является независимым от формата сериализации (JSON, XML, Binary) и используется
/// как промежуточное представление между объектной моделью и сериализованными данными.
/// </remarks>
public class LayoutDto
{
/// <summary>
/// Версия формата DTO для контроля совместимости.
/// </summary>
public string Version { get; set; } = "1.0";
/// <summary>
/// Дата и время создания DTO в UTC.
/// </summary>
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
/// <summary>
/// Идентификатор приложения, создавшего DTO.
/// </summary>
public string? ApplicationId { get; set; }
/// <summary>
/// Корневой элемент дерева компоновки.
/// </summary>
public ElementDto? Root { get; set; }
/// <summary>
/// Список плавающих окон.
/// </summary>
public List<WindowDto> FloatingWindows { get; set; } = new();
/// <summary>
/// Список автоскрываемых панелей.
/// </summary>
public List<AutoHidePanelDto> AutoHidePanels { get; set; } = new();
/// <summary>
/// Дополнительные метаданные, специфичные для приложения.
/// </summary>
public Dictionary<string, string> Metadata { get; set; } = new();
}